本文记录文件上传学习过程,教程为 《Upload Attack Framework V1.0》
文件上传检测
- 客户端javascript 检测(通常为检测文件扩展名)
- 服务端MIME 类型检测(检测Content-Type 内容)
- 服务端目录路径检测(检测跟path 参数相关的内容)、
- 服务端文件扩展名检测(检测跟文件extension 相关的内容)
- 服务端文件内容检测(检测内容是否合法或含有恶意代码)
服务器检测绕过(目录路径检测)
-
简介
目录路径检测,一般就检测路径是否合法,但稍微特殊一点的都没有防御。
检测内容:
实例,比较新的fckeditor php <= 2.6.4 任意文件上传漏洞:
地址: http://www.wooyun.org/bugs/wooyun-2010-01684
漏洞成因是因为对目录路径的检测不够严谨而导致可以用0x00 截断进行攻击
-
绕过
- 主要是利用 %00 截断攻击
当 POST 下面的 URL 的时候
/fckeditor264/filemanager/connectors/php/connector.php?Command=FileUpload&Type=Image&CurrentFolder=fuck.php%00file.jpg HTTP/1.0
服务器端的 php 代码未进行检测就被直接写入文件系统了
此时的 content-type 还是 image/jpeg,但是文件名已经被截断了,最终上传的文件是 fuck.php
- 修改上传目录(IIS 6.0)
如果 html 代码中有一个隐藏标签 ,这是文件上传时默认的文件夹,而我们对这个参数是可控的。
使用 burpsuite 将 value 值改为 pentest.php ,并提交上传一句话木马文件,如果服务器不存在此目录,则会创建此目录,然后将一句话木马写入该目录,如果是 IIS 6.0 ,则会解析网页木马