upload-labs靶场通关指南(第1-3关)
今天继续给大家介绍渗透测试相关知识,本文主要内容是upload-labs靶场通关指南(第1-3关)
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、第一关
(一)代码分析
第一关关键代码如下所示:
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}
(二)绕过思路
从上述代码中可以看出,上述代码使用了JavaScript脚本,在前端对用户上传文件的类型进行了检测。因此,我们只需要先上传符合JavaScript脚本要求的数据包,然后使用Burpsuit抓取该数据包,然后将该文件的后缀名改成php,这样我们就可以成功上传恶意文件了。
(三)绕过实战
接下来,我们来进行第一关的绕过实战,首先,我们上传一个名为exp.jpg的文件(文件内容任意,可以是一句话木马等)。然后设置使用Burpsuit抓包,抓到数据包如下所示:
注意看上图中红线部分,我们将其修改为exp.php,这样就可以成功上传了,上传成功后的文件如下所示:
二、第二关
(一)代码分析
第二关关键代码如下所示:
(二)绕过思路
结合代码及题目提示,我们可以明确,第二关对客户端上传的文件,只是校验了其MIME信息。因此我们的思路与第一关相类似,也是先上传文件,然后抓包,之后修改数据包的MIME信息,这样就能够绕过对MIME的检验了。
(三)绕过实战
接下来我们开始进行实战。还是先上传恶意文件,并使用Burpsuit抓包,修改下图中红线部分,将原始数据包中的:
Content-Type:application/octet-stream
修改为:
Content-Type:image/jpeg
之后,即可放行该数据包。
这样,我们也可以成功是上传我们的恶意文件了。
三、第三关
(一)代码分析
第三关关键代码如下所示:
(二)绕过思路
通过上述代码,结合题目提示,可以判断处,本关使用了黑名单的方式,对客户端上传的文件后缀名进行了检验,不允许上传asp、php、aspx、jsp等后缀名的文件。我们可以看出,这份黑名单非常不全面,我们可以使用phps、phtml、php5等后缀名绕过该过滤手段。
(三)绕过实战
接下来,我们进行绕过实战。我们创造一个后缀名为/php5的文件,并写入我们的恶意代码,之后进行上传,发现上传成功并出现如下页面:
接下来,我们可以使用浏览器自带的开发工具查看上图中图片的路径,如上图中红线部分所示。
之后,我们可以访问该路径,结果如下所示:
从上图可以看出,我们的恶意文件成功上传,并且能够成功解析。
四、关于phpstudy无法实现第三关,不解析php5、phtml等问题
我们在进行上述实验时,有时会发现第三关无法使用phpstudy软件来复现。这时我们需要检查Apache的配置文件,并且在配置文件中添加如下内容:
AddType application/x-httpd/php .php .phtml .php5
上述配置表示将后缀名为.php、.phtml、和.php5的文件都当作php文件解析,配置完成后如下所示:
此外,最新版本的phpstudy,即使进行了上述的配置,也不支持对.php5等文件的解析。因此,如果我们要做upload-labs的实验,最好使用2018版本的phpstudy。
新版本的phpstudy如下所示:
老版本的phpstudy如下所示:
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200