检测流程概述:
1.客户端检测后缀
思路:由于是客户端检测 1.通过插件禁检测机制 2使用burpsuite修改上传后缀
2.服务端MIME类型检测(Content-Type)
思路:修改文件名,修改Content-Type
资料:查询连接:http://tool.oschina.net/commons
3.服务端目录路径检测(服务端检测后缀)
思路:利用处理特性,例如使用0x00截断 eg:fuck.php .jpeg (中间有空格即0x00)
4.服务端文件扩展名检测
黑名单检测
(1)文件名大小写绕过
(2)名单列表绕过(asa,cer)
资料:突破asa,cer,cdx,php,aspx http://www.i0day.com/175.html
(3)特殊文件名绕过(test.asp. 或test.asp_ window内. _默认为空格,linux无此特性)
(4)0x00截断绕过(test.asp(0x00) .jpg )
(5).htaccess文件攻击(上传自定义htaccess)
(1)资料:.htaccess文件生成器: http://htaccess.uuz.cc/
白名单检测
5.服务端文件内容检测
文件相关信息检测:
文件加载检测:
1.渲染/加载测试 代码注入绕过
2.二次渲染 溢出方式攻击文件加载器
6.解析攻击
直接解析 :asp.php结尾直接存储在服务器
配合解析 :先上传之后再想办法执行
web应用程序解析漏洞
※apache 解析漏洞
解析流程 文件名为s1.s2.s3 首先解析s3,如果无法解析再解析s2
所以可以构建为 up.php.fuck (此方法适用于2.2.8之前的版本)
※IIS 解析漏洞
6.0:解析流程 如果目录名中含有.asp字符串,那么就按照asp去解析,如果文件名含有".asp;" 注意有个 ; 那么就会优先按照asp解析
7.0/7.5:在url后面追加字符串“/任意文件名.php”就会按照php方式解析
※Nginx
1 test.jpg/x.php
2 %00.php
7上传攻击框架
DVWA 实战检测:
low
思路:由于无上传文件格式限制,传递一个php文件,
<?php @eval($_GET['apple']); ?> @eval:将字符串内容变成代码执行
发现上传成功(注:返回了上传路径),即在服务器已有(后门),使用中国菜刀,进行关键字相连发现获得webshell
过程包含两次交互:1.上传文件,服务器返回成功上传
2.中国菜刀发起POST实现激活连接,服务器运行指令触发漏洞
中国菜刀原理:根据php内容,GET为一种请求方式,可控部分只有Apple,菜刀通过apple变量来执行不同命令
资料:http://www.daixiaorui.com/read/17.html
medium(出现了上传仅为图片格式的限制,因为真实环境大小不符合会出提示,所以此处暂不考虑大小限制)
1.本能反应是改后缀.php为.png 但是测试之后发现虽然可以上传,但是仍旧以png格式保存在服务器,触发后只会返回png信息,即php代码,但是已经不会执行,所以此方法还有待深入研究
2.上传.png格式,之后使用burpsuite,强制修改为.php 上传完毕后执行原理及方法与low一致
参考教程后发现老一点的php版本还有第三种方式
3.大致思路为使用截断进行对过滤机制的绕过(截断 0x00(20)后面不会被识别),此处不做测试
4.使用copy +语句 eg:copy 1.jpg/b + 2.php/a 2.jpg
high
由于之前构造的.jpg文件无法上传,使用burpsuite判断出应该是在服务器端对内容进行了判断
查看源代码:出现判定函数为
getimagesize(string filename) 函数判断是否有文件头部信息,这样就很好做出绕过,只要使用copy 函数+用法 图片使用 /B 表示一个二进位文件 /A 表示一个 ASCII 文本文件。
再burpsuite修改文件后缀完成上传
常见图片格式校验机制:
1.后缀名
2.文件头文件尾
总结:
upload注入方式无非就是在服务端能把我们想要执行的代码以页面格式保存(.php),目的就是传参后可以调用运行,所以只要能达到此效果,都可以成为upload漏洞。
以上几种漏洞表现形式还比较单一,有新发现将做补充!
名词解释:
(1)通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。