第四关 通过扩展黑名单绕过 Web shell 上传
这一关就是在上传功能点不允许上传php类型文件,那么就通过扩展文件后缀名绕过服务端的限制,从而实现上传恶意文件,获取敏感信息
提示:1、靶场包含易受攻击的图片上传功能
2、某些文件扩展名被列入黑名单,但由于此黑名单配置中的根本缺陷,可以绕过此防御。
3、要解决该实验室,请上传一个基本的 PHP Web shell,然后使用它来窃取文件 /home/carlos/secret 的内容。
具体操作:
1、正常登录,然后上传头像图片

2、上传头像成功

然后返回我的账户进行查看
以上就是一个正常上传文件的流程
3、接下来尝试上传下恶意php文件

4、显示:上传错误,该响应指示不允许上传扩展名为 .php 的文件

不允许上传php文件怎么办呢?
5、先找到用于提交文件上传的 POST /my-account/avatar 请求包
然后找到与您的 PHP 文件相关的正文部分。进行以下更改:
1、将 filename 参数的值更改为 .htaccess
2、将 Content-Type 标头的值更改为 text/plain。
3、将文件的内容(您的 PHP 有效负载)替换为以下 Apache 指令:
AddType application/x-httpd-php .l33t
这个是一条 Apache 服务器的配置指令,用于告诉服务器如何处理特定扩展名的文件。

如图:改了后缀名,.htaccess文件上传成功

知道了改文件后缀名就可以成功上传文件,那么我这里把恶意文件改成:
将 filename 参数的值从 exploit.php 更改为 exploit.l33t

此时打开上传的文件查看,或者直接访问恶意文件路径,暴露出敏感信息
Or5MLoCop1nnKqcvIwl0PefBYsFngZVw

或者直接找到正常成功上传图片的GET /files/avatars/test.png 数据包
直接把图片文件名改成exploit.133t
返回200ok,暴露出用户秘钥

接着,提交用户秘钥,靶场过关
