上传漏洞基础
0x00 解析漏洞
IIS,Apache,PHP CGI均存在解析漏洞
- IIS解析漏洞
- 当建立.asa、.asp格式的文件夹时,其目录下的任意文件都将被IIS当作asp文件进行解析,如http://127.0.0.1/test.aps/shell.txt
- 当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行,如http://127.0.0.1/test.aps;1.jpg
- Apache解析漏洞(版本1.,2.)
Apache解析原则,当遇到不认识的扩展名时,将会从后向前解析,知道遇到有认识的扩展名为止,如果都不认识,则会暴露源码。Apache可识别扩展名请查看Apache安装目录下“/conf/mime.types”。
如shell.php.rar.asuri,它便会解析为php文件. PHP CGI解析漏洞/Nginx解析漏洞
前提:php配置文件中 cgi.fi: x_pathinfo为开启状态IIS7.0,IIS7.5,Lighttpd也有此漏洞
当放问目标网站文件时,在url后面加上/1.php,便能将此文件当作php脚本执行.
如:1.jpg是上传的shell,url为http://127.0.0.1/1.jpg,当使用http://127.0.0.1/1.jpg/1.php便能执行shell
0x01上传绕过
- 客户端检测绕过
这个较为简单,前端脚本公开,可以对方代码灵活调整,可以通过burp修改上传数据绕过或使用firebug修改前段js验证 - 服务器端绕过
- MIME类型验证
通过burp修改MIME类型可绕过 - 黑/白名单过滤
- 黑名单
- 可以寻找”漏网之鱼”,如.cer
- 后缀掺杂大小写试图绕过,如.pHp
- Windows服务器会自动删掉扩展名后的小数点或空格
- 白名单
配合解析漏洞上传shell.php;1.jpg可尝试绕过(仅适用于IIS6.0)
- 黑名单
- 目录验证
有时服务器会通过上传的信息,来为上传的文件选择文件夹,而这个文件夹名通常是前端控制,因此可修改文件夹名(结合解析漏洞)绕过。如文件夹名test.asp - 截断上传攻击
00截断,上传文件1.php%00jpg,服务器在存储文件时会将00后的扩展名自动省去,这样就达到绕过效果.
- MIME类型验证