–
原理
将可执行文件上传到服务器,在服务器端解析执行,从而控制服务器
校验方法及绕过
前端(客户端)
burp抓包修改
后端(服务端)
content-type:
抓包修改
文件头检测
加文件头 GIF89a(gif图的文件头)
或制作图片马
黑名单,白名单
大小写,复写
扩展名:
1
2
3
4jsp jspx jspf
asp asa cer aspx
php php php3 php4 pht
exe exee%00截断
条件 php < 5.3.4 magic_quotes_gpc off状态
%00 截断在 GET 中被 url 解码之后是空字符。但是在 POST 中 %00 不会被 url 解码,所以只能通过 burpsuite 修改 hex 值为 00 (URL decode)进行截断。.htaccess
仅限于当前目录和子目录的配置文件
先上传htaccess后上传一句话 一直显示连接失败
破案:文件名必须是.htaccess (要欺骗系统)1
2
3
4<FilesMatch "yjh"> //即匹配文件名中包含 yjh 的文件
SetHandler application/x-httpd-php
</FilesMatch>
//也可匹配路径 类似这样/var/www/html/web/upload1
AddType application/x-httpd-php .png
配合特殊解析漏洞
- lls 6.0
iis6.0:
当建立*.asa,.asp格式的文件夹时,其目录下的任意文件都会被IIS当做asp文件解析。
5)当上传的文件为.asp;1.jpg时,IIS6.0同样以ASP脚本来执行。
Apache 1x或2x:
当apache遇见不认识的后缀名会依次从右往左解析,例如:1.php.rar。
不认识rar就向前解析,直到他认识的后缀名。
PHPCGI(Nginx)(这个不是phpCGI独有的漏洞有时候在IIS也会出现):
当上传1.jpg之后。访问1.jpg/1.php。此时的1.jpg会被当做php来解析。
防御手法
..?
- 制作图片马
copy 1.jpg/b+2.txt/a 3.jpg
GIF89a