21、渗透测试笔记_文件上传&&解析漏洞_20191118
1、文件解析漏洞
- 解析漏洞主要说的是一些被IIS、Apache、nginx在某种情况下解释成脚本文件格式的漏洞
1.1、IIS 5.x/6.0解析漏洞(两种解析)
-
1)目录解析 /xx.asp/xx.jpg
在网站下建立文件夹的名字为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行;
-
2)文件解析 a.asp;.jpg
在IIS6.0下,分号后面的不被解析,也就是说a.asp;.jpg会被服务器看成是a.asp,还有默认的可执行文件除了asp还有三种:a.asa、a.cer、a.cdx
1.2、Apache解析漏洞
- Apache是从右到左开始判断解析,如果为不可识别解析,就在往左判断,如a.php.owf.rar “.owf”和“.rar”这两种后缀是apache不可识别解析,apache就会把a.php.owf.rar解析为php.
- 如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个a.php.rara.jpg.png…(把你知道的后缀都写上…)去测试后缀是否是合法后缀,任意不识别的后缀,逐级向上识别
1.3、Nginx<8.03空字节代码执行漏洞
- 影响版本:0.5.,0.6.,0.7<=0.7.65,0.8<=0.8.37
- Nginx在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码
1.4、htaccess文件解析
-
如果在Apache中的.htaccess可被执行,且可被上传。那可以尝试在.htaccess中写入:
<FilesMatch "shell.jpg">SetHandler application/x-httpd-php </FilesMatch>
-
在上传shell.jpg的木马,这样shell.jpg就可以解析为php文件
2、检测绕过
2.1、客户端检测绕过(javascript 检测)
- 首先判断JS本地验证
- 通常可以根据它的验证警告弹框的速度可以判断,如果你电脑运行较快,那么我们可以用burp抓包,在点击提交时候burp没有抓到包,就已经弹框那么说明这个就是本地js验证。
-
绕过方法:
- 使用burp抓包改名
- 使用firebug直接删除掉本地验证的js代码
- 添加js验证的白名单如将php的格式添加进去
2.2、服务端检测绕过(MEME类型检测)
-
MIME的作用:
使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件
-
web服务器使用MIME来说明发送数据的种类,web客户端使用MIME来说明希望收到的数据种类
-
tomcat的安装目录\conf\web.xml中就定义了大量MIME类型;
-
绕过方法:
直接使用burp抓包,得到post上传数据后,将Content-Type:text/plain改成Content-Type:image/gif
2.3、服务端目录绕过
- 当/a/1.php的目录a没有权限时,可以使用…/.php的形式,(…/是到上层目录),这样文件即可上传到和a同级的目录
2.4、服务器检测绕过(文件扩展名检测)
-
黑名单检测
黑名单的安全性比白名单的安全性低很多,攻击手法自然也比白名单多一般有个专门的blacklist文件,里面会包含常见的危险脚本文件例如fckeditor2.4.3或之前版本的黑名单
-
白名单检测
白名单相对来说比黑名单安全一些,但也不是绝对安全
2.5、绕过黑名单
-
文件名大小写绕过
- 用像Asp、pHp之类的文件名绕过黑名单检测
-
名单列表绕过
- 用黑名单里没有的名单进行攻击,比如黑名单里没有asa或cer之类
-
特殊文件名绕过
- 比如发送的http包里把文件名改成test.asp.或test.asp_(下划线为空格),这种命名方式在windows系统里是不被允许的,所以需要在burp之类里进行修改,然后绕过验证后,会被windows系统自动去掉后面的点和空格,但要注意Uinx/Linux系统没有这个特性
-
0x00截断绕过
- 扩展名检测中,目前我只遇到过asp的程序有这种漏洞,给个简单代码
- name=getname(http request)//假如这时候获取到的文件名是test.asp.jpg(asp后面为0x00)
- type=gettype(name)//而在gettype()函数里处理方式是从后往前扫描扩展名,所以判断为jpg
- if(type==jpg)
2.6、绕过白名单
-
0x00截断绕过
- 用test.asp%00.jpg的方式进行截断,属于白名单文件,再利用服务端代码的检测逻辑,漏洞进行攻击,目前我只遇到过asp的程序有这种漏洞
-
解析调用/漏洞绕过
- 这类漏洞直接配合上传一个代码注入过的白名单文件即可,再利用解析漏洞/调用
-
htaccess文件攻击
-
通过一个.htaccess文件调用php的解析器去解析一个文件名中只要包含"haha"这个字符串的任意文件,所以是无论文件名是什么样子,只要包含"haha"这个字符串,都可以被以php的方式解析;一个自定义的.htaccess文件就可以各种各样的方式去绕过很多上传验证机制
-
建立一个.htaccess文件,里面内容如下:
-
<FilesMatch "haha"> SetHandler application/x-httpd-php </FilesMatch>
-
同目录有个我们上传一个只有文件名并包含字符串的“haha”,但是却无任何扩展名的文件,里面的内容是php一句话木马
-
2.7、绕过检测文件头
-
主要是检测文件内容开始处的文件幻数,比如图片类型的文件幻数如下
-
要绕过jpg文件幻数检测就要在文件开头写上以下的值
Value=FF D8 FF E0 00 10 4A 46 49 46
-
要绕过gif文件幻数检测就要在文件开头写上以下的值
Value=47 49 46 38 39 61
-
要绕过png文件幻数检测就要在文件头写上以下的值
Value=89 50 4E 47
-
然后再文件幻数后面加上自己的一句话木马代码即可
3、IIS解析漏洞目录解析
- 在网站根目录下创建aaa.asp,并将图片马复制到文件夹
-
使用浏览器访问此图片,发现已经解析为asp文件
-
打开菜刀,输入密码1进行连接
-
连接成功如下
4、IIS解析漏洞文件解析(含**可上传文件)
-
打开目标网站,注册个账号进行登录
-
登录后找到文件上传位置
-
同时将浏览器配置代理,打开burpsuite进行抓包
-
点击上传文件,选择要上传的文件,点击上传,看到burp抓到的数据包
-
由于管理员对上传文件类型进行了限制,故可以使用burpsuite**,查看可上传的文件类型,右键将数据包发给Intruder
-
点击Intruder–>Positions–>点击clear$–>选中cmd.asp中的asp–>点击add
-
点击Payloads–>选择load …–>选择上传的词典(词典中为常用的webshell后缀名)
-
将最下方的Payload Encoding的勾去掉,点击右上角的Start attack
-
点击length,按照长度排序,发现cer;.txt和asp.txt长度不同可以进行上传
-
将木马名改为cmd.cer;.txt和cmd.asp.txt进行上传(**的时候木马已经上传,这里可以进行重新上传进行覆盖)
- 点击文件进行浏览
-
打开菜刀进行连接(虽然cmd.asp.txt已经上传,但是无法进行解析,故使用cmd.cer;.txt)
- 成功连接
上一篇: PHP无特征webshell
下一篇: 纯CSS3制作超级漂亮又实用的加载小图标