文件上传漏洞利用总结

来源:互联网 发布:拍拍贷 网络小贷拍照 编辑:程序博客网 时间:2024/05/16 12:21

这几天一直在看文件上传漏洞,很多大牛总结了很多姿势,学习一下。
(1)一般上传检测流程

^_^ 客户端javascript校验(一般只校验文件的扩展名)
绕过方法:一般都是在还没有点击上传按钮时候就弹出对话框,可以利用Burpsuit代理抓包,修改文件扩展名。
也可以用firebug之类的审查元素工具,禁掉判断扩展名的javascript脚本。

^_^ 服务端校验
文件头content-type字段校验(image/gif)
文件内容头校验(GIF89a)
绕过方法:Burp抓包修改相应的字段
**JPG : FF D8 FF E0 00 10 4A 46 49 46
GIF : 47 49 46 38 39 61 (GIF89a)
PNG: 89 50 4E 47**
绕过方法:
在文件幻数后面加上自己的一句话木马就行了。

文件相关信息检测:
一般就是检查图片文件的大小,图片文件的尺寸之类的信息。
绕过方法:
伪造好文件幻数,在后面添加一句话木马之后,再添加一些其他的内容,增大文件的大小。

目录路径检测(检测跟Path参数相关的内容)

没明白&_&

文件扩展名检测 (检测跟文件 extension 相关的内容)

*白名单检测
仅允许指定的文件类型上传,比如仅与需上传jpg | gif | doc等类型的文件,其他全部禁止
绕过方法:
文件名大小写绕过
用像 AsP,pHp 之类的文件名绕过黑名单检测
名单列表绕过
用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类
特殊文件名绕过:
比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式 在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会 被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性
0x00截断
文件名后缀就一个%00字节,可以截断某些函数对文件名的判断。在许多语言函数中处理函数中,处理字符串中
在扩展名检测这大部分都是 asp 的程序有这种漏洞,给个简单的伪代码
Name = getname(http requests)//假如这一步获取到的文件名是dama.asp .jpg
Type = gettype(name)//而在该函数中,是从后往前扫描文件扩展名,所以判断为jpg文件
If(type == jpg)
SaveFileToPath(UploadPath.name , name)//但在这里却是以0x00作为文件名截断,最后以dama.asp存入路径里.

^_^ WAF设备校验(根据不同的WAF产品而定)

配合上传漏洞,一般都需要解析漏洞

IIS 6.0 解析漏洞:
目录解析:在网站中建立名称为.asp、.asa格式的文件夹时。其目录下的任意文件都会被当做asp执行。
文件解析:当文件名为*.asp;1.jpg 时,也会被当做asp执行。这时因为分号后面的不被解析。
Apache 解析漏洞:
Apache在解析文件时,是从右到左,如果遇到不认识的扩展名,就会继续向左判断。例如1.php.rar,Apache回将其当做php解析。
IIS 7.0/IIS 7.5/ Nginx <0.8.3畸形解析漏洞:当访问http://xxx.xom/1.jpg/1.php时,此时1.php不存在,会将1.jpg当做php来解析。这是因为在php配置中cgi.fi: x_pathinfo这个选项开启时,当访问http://xxx.xom/1.jpg/1.php,1.php不存在,所有php会向前递归解析,于是造成解析漏洞。

其他技巧

服务器配置不当
WebDAV是一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法。使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。当WebDAV开启PUT,MOVE,COPY,DELETE方法时,攻击者就可以向服务器上传危险脚本文件。
此时可以使用OPTIONS探测服务器支持的http方法,如果支持PUT,就进行上传脚本文件,在通过MOVE或COPY方法改名。当开启DELETE时还可以删除文件。
参考:http://wiki.wooyun.org/server:httpput

原创粉丝点击