上传框架笔记总结

0x00 上传检测流程概述

链接:http://www.owasp.org.cn/OWASP_Training/Upload_Attack_Framework.pdf
通常一个文件以 HTTP 协议进行上传时,将以 POST 请求发送至 web 服务器
web 服务器接收到请求后并同意后,用户与 web 服务器将建立连接,并传输 data
A 客户端 javascript 检测 (通常为检测文件扩展名)
B 服务端 MIME 类型检测 (检测 Content-Type 内容)
C 服务端目录路径检测 (检测跟 path 参数相关的内容)
D 服务端文件扩展名检测 (检测跟文件 extension 相关的内容)
E 服务端文件内容检测 (检测内容是否合法或含有恶意代码)

0x01 客户端检测绕过(javascript)

1.插件禁用javascript
2.抓包修改

0x02 服务器检测绕过(MIME类型)

抓包修改:Content-Type字段

0x03 服务器检测绕过(目录路径)

00截断攻击
php<5.3.4

0x04 服务器检测绕过(文件扩展名检测)

1.黑名单检测
a.文件名大小写绕过
b.名单列表绕过
c.特殊文件名绕过
d.0x00截断绕过
e…htaccess文件攻击
f.解析调用/漏洞绕过
2.白名单检测
1.0x00截断
2.解析漏洞/漏洞绕过
3…htaccess文件攻击
通过一个.htaccess 文件调用 php 的解析器去解析一个文件名中只要包含"haha"这个字符串的
任意文件,所以无论文件名是什么样子,只要包含"haha"这个字符串,都可以被以 php 的方
式来解析,是不是相当邪恶,一个自定义的.htaccess 文件就可以以各种各样的方式去绕过很
多上传验证机制
基本上可以秒杀各种市面上的上传验证检测 ? (内容检测除外)

0x05 服务器检测绕过(文件内容检测)

1.文件幻数检测
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
在后面加上自己的一句话木马
2.文件相关信息检测
图像文件相关信息检测常用的就是 getimagesize()函数
只需要把文件头部分伪造好就 ok 了,就是在幻数的基础上还加了一些文件信息
有点像下面的结构
GIF89a
(…some binary data for image…)

<?php phpinfo(); ?>

(… skipping the rest of binary data …)
3.文件加载检测
这个是最变态的检测了,一般是调用 API 或函数去进行文件加载测试
对渲染/加载测试的攻击方式是代码注入绕过
对二次渲染的攻击方式是攻击文件加载器自身

对渲染/加载测试的攻击方式是代码注入绕过
可以用图像处理软件对一张图片进行代码注入
用 winhex 看数据可以分析出这类工具的原理是
在不破坏文件本身的渲染情况下找一个空白区进行填充代码,一般会是图片的注释区

碰到变态的二次渲染

0x06 解析攻击

1.直接解析
能以 asp,php 之类的扩展名存储在服务器上
2.本地文件包含解析
主要是 php 的本地文件包含 (远程文件包含不属于上传攻击绕过范畴)
3…htaccess解析
4.web应用程序解析以及其原理
(1)apache
解析 - test.php.任意不属于黑名单且也不属于 Apache 解析白名单的名称
描述 - 一个文件名为 x1.x2.x3 的文件,Apache 会从 x3 的位置往 x1 的位置开始尝试解析
如果 x3 不属于 Apache 能解析的扩展名,那么 Apache 会尝试去解析 x2 的位置,
这样一直往前尝试,直到遇到一个能解析的扩展名为止
测试 - 测试了下面这些集成环境,都以它们的最新版本来测试,应该能覆盖所有低版本
WampServer2.0 All Version (WampServer2.0i / Apache 2.2.11) [Success]
WampServer2.1 All Version (WampServer2.1e-x32 / Apache 2.2.17) [Success]
Wamp5 All Version (Wamp5_1.7.4 / Apache 2.2.6) [Success]
AppServ 2.4 All Version (AppServ - 2.4.9 / Apache 2.0.59) [Success]
AppServ 2.5 All Version (AppServ - 2.5.10 / Apache 2.2.8) [Success]
AppServ 2.6 All Version (AppServ - 2.6.0 / Apache 2.2.8) [Success]
(2)IIS
解析 - test.asp/任意文件名 | test.asp;任意文件名 | 任意文件名/任意文件名.php
描述 - IIS6.0 在解析 asp 格式的时候有两个解析漏洞,一个是如果目录名包含".asp"字符串,
那么这个目录下所有的文件都会按照 asp 去解析,另一个是只要文件名中含有".asp;"
会优先按 asp 来解析
IIS7.0/7.5 是对 php 解析时有一个类似于 Nginx 的解析漏洞,对任意文件名只要在 URL
后面追加上字符串"/任意文件名.php"就会按照 php 的方式去解析(IIS6.0 没测试)
测试 - 测试了下面这些集成环境,都以它们的最新版本来测试,应该能覆盖所有低版本
IIS6.0 (Win2003 SP2 + IIS6.0) [Success]
IIS7.0 (Win2008 R1 + IIS7.0) [Success]
IIS7.5 (Win2008 R2 + IIS7.5) [Success]
这里要注意一点,对于任意文件名/任意文件名.php 这
个漏洞其实是出现自 php-cgi 的漏洞,所以其实跟 IIS 自身是无关的.
(3)nginx
解析 - 任意文件名/任意文件名.php | 任意文件名%00.php
描述 - 目前 Nginx 主要有这两种漏洞,一个是对任意文件名,在后面添加/任意文件名.php
的解析漏洞,比如原本文件名是 test.jpg,可以添加为 test.jpg/x.php 进行解析攻击。
还有一种是对低版本的 Nginx 可以在任意文件名后面添加%00.php 进行解析攻击。
测试 - 测试了下面这些环境
nginx 0.5.* [Success]
nginx 0.6.* [Success]
nginx 0.7 <= 0.7.65 [Success]
nginx 0.8 <= 0.8.37 [Success]
,对于任意文件名/任意文件名.php 这个漏洞其实是出现自 php-cgi 的漏洞,
所以其实跟 nginx 自身是无关的.
(4)php-cgi 的默认配置漏洞

0x07 上传攻击框架

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值