代码审计 xxxdisk前台Getshell
字数 1300 2025-08-27 12:33:31

XXXDISK网盘系统前台Getshell漏洞分析与利用

0x00 漏洞概述

XXXDISK网盘系统存在一个无需登录的前台Getshell漏洞,该漏洞组合利用了Windows NTFS ADS流文件上传绕过、权限绕过和宽字节注入等多个安全问题,最终可实现远程代码执行。

0x01 受影响版本

  • 系统版本:XXXDISK网盘系统GBK版本(通过查看返回包的charset确认)
  • 平台:Windows系统(利用NTFS ADS特性)

0x02 漏洞分析

1. Windows文件上传绕过

系统使用黑名单机制限制上传文件类型,关键函数get_real_ext通过filter_extension对后缀进行修改添加.txt防止解析。但存在以下问题:

  • 可通过Windows NTFS ADS流特性绕过:构造文件名如1.php::$DATA
  • 文件上传函数位于modules/upload.inc.php
  • 文件真实名称采用强随机生成机制

2. 权限绕过问题

mydisk.php中,虽然调用了phpdisk_core::user_login()进行认证,但认证失败仅返回302跳转,未执行exit,导致可以无授权访问上传功能。

3. 宽字节注入漏洞

系统存在多处宽字节注入点,其中关键一处位于ajax.php

$file = unserialize(base64_decode($data));  // $data用户可控
$db->query_unbuffered(is_utf8() ? $sql : iconv('utf-8','gbk',$sql));  // 编码转换导致注入

这是一个INSERT型注入,存在回显,无需盲注。

0x03 漏洞利用链

完整的利用流程如下:

  1. 未授权文件上传

    • 直接访问上传接口绕过认证
    • 利用NTFS ADS流特性上传恶意文件
  2. 获取上传文件信息

    • 通过宽字节注入获取文件真实名称
    • 需要将文件属性in_share设置为1以获取回显
    • 使用file_namefile_description字段作为回显位
  3. 获取文件ID

    • 方法1:如果有账号,上传测试文件获取file_id后减1
    • 方法2:爆破file_id(实际测试中速度较快)
  4. 最终Getshell

    • 通过注入获取真实文件名
    • 访问上传的Webshell文件

0x04 详细利用步骤

1. 构造恶意文件上传

使用NTFS ADS流特性构造上传请求:

文件名: shell.php::$DATA
文件内容: <?php phpinfo();?>

2. 宽字节注入Payload

构造注入Payload获取上传文件信息:

# 设置in_share=1使文件可被查看
# 利用file_description字段回显数据
[构造特定的INSERT语句注入]

3. 获取文件ID

通过以下方式之一:

  • 注册测试账号上传文件获取基准file_id
  • 爆破可能的file_id范围

4. 访问Webshell

通过注入获取的真实文件名访问Webshell:

http://target.com/uploads/[随机文件名].php

0x05 防御建议

  1. 文件上传修复:

    • 使用白名单机制替代黑名单
    • 彻底禁止特殊字符文件名
    • 在非Windows服务器上部署
  2. 权限修复:

    • 认证失败后立即退出程序
    • 添加CSRF防护
  3. SQL注入修复:

    • 使用预编译语句
    • 统一编码处理
    • 严格过滤反序列化输入

0x06 总结

该漏洞利用链展示了如何组合多个中低危漏洞实现高危攻击。关键点包括:

  • Windows NTFS ADS流特性绕过
  • 认证逻辑缺陷导致的未授权访问
  • 宽字节注入获取关键信息
  • 完整的攻击链构造思路

此案例也说明了安全防御需要全面考虑,单一防护措施往往不足以阻挡攻击者的组合攻击手法。

XXXDISK网盘系统前台Getshell漏洞分析与利用 0x00 漏洞概述 XXXDISK网盘系统存在一个无需登录的前台Getshell漏洞,该漏洞组合利用了Windows NTFS ADS流文件上传绕过、权限绕过和宽字节注入等多个安全问题,最终可实现远程代码执行。 0x01 受影响版本 系统版本:XXXDISK网盘系统GBK版本(通过查看返回包的charset确认) 平台:Windows系统(利用NTFS ADS特性) 0x02 漏洞分析 1. Windows文件上传绕过 系统使用黑名单机制限制上传文件类型,关键函数 get_real_ext 通过 filter_extension 对后缀进行修改添加 .txt 防止解析。但存在以下问题: 可通过Windows NTFS ADS流特性绕过:构造文件名如 1.php::$DATA 文件上传函数位于 modules/upload.inc.php 文件真实名称采用强随机生成机制 2. 权限绕过问题 在 mydisk.php 中,虽然调用了 phpdisk_core::user_login() 进行认证,但认证失败仅返回302跳转,未执行 exit ,导致可以无授权访问上传功能。 3. 宽字节注入漏洞 系统存在多处宽字节注入点,其中关键一处位于 ajax.php : 这是一个INSERT型注入,存在回显,无需盲注。 0x03 漏洞利用链 完整的利用流程如下: 未授权文件上传 : 直接访问上传接口绕过认证 利用NTFS ADS流特性上传恶意文件 获取上传文件信息 : 通过宽字节注入获取文件真实名称 需要将文件属性 in_share 设置为1以获取回显 使用 file_name 或 file_description 字段作为回显位 获取文件ID : 方法1:如果有账号,上传测试文件获取file_ id后减1 方法2:爆破file_ id(实际测试中速度较快) 最终Getshell : 通过注入获取真实文件名 访问上传的Webshell文件 0x04 详细利用步骤 1. 构造恶意文件上传 使用NTFS ADS流特性构造上传请求: 2. 宽字节注入Payload 构造注入Payload获取上传文件信息: 3. 获取文件ID 通过以下方式之一: 注册测试账号上传文件获取基准file_ id 爆破可能的file_ id范围 4. 访问Webshell 通过注入获取的真实文件名访问Webshell: 0x05 防御建议 文件上传修复: 使用白名单机制替代黑名单 彻底禁止特殊字符文件名 在非Windows服务器上部署 权限修复: 认证失败后立即退出程序 添加CSRF防护 SQL注入修复: 使用预编译语句 统一编码处理 严格过滤反序列化输入 0x06 总结 该漏洞利用链展示了如何组合多个中低危漏洞实现高危攻击。关键点包括: Windows NTFS ADS流特性绕过 认证逻辑缺陷导致的未授权访问 宽字节注入获取关键信息 完整的攻击链构造思路 此案例也说明了安全防御需要全面考虑,单一防护措施往往不足以阻挡攻击者的组合攻击手法。