upload-labs通关小记 Pass1-10
"upload-labs通关小记"系列相关:
01:upload-labs通关小记 Pass1-10(当前文章);
02:upload-labs通关小记 Pass11-16 含代码审计;
03:upload-labs通关小记 Pass17-20 含代码审计。
文章目录
第一关——客户端检查
上传webshell.php时,显示弹窗。
看上去像是客户端代码中alert()的弹窗,所以尝试绕过客户端验证
- 禁用浏览器的JavaScript
- 将上传的文件改为合法后缀,然后通过Burp Suite拦截请求包并将后缀名重新改回.php;
1. 禁用浏览器的JavaScript
在火狐浏览器url框内搜索about:config
找到JavaScript.enabled,将其设置为flase,回头刷新靶场网页
此时webshell.php成功上传
2. 通过Burp Suite改包
先上传合法文件。
通过Burp Suite拦截到请求。
找到我们上传的webshell.png,将其改为.php后,点Forward放行,webshell.php上传成功
第二关——MIME检查
我们正常上传一个webshell.php,与此同时我们使用Burp Suite监听请求,发现我们的webshell.php在请求包中,说明客户端没有对我们上传的文件进行过滤验证,但页面又报错,那么说明过滤验证一定是在服务端进行的。
页面提示文件类型不正确(针对MIME的白名单验证),所以尝试修改Content-Type中的MIME类型为图片类型
Forward后,发现已经webshell.php上传成功
第三关——特殊可解析后缀绕过
正常上传webshell.php后,可以直接通过Burp Suite拦截到请求,说明该关卡也是服务端验证。而且页面提示中针对性地列出了不允许上传.asp,.aspx,.php,.jsp后缀文件,猜测可能是针对后缀名的黑名单验证,所以尝试上传这四个后缀以外的特殊可解析后缀(.php1 .php2 .php3 .php4 .php5 .pht .phtml .phps等)
webshell.php上传成功
第四关——上传.htaccess
绕过
上传webshell.php,这次列出:“此文件不允许上传”
于是,尝试各种黑名单绕过方式。
然后发现:
上一题的上传特殊可解析方式绕过行不通
大小写绕过行不通
空格绕过行不通
点绕过行不通
::$DATA
绕过也行不通
但是上传.htaccess可行,文档内容如下
然后上传webshell.png后打开查看图片上传的路径
然后使用蚁剑连接,连接成功。
后续查看源码,服务端的确对上述的五种绕过方式进行了防御:
第五关——大小写绕过
可以直接大小写绕过(上传了webshell.Php),蚁剑连接成功。
第六关——
空格绕过
空格绕过,直接在Burp Suite中给filename末尾添加空格" "即可。
第七关——.
点绕过
点绕过,直接在Burp Suite中给filename末尾添加点"."即可。
第八关——::$DATA
绕过
::$DATA
绕过,直接在Burp Suite中给filename末尾添加"::$DATA
"即可。
第九关——. .
绕过
. .
绕过,直接在Burp Suite中给filename末尾添加". .
即可。
第十关——.pphphp
后缀名重写绕过
文件名后缀双写绕过,直接在Burp Suite中给filename后缀改为".pphphp"即可。