本文记录文件上传学习过程,教程为 《Upload Attack Framework V1.0》
上传攻击框架
简介
之前的都是从服务端的角度在给上传情况分类
现在我们要从攻击者的角度来给上传情况分类
这是这套framework 的核心部分
知道了从攻击者的角度如何分类
就等于知道如何来综合分析一套源码
并从中知道是否有存在漏洞的可能性
绕过检测/过滤
-
轻量级检测绕过攻击
[*] 绕过javascript 对扩展名的检测
<用burp 之类的反向代理工具直接POST 数据包到服务端,绕过前端检测>
[*] 绕过服务端对http request 包MIME 类型检测
<用burp 之类的反向代理工具伪造POST 数据包到服务端,绕过MIME 检测>
-
路径/扩展名检测绕过攻击
[*] 黑名单绕过
文件名大小写 名单列表绕过 特殊文件名绕过 0x00 截断绕过 .htaccess 文件攻击 本地包含漏洞 Apache 解析漏洞 IIS 解析漏洞 Nginx 解析漏洞
[*] 白名单绕过
绕过0x00 截断绕过 本地文件包含漏洞 IIS 解析漏洞 Nginx 解析漏洞
-
文件内容检测绕过攻击
[*] 文件加载测试绕过
<对文件进行代码注入再配合任意解析调用/漏洞>
-
上传攻击框架
轻量级检测绕过攻击
[*] 绕过javascript 对扩展名的检测 (代码层漏洞) [*] 绕过服务端对http request 包MIME 类型检测 (代码层漏洞)
路径/扩展名检测绕过攻击
[*] 黑名单绕过 文件名大小写绕过 (代码层漏洞) 名单列表绕过 (代码层漏洞) 特殊文件名绕过 (代码层漏洞) 0x00 截断绕过 (代码层漏洞) .htaccess 文件攻击 (代码层漏洞) php 文件包含漏洞 (代码层漏洞) Apache 解析漏洞 (应用层漏洞) IIS 解析漏洞 (应用层漏洞) Nginx 解析漏洞 (应用层漏洞) [*] 白名单绕过 0x00 截断绕过 (代码层漏洞) php 文件包含漏洞 (代码层漏洞) IIS 解析漏洞 (应用层漏洞) Nginx 解析漏洞 (应用层漏洞)
文件内容检测绕过攻击
[*] 文件加载绕过 (代码层漏洞)
上传攻击流程图
代码层上传漏洞如下图(红色字体标记部分)
攻击要点:
要绕过轻量级检测
要绕过文件内容检测
A. 要绕过代码层对路径/扩展名检测(直接解析)
B. 找到代码层的解析调用(间接解析)
应用层上传漏洞如下图(红色字体标记部分)
攻击要点:
要绕过轻量级检测
要绕过文件内容检测
A. 找到应用层的解析漏洞(间接解析)
攻击手法与环节的对应图
上传攻击框架的核心之一
要注意下,在这里如果在路径/扩展名检测处检测未通过,流程到解析攻击时
白名单检测绕过技术里并不完全能利用所有解析攻击方式
在路径/扩展名检测绕过攻击里已经给出了具体细节
攻击手法与环节图
上传攻击分析框架
检测框架图
上传攻击框架的核心之二
大家可以像上面分析fckeditor 的方式,在分析一份源码或一个目标环境时
先把上面的上传攻击分析框架列表放好
然后去依次对比
哪些检测环节存在/不存在
哪些环节是安全/还是有漏洞
哪些环节如果被利用是代码层漏洞/还是Web 应用程序解析漏洞
对应在该项后面进行填写
最后把Vule 的部分选出来,再来分析如何进行组合,以及利用它们需要什么样的条件
通过这个分析框架进行白盒/黑盒分析并罗列出所有情况
攻击者便能更系统地分析出源码/目标环境可能存在的漏洞
整个上传攻击的核心最后被分析和总结成了上面两张重要的图
攻击手法与环节图和检测框架图
这两张图就是这篇 paper 最有价值的总结了
上传攻击的防御图
上传攻击的防御图
图中红点便是防御的重要环节
需要注意的:
- 轻量级检测必然能绕过
- 检测的重点放在文件内容检测 - 可以用检测脚本语言特征码的机制
- 路径/扩展名检测一定要用白名单 - 并且注意路径的0x00 截断攻击(把php 更新至最新版本即可,已经修补了这个漏洞了)
- 不能有本地文件包含漏洞
- 随时注意更新web 应用软件 - 避免被解析漏洞攻击