前言
由于对文件上传漏洞不是特别的熟悉,在网上找到了练习文件上传漏洞的靶场进行练习,加深自己的印象。
靶场源码地址: https://github.com/c0ny1/upload-labs
靶机包含漏洞类型分类:
通关笔记
PASS 1
第一关通过前端js进行验证,不允许上传.php类型文件
(1)可以将php文件修改为后缀为.jpg后缀文件,在通过burp抓包进行修改
(2)通过修改前端代码添加.php文件进行上传
PASS 2
第二关通过服务端对数据包的MIME进行检查
通过burp修改Content-Type类型
PASS 3
第三关禁止上传.asp|.aspx|.php|.jsp后缀文件,可以尝试上传后缀php3,php5的文件进行上传
PASS 4
第四关禁止常见的后缀文件
可以尝试使用.htaccess重写文件解析绕过
<FilesMatch "4.jpg"
SetHandler application/x-httpd-php
</FilesMatch>
在上传一个4.jpg文件上传成功后.jpg文件就会以,php文件运行
测试成功
PASS 5
第五关禁止了常见后缀文件也包括了.htaccess
更改后缀名大小写进行绕过
PASS 6
第六关禁止常见后缀与大小写混用绕过
可以使用后缀加空格进行绕过
PASS 7
第七关禁止上传所有可以解析的后缀
使用windows加.绕过(对文件命名时最后一个字符为.会自动忽略)
PASS 8
使用windows::$DATA绕过绕过
PASS 9
第九关只允许上传.jpg|.png|.gif后缀的文件
使用.php. .进行绕过
PASS 10
通过源码可知回去除脚本后缀,源码中将可以当成php解析的后缀都替换成空
使用双写进行绕过
PASS 11
使用%00截断进行上传
截断条件: php版本 小于5.3.4 大于此版本的修复了
php的 magic_quotes_gpc 为 OFF状态 这函数是魔术引号,会对敏感的字符转义的 空就会被转义加个反斜杠
上传成功
PASS 12
与第十一关差不多将get改为了post
可以使用十六进制00截断漏洞绕过白名单
PASS 13
检查图标内容开头2个字节
使用图片马进行上传获取webshell
最后使用文件包含漏洞进行利用
PASS 14
第十四关使用getimagesize()检查是否为图片文件
使用edjpgcom工具将一句话插入图片中进行上传
这里我只尝试了一种
PASS 15
第十五关使用exif_imagetype()检查是否为图片文件
这里使用第14关的图片马就可以上传
PASS 16
第16关重新渲染了图片
使用之前的图片马进行上传
上传之前将木马写在最后
上传成功后会生成一张新的图片代替原来的图片
可以看到写入的木马文件被修改
我们只需要找到渲染前后没有变化的位置,然后将php代码写进去,就可以成功上传带有php代码的图片了
PASS 17
第十七关需要代码审计
需要通过条件竞争漏洞不断请求资源,利用burp不断请求资源,然后不断在浏览器中访问最终上传成功
PASS 18
同第十七关差不多,采用了竞争上传与白名单
参考大佬的通过笔记知道可以利用上传重命名竞争+Apache解析漏洞 不断发包
最终直接通过菜刀连接
PASS 19
CVE-2015-2348
move_uploaded_file() 00截断,上传webshell,同时自定义保存名称,直接保存为php是不行的
发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过
来源:freebuf.com 2021-03-28 16:25:18 by: WAFmax
请登录后发表评论
注册