文件上传
思路:
先探查?标是什么类型的web服务
插件:eg:wappalyzer
网站:eg:云悉:http://www.yunsee.cn/info.html
上传点:
管理后台页?
?户后台页?
前台页?
?录扫描 ==>扫描到后台不需要登陆就能访问的上传页?
1.上传?张正常图?,验证上传功能是否正常
2.最好直接上传?张图?马,可绕过content-type,?件头,getimagesize(),php_exif检查
3.针对?次渲染,寻找图?数据中不会被转换的部分,将代码插?其中
前端绕过
源代码进行修改
禁用js
burp抓包
文件内容检查绕过
content-type检查
burp suite抓包直接修改content-type
?件头检查绕过
在?件头部添加gif89a
可能还会被改变成gif等格式,需要结合?件包含漏洞或者解析漏洞
getimagesize()检查和php_exif模块检查
绕过:在?件头部添加gif89a+图??句话
?次渲染
寻找渲染前后不变的地?,替换成?句话
?名单突破
MIME类型绕过?名单限制
burp抓包修改Content-type
id 后缀名 MIME
0 gif image/gif
1 jpg image/jpeg
2 png image/png
3 bmp image/bmp
4 psd application/octet-stream
5 ico image/x-icon
6 rar application/octet-stream
7 zip application/zip
8 7z application/octet-stream
9 exe application/octet-stream
10 avi video/avi
11 rmvb application/vnd.rn-realmedia-vbr
12 3gp application/octet-stream
13 flv application/octet-stream
14 mp3 audio/mpeg
15 wav audio/wav
16 krc application/octet-stream
17 lrc application/o
18 txt text/plain
19 doc application/msword
20 xls application/vnd.ms-excel
21 ppt application/vnd.ms-powerpoint
22 pdf application/pdf
23 chm application/octet-stream
24 mdb application/msaccess
25 sql application/octet-stream
26 con application/octet-stream
27 log text/plain
28 dat application/octet-stream
29 ini application/octet-stream
30 php application/octet-stream
31 html text/html
32 ttf application/octet-stream
33 fon application/octet-stream
34 js application/x-javascript
35 xml text/xml
36 dll application/octet-stream
37 dll application/octet-stream
00截断绕过?名单限制
条件:
php版本?于5.3.4 详情关注CVE-2006-7243
php的magic_quotes_gpc为OFF状态
!!!post不会像get对%00进?解码,所以需要在?六进制中?动修改。
1.在文件名加%00
2.在路径后加%00(通过路径拼接来实现,更优选择)
解析漏洞绕过?名单限制
双重拓展名
apache ?件名解析时,是从后?开始检查后缀,按最后?个合法后缀执?
eg:shell.php.xxx
iis解析漏洞
iis6.0:*.asp;1.jpg (;的作用)
iis7.0/7.5/Nginx<8.03 :
上传1.jpg,访问http://www.xxx.com/1.jpg/.php,此时1.JPG会被当做PHP脚本?件来解析
(php.ini?默认cgi.fix_pathinfo=1)
??写
更适用于黑名单
黑名单
可以使用脚本生成
可以用burp,但是如果直接用字典的话,动静可能太大
操作系统特性
windows操作系统对??写不敏感
Windows系统下,如果上传的?件名中test.php::$DATA会在服务器上?成?个test.php的?件,其中内容和所 上传?件内容相同,并被解析。即上传?件xxx.php::$DATA = xxx.php
Windows下?件名结尾加?.,空格,<,·>,>>>,0x81-0xff等字符,会被windows?动去除
语?特性
php: php,php5,php4,php3,php2,pHp,pHp5,pHp4,pHp3,pHp2,html,htm,phtml,pht,Html,Htm,pHtml
jsp: jsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,jSw,jSv,jSpf,jHtml
asp/aspx: asp,aspx,asa,asax,ascx,ashx,asmx,cer,aSp,aSpx,aSa,aSax,aScx,aShx,aSmx,cEr
中间件特性
!通常目的并不是黑名单
iis6.0,iis7.0/7.5,iis8.0/10.0
apache
nginx tomcat ....
- htaccess
代码不严谨
如没有递归删除:
双写绕过
对于空格,点只做了单次过滤
解析漏洞
双?件上传
应?场景
南?/良精CMS
正则默认匹配第?个filename的情况下
利?原理 服务端默认取第?个?件作为真正的上传?件,但是在检测时只检测了第?个?件。
或者只验证了第?个filename 的拓展名。
利??法
直接在审查元素中添加?个上传表单
burp抓包之后在数据包中添加
竞争上传
利?原理 代码逻辑为:先将?件上传到服务器,然后检测后缀名,
如果不符合再通过unlink删除?件,因此可以通过条件竞争 的?式在unlink之前,访问webshell。
利??法 使?burp suite不停的上传,同时?python脚本不停的访问上传的?件。