upload-labs通关
2021-03-28 17:25:18 Author: www.freebuf.com(查看原文) 阅读量:98 收藏

由于对文件上传漏洞不是特别的熟悉,在网上找到了练习文件上传漏洞的靶场进行练习,加深自己的印象。
靶场源码地址: https://github.com/c0ny1/upload-labs
靶机包含漏洞类型分类:
mind-map.png

PASS 1

第一关通过前端js进行验证,不允许上传.php类型文件
图片.png
(1)可以将php文件修改为后缀为.jpg后缀文件,在通过burp抓包进行修改
3AWO}Y_@R]7[EIZ2Z1[5U$M.png
L)~V574UCEF~R$)}TRA1}(S.png
图片.png
(2)通过修改前端代码添加.php文件进行上传
图片.png
图片.png

PASS 2

第二关通过服务端对数据包的MIME进行检查
通过burp修改Content-Type类型
图片.png
图片.png

PASS 3

第三关禁止上传.asp|.aspx|.php|.jsp后缀文件,可以尝试上传后缀php3,php5的文件进行上传
图片.png
图片.png

PASS 4

第四关禁止常见的后缀文件
图片.png
可以尝试使用.htaccess重写文件解析绕过

<FilesMatch "4.jpg"
SetHandler application/x-httpd-php
</FilesMatch>

图片.png
在上传一个4.jpg文件上传成功后.jpg文件就会以,php文件运行
测试成功
图片.png

PASS 5

第五关禁止了常见后缀文件也包括了.htaccess
图片.png
更改后缀名大小写进行绕过
图片.png

PASS 6

第六关禁止常见后缀与大小写混用绕过
可以使用后缀加空格进行绕过
图片.png

PASS 7

第七关禁止上传所有可以解析的后缀
使用windows加.绕过(对文件命名时最后一个字符为.会自动忽略)
图片.png
图片.png

PASS 8

使用windows::$DATA绕过绕过
图片.png

PASS 9

第九关只允许上传.jpg|.png|.gif后缀的文件
图片.png
使用.php. .进行绕过
图片.png

PASS 10

通过源码可知回去除脚本后缀,源码中将可以当成php解析的后缀都替换成空
图片.png
使用双写进行绕过
图片.png

PASS 11

使用%00截断进行上传
截断条件: php版本 小于5.3.4 大于此版本的修复了
php的 magic_quotes_gpc 为 OFF状态 这函数是魔术引号,会对敏感的字符转义的 空就会被转义加个反斜杠
图片.png
上传成功
图片.png
图片.png

PASS 12

与第十一关差不多将get改为了post
可以使用十六进制00截断漏洞绕过白名单

图片.png

PASS 13

检查图标内容开头2个字节
使用图片马进行上传获取webshell
最后使用文件包含漏洞进行利用
图片.png

PASS 14

第十四关使用getimagesize()检查是否为图片文件
使用edjpgcom工具将一句话插入图片中进行上传
这里我只尝试了一种
图片.png

PASS 15

第十五关使用exif_imagetype()检查是否为图片文件
这里使用第14关的图片马就可以上传
图片.png

PASS 16

第16关重新渲染了图片
使用之前的图片马进行上传
上传之前将木马写在最后
图片.png
上传成功后会生成一张新的图片代替原来的图片
可以看到写入的木马文件被修改
图片.png
我们只需要找到渲染前后没有变化的位置,然后将php代码写进去,就可以成功上传带有php代码的图片了

PASS 17

第十七关需要代码审计
需要通过条件竞争漏洞不断请求资源,利用burp不断请求资源,然后不断在浏览器中访问最终上传成功

PASS 18

同第十七关差不多,采用了竞争上传与白名单
参考大佬的通过笔记知道可以利用上传重命名竞争+Apache解析漏洞 不断发包
最终直接通过菜刀连接

PASS 19

图片.png
CVE-2015-2348
move_uploaded_file() 00截断,上传webshell,同时自定义保存名称,直接保存为php是不行的
发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过
图片.png


文章来源: https://www.freebuf.com/articles/web/267810.html
如有侵权请联系:admin#unsafe.sh