第三关 通过路径遍历上传 Web shell
这一关就是尝试不同目录遍历方式绕过文件上传的限制,上传恶意php文件,获取到用户敏感信息
提示:1、靶场包含易受攻击的图片上传功能
2、服务器配置为阻止执行用户提供的文件,但可以通过利用**次要漏洞绕过此限制**。
3、上传一个基本的 PHP Web shell 并使用它来窃取文件 /home/carlos/secret 的内容
具体操作:
1、正常登录用户,上传头像图片

2、显示:头像上传成功

然后返回到我的账户,就可以查看上传的图片
3、接下来尝试上传恶意php文件
创建一个名为 exploit.php 的文件,其中包含用于获取 Carlos 密钥内容的脚本:
<?php echo file_get_contents('/home/carlos/secret'); ?>

4、没有阻止我上传恶意文件,文件上传成功

5、但是访问恶意文件路径,返回的是php文件的文本内容

上面我上传恶意文件成功,但是打开访问没有获取到用户的秘钥,返回的是PHP 文件的内容作为纯文本返回
这怎么办呢?
6、那么换一种上传方法,先找到POST /my-account/avatar的提交文件的数据包,发往repeater
先尝试使用普通目录遍历的方式
改成username="../exploit.php"
显示返回200ok,上传成功,说明服务器正在从文件名中剥离目录序列

此时访问恶意文件路径是:未发现页面

那么在再尝试换一种方式,先编码再进行目录遍历上传恶意文件
通过对正斜杠 (/) 字符进行编码的 URL 对目录遍历序列进行混淆处理
filename="..%2fexploit.php"
上传成功 说明服务器正在对文件名进行解码

然后再去浏览器右键点击上传的文件,选择打开文件查看,或者直接复制路径,访问恶意文件
/files/exploit.php
获取的用户秘钥:
wHh3TTeAs0Yjy1tdrjPiObMxzurlcGhr

然后提交答案——用户的秘钥
如图:靶场过关
