目录
开始之前,准备好burpsuite,浏览器配置好代理。
(还有一个必须知道的知识点)文件上传漏洞被利用需要两个前提条件:
1、文件能上传成功
2、攻击者能知道文件路径
凡是上传图片并显示的关卡,都有三种方式可以知道文件路径,这里先说一下,后面就不再每关赘述了:
1、最简单直接的,在没显示出来的图片上右键选择“复制图像链接”,可以得到文件的绝对路径,比如:
http://192.168.101.16/upload-labs/upload/sh.php
2、网页上右键选择“查看页面源代码”,源代码中显示文件的相对路径
3、如果是用burpsuite上传的文件,response报文中也会显示文件的相对路径。
下面就正式开始吧~~~
Pass-01
这关要求上传一个webshell,我选择了一个叫sh.php的文件并点击上传之后,跳出了一个弹框,提示当前文件类型不是允许上传的文件类型。
在burpsuite上proxy模块的http history中看了一下,并没有上传文件相关的报文,说明弹框时文件格式没有经过后端校验。
查看网页源代码,发现文件类型和弹框是由前端JS代码校验的。
这关至少有两种方法:浏览器disable JS,或者上传合法格式的文件,burp抓包并修改文件后缀为.php
方法1:浏览器disable JS
firefox可以安装一个叫Script Switch的插件,安装成功之后,就是下图右上角小红框里那个图标,使其处在JS disabled状态,上传sh.php。出现下图这样没加载成功的图片表示webshell已经上传成功。
到服务器上看看,上传成功的webshell在 upload-labs目录\upload 文件夹下
好了,先把服务器上的sh.php删掉,再来试试方法2。
方法2: burp抓包修改后缀
这个方法不如方法1方便呢,但是比较通用,而且不用安装插件或者扩展……
把攻击机上的sh.php改名为sh.png。
burp的proxy模块的intercept设置为on
选择sh.png并上传,这时burp的proxy模块可以抓到请求报文
将请求报文中 Content-Disposition头的filename从sh.png改为sh.php
然后一路forward,再去服务器上看看,就发现sh.php已经成功上传到服务器了。