解析漏洞
一些特殊文件被IIS
Apache
Nginx
在某种情况下解析成脚本文件格式的漏洞
IIS 6.0解析漏洞
-
目录解析漏洞
/xx.asp/xx.jpg
在网站下创建文件夹名字为
.asp
.asa
的文件夹,其目录内的任何扩展名的文件都被iis
当做asp
文件来解析并执行。因此只要攻击者可以通过该漏洞直接上传图片马,并且可以不需要改后缀名 -
文件解析
xx.asp;.jpg
在iis6.0下,分号后面的不被解析,所以
xx.asp;.jpg
被解析为asp
脚本得以执行。 -
文件类型解析
.asa
.cer
.cdx
iis 6.0 默认的可执行文件除了
asp
还包含这三种asa
、cer
、cdx
IIS 7.0/IIS 7.5/Nginx <=0.8.37
在默认Fast-CGI
开启状况下,在一个文件路径(/xx.jpg)
后面加上/xx.[PHP]
会将 /xx.jpg
/xx.php
解析为 php
文件。
常用利用方法: 将一张图和一个写入后门代码的文本文件合并 将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾
e.g.
copy xx.jpg/b + yy.txt/a xy.jpg
/b
即二进制[binary]
模式
/a
即ascii
模式,生成 xx.jpg
正常图片文件
yy.txt
内容 ');?>
意思为写入一个内容为 名称为
shell.php
的文件
找个地方上传xy.jpg
,然后找到 xy.jpg
的地址,在地址后加上 /xx.php
即可执行恶意文本。
此时在图片目录下生成一句话木马 shell.php
密码 cmd
Nginx <=0.8.37 解析漏洞
在Fast-CGI
关闭的情况下,Nginx <=0.8.37
依然存在解析漏洞
在一个文件路径(/xx.jpg)
后面加上%00.php
会将 /xx.jpg%00.php
解析为 php
文件。
Apache 解析漏洞
后缀解析:test.php.x1.x2.x3
Apache将从右至左开始判断后缀,若x3
非可识别后缀,再判断x2
,直到找到可识别后缀为止,然后将该可识别后缀进解析
test.php.x1.x2.x3
则会被解析为php
php|php3|phtml
多可被Apache
解析
Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断.
例 cracer.php.owf.rar
中 .owf
和.rar
这两种后缀是apache不可识别解析,apache就会把cracer.php.owf.rar
解析成php
如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个cracer.php.rara.jpg.png…
(把知道的常见后缀都写上…)去测试是否是合法后缀。
如果Apache中.htaccess
可被执行并可被上传,那么可以尝试在.htaccess
中写入
然后再上传shell.jpg
的木马,这样shell.jpg
就可被解析为PHP文件了。
.htaccess文件是Apache服务器中的一个配置文件,负责相关目录下的网页配置。通过htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能IIS平台上不存在该文件,该文件默认开启,启用和关闭在httpd.conf文件中配置
PHP CGI解析漏洞
当php的配置文件中的选项cgi.fix_pathinfo = 1开启时,当访问http://www.xxx.com/x.txt/x.php
时,若x.php
不存在,则PHP会递归向前解析,将x.txt
当作php
脚本来解析
IIS中:任意文件名/任意文件名.php
就会被解析为php
Nginx中:任意文件名/任意文件名.php
就会被解析为php
操作系统解析
由于windows会将文件的后缀中的空格以及点进行过滤,如果遇到是黑名单校验的,如限制不允许上传PHP文件,而系统又是windows系统,那么我们可以上传xx.php
,或者xx.php.
通过这种方式就可以绕过黑名单检验的文件上传
文件头欺骗漏洞
在一句话木马前面加入GIF89a
,然后将木马保存为图片格式,可以欺骗简单的waf
。
filepath漏洞
filepath漏洞主要用来突破服务器自动命名规则,主要有以下两种利用方式:
1. 改变文件上传后路径(filepath)
,可以结合目录解析漏洞,路径/x.asp/
2. 直接改变文件名称(都是在filepath
下进行修改),路径/x.asp;
00截断
00截断的两种利用方式:
1. 更改filename,xx.php .jpg
在burpsuit中将空格对应的 hex 2e
改为00
2. 更改filename,xx.php%00.jpg
在burpsuit中将%00
进行右键转换-url-urldecoder
filetype漏洞
filetype漏洞主要是针对content-type
字段,主要有两种利用方式:
1. 先上传一个图片,然后将content-type:images/jpeg
改为content-type:text/asp
,然后对filename进行00截断
,将图片内容替换为一句话木马。
2. 直接使用burp抓包,得到post
上传数据后,将Content-Type: text/plain
改成 Content-Type: image/gif
。
iconv函数限制上传
如果发现不论上传什么文件,上传后的文件都会自动添加一个.jpg
的后缀,那么可以怀疑是否是使用iconv
这个函数进行了上传的限制,此时可以使用80-EF截断
,也就是修改 HEX 为80
到EF
中的某一个来进行截断,如果真是使用这个函数的话,那么将上传任意文件成功,如上传一个xx.php
,然后截断抓包将后面的空格对应的十六进制改为80
到EF
中的任意一个
双文件上传
再一个文件上传的地方,右键审查元素,首先修改action
为完整路径,然后复制粘贴上传浏览文件,这样就会出现两个上传框,第一个上传正常文件,第二个选择一句话木马,然后提交。
表单提交按钮
我们有时扫描发现上传路径,可是只有一个浏览文件,却没有提交按钮,此时我们就需要写入提交按钮。
写入表单:
F12审查元素,在选择文件表单下面添加提交按钮代码。