Java代码审计第七章-任意文件上传漏洞(上)

admin 2025年6月26日19:07:34评论2 views字数 1408阅读4分41秒阅读模式
定义

        任意文件上传漏洞是Web应用中的高危漏洞,攻击者通过绕过文件类型检测机制,将恶意脚本(如WebShell)上传至服务器。该漏洞的本质是文件上传操作未规范校验文件类型,导致检测功能被绕过。随着开发人员安全意识提升,此类漏洞有所减少但仍未绝迹。

黑盒测试过程

文件上传流程

  1. 前端提交

    • 用户选择文件并提交表单

    • 浏览器生成POST Multipart报文发送至服务器

  2. 报文解析

    • 请求头部分

      HTTP协议版本、浏览器信息、请求方式、编码类型、请求地址

    • 请求数据部分

      普通参数:参数名/参数值(含隐藏字段)

      文件数据:文件名、响应函数名、文件类型

  3. 服务器处理

    • 中间件接收并解析报文

    • 后端代码处理请求(PHP特有:将内容写入临时文件)

    • 最终文件写入目标存储路径

上传漏洞的必要条件

  1. 存在上传功能点

  2. 可上传动态脚本文件(如.php/.jsp)

  3. 上传目录有执行权限

  4. 上传文件可执行

  5. 可访问上传的动态文件

上传检测流程

前端提交检测

  • JavaScript检测

    • 触发事件:onchange(内容改变时)、onsubmit(表单提交时)

    • 绕过:删除检测函数或使用BurpSuite拦截修改请求

  • Flash AS检测

    • 提交前触发ActionScript检测

    • 绕过:直接修改POST报文内容

  • App上传检测安卓绕过步骤

    adb connect 127.0.0.1:7555  # MuMu模拟器am start -a android.settings.WIFI_SETTINGS
    1. 设置代理:Burp IP:8080

    2. 安装Burp证书(.crt格式)

    3. 信任证书(IOS需额外设置)

    4. 对抗证书校验:Xposed框架+JustTrustMe

数据传输检测

  • WAF拦截:双后缀/00截断绕过

  • IPS拦截:慢速攻击/分块传输

后端处理检测

  • 扩展名检测绕过

    • 大小写混合:.PhP

    • 特殊后缀:.phtml

  • MIME Type检测绕过

    • 伪造Content-Type:image/jpeg

  • 文件格式检测

    检测类型 绕过方法
    文件头检测 添加合法文件头(如GIF89a
    完整内容检测 图片与脚本合并:copy /b 1.jpg+shell.php final.jpg
    恶意内容检测 高度混淆WebShell(Weevely工具)

写入文件系统

  • 文件重命名绕过:利用解析漏洞

  • 杀毒软件对抗:内存马/无文件攻击

访问文件执行

  • 解析漏洞利用

    # Nginx畸形解析shell.jpg%20%00.php# Apache配置错误shell.php.jpg# IIS分号解析shell.asp;.jpg
  • 服务器识别

    • F12 → 网络 → Server头

    • 访问不存在页面查看错误信息

绕过的高级技巧

重绘图绕过

  1. 用目标图形库转换正常图片

  2. 识别转换前后未变化区域

  3. 将WebShell注入未变化区

  4. 二次转换验证完整性工具:Bypass-PHP-GD-Process-To-RCE

PHPinfo+本地包含组合利用

攻击流程

  1. 上传含大文件(拖延处理)

  2. 快速访问PHPinfo获取$_FILES信息

  3. 利用本地包含执行临时文件 

    GET /lfi.php?file=/tmp/phpXXXXX

在线压缩包利用

  • 目录穿越攻击

    zip -r evil.zip ../../etc/crontab
  • 符号链接攻击

    ln -s /etc/passwd ./linkzip --symlinks -r evil.zip ./link
  • 路径混淆攻击

  •      构造含../路径的压缩包结构

下半部分将涵盖白盒审计、修复方案等深度内容。

原文始发于微信公众号(今木安全):Java代码审计第七章-任意文件上传漏洞(上)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月26日19:07:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Java代码审计第七章-任意文件上传漏洞(上)http://cn-sec.com/archives/4201663.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息