- Docs/
upload-labs
Table of Contents
靶场搭建 #
https://github.com/c0ny1/upload-labs
基本思路 #
禁用 JavaScript
MIME 绕过
扩展后缀名
配置文件
.htaccess
自建后缀名,通配后缀名
文件上传后文件名可能会修改,此时只要后缀名匹配了,一样可以识别
webshell 工具可能没法利用部分已有的后缀,比如
.jpg
各种绕过
- 大小写绕过
- 在文件名的首尾去加点
- 在文件名的首尾加空格
- 在文件名的首尾加::$DATA
Pass - 01 #
客户端检查
禁用 JavaScript
火狐禁用:打开设置,搜索JavaScript,关闭
Pass - 02 #
服务端检查
可以上传非图片内容,检查后缀
白名单:MIME 绕过
抓包,将Content-Type修改为允许上传的类型(image/jpeg、image/png、image/gif)三选一
菜刀连接
木马内容
<?php @eval($_POST['caidao']);?>
成功
Pass - 03 #
服务端检查
上传php文件,黑名单
提示:不允许上传.asp,.aspx,.php,.jsp后缀文件!
扩展后缀名
php,phps,php3,php5,phtml
等都有可能被解析成php
文件的是否能解析,取决与apache
的配置查看回显数据包,可知道文件名
访问该文件
很遗憾,并不能解析
由于使用docker部署的,找配置文件找了很久,因为大多数资料都是Windows部署的
最后使用了局部配置文件
.htaccess
文件内容为:
AddType application/x-httpd-php .php .phtml .phps .php5 .pht
该文件放在
/var/www/html
尝试放在 /var/www/html/Pass-03 并没有生效
解析成功
这时候使用蚁剑和菜刀都可以连接了
Pass - 04 #
方法一
- 服务端、后缀、黑名单
- 尝试后缀
.phps
,上传成功 - 查看文件
方法二
上传
.htaccess
文件更改apache配置<FilesMatch "01.xxx"> SetHandler application/x-httpd-php </FilesMatch>
这段代码的意思是把
01.xxx
文件当作php文件执行.htaccess
文件是隐藏文件,需要右键设置,显示隐藏文件成功
{{ alert }}
图片马不能直接利用,得结合文件包含漏洞
在使用
01.jpg
连接蚁剑是失败的,所以用了个.xxx
的后缀{{ alert }}
文件包含漏洞:本来想引用一个php文件,但是漏洞就是,他不会识别什么是php文件,只要是他引用的,他都当php来解析,所以如果他引用的是jpg,但是jpg中有图片马,那么他就相当于引用了图片马,同样的道理还会有zip马等等。
Pass - 05 #
大小写绕过
Pass - 06 #
首尾加空格