推荐使用作者给的环境:下载地址
有些漏洞对环境要求比较高
Pass-01
上传PHP后缀的文件,发现没有经过BurpSuite就弹出警告,这种情况是前端JavaScript检测造成的。
修改文件名后缀,改为gif再上传,绕过JavaScript验证,在BurpSuite里修改数据包,将文件名改为php
上传成功
除了使用BurpSuite抓包修改后缀名绕过JavaScript前端验证,还可以直接修改JavaScript代码,在白名单中添加php
或直接破坏JavaScript,使其无法进行验证。
添加白名单
破坏JavaScript
form表单
1 | <form enctype="multipart/form-data" method="post" onsubmit="return checkFile()"> |
JavaScript验证
1 | <script type="text/javascript"> |
from表单的onsubmit
调用了checkFile()
在checkFile()
里,规定了允许上传的文件类型
Pass-02
修改数据包中的Content-type
成功上传
1 | if (isset($_POST['submit'])) { |
查看代码,使用数据包中的文件类型来判断文件类型,所以可以在BP里修改Content-type来绕过判断
Pass-03
查看代码
1 | if (isset($_POST['submit'])) { |
查看代码,发现会提取上传文件后缀名,并拿去和黑名单比对,然后再随机生成文件名保存,有strtolower()
函数,所以无法大小写绕过
由于是黑名单,所以使用php3
后缀绕过检测,而且可以被解析,同样可以绕过的后缀名还有phtml
上传phpinfo.php3
查看上传路径
访问上传文件
Pass-04
1 | if (isset($_POST['submit'])) { |
查看源码,黑名单里有一堆后缀,不过没有.htaccess
,而且没有重命名上传文件
所以可以先上传.htaccess
,再上传图片马解析
1 | <FilesMatch "Pass-04.jpg"> |
上传图片马
上传地址
访问图片马
Pass-05
1 | if (isset($_POST['submit'])) { |
查看源码,发现增加了.htacess
后缀,不过这次少了strtolower()
函数,所以可以大小写绕过