upload-labs靶场打卡
文章目录
一、靶场介绍
PHP语言编写,持续收集渗透测试和CTF中针对文件上传漏洞的靶场,总共21关,每一关都包含着不同的上传绕过方式。
(绕过点脑图总结:)
二、靶场搭建
2.1 靶机环境
- Win2008R2 + PHPStudy2018(php5.2.17) + upload-labs源码
2.2 搭建过程
- GitHub项目地址:https://github.com/c0ny1/upload-labs
》》下载
》》将文件解压到PHPStudy站点目录下,并设置建议的php版本5.2.x
》》浏览器访问,如下所示安装成功
三、关卡挑战
Pass-01(前端JS绕过/客户端校验绕过)
限制演示
》》判断站点开发语言(PHP,也可以参考开发语言的其它判断方法)
(我们先通过操作和抓取数据包方式走一边正常的上传流程)
》》正常上传一图片文件上传成功
》》上传成功,服务器的upload目录下会存放上传的对应文件(操作过程中用户看不到此目录,这里用于理解)
》》前端会和后端进行交互,抓取的上传数据包流量
》》我们上传一个小马文件,提示该文件不允许上传,需要特定后缀类型文件
一句话php小马文件内容
源码分析
》》通过上边源码和网页源代码可看到JS脚本,判断使用文件类型在前端进行了限制
》》因此只要绕过了前端的JS校验就可以直接提给后端
绕过方法
- 方法一:数据包文件后缀绕过
》》查看服务器允许上传类型
》》将一句话木马后缀改为服务器允许上传的类型(以上三种皆可)
》》点击上传,先截取到请求数据包
》》将原来已经绕过前端的“common_php.jpg”文件改为“common_php.php”文件,向服务器发送篡改后的数据包,发送成功
现在小马文件已经上传至服务器,现在我们拿到小马的执行路径就完好了(后端允许解析执行的情况下)
》》通过浏览器检查页面元素即可拿到上传文件的相对路径(->网页右击 ->检查)
》》也可以通过返回数据包中查看上传的地址,这两个一样的
》》拼接得到上传文件的主目录
Q&A
Q1:只要上传完文件都会在返回包中拿到文件的相对/绝对路径吗?
A1:非也,需要看开发人员安全意识是否足够,后端代码中是否回显出路径
Q2:怎么通过返回的相对路径拼接成文件的绝对路径?
A2:根据经验!
》》如这里返回的绝对路径为:
》》暂且将返回的路径和当前地址的路径copy到编辑器中》》对网页目录进行分析
》》通过点击不同的网页目录,我们发现绿色部分是不变/相同的,当我们点击目录时只有后边的内容在变,因此可判断upload-labs是站点www目录下的主目录文件
(网站站点目录和URL地址图)
(上传文件地址和. ./上级目录图)由上可拼接出上传文件的绝对路径
Q3:如何判断上传的脚本被成功解析?
A3:脚本被解析代码会运行!
》》我们在站点目录下新建一个普通文本的文件
》》浏览器访问php文件会被解析执行因此什么都不显示
判断技巧
查看网页源代码是否有限制的JS代码,点击上传后直接弹框提示,但是没有发送数据包,即用了客户端认证方法