File tree Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Original file line number Diff line number Diff line change @@ -195,15 +195,15 @@ fastjson的主要功能就是将Java Bean序列化成JSON字符串,这样得
195
195
196
196
而黑白名单又是通过startWith检测的,那么黑客只要在自己想要使用的攻击类库前后加上` L ` 和` ; ` 就可以绕过黑白名单的检查了,也不耽误被fastjson正常加载。
197
197
198
- 如` Lcom.sun.rowset.JdbcRowSetImpl; ` ,会先通过白名单校验,然后fastjson在加载类的时候会去掉前后的` L ` 和` ,变成了 ` com.sun.rowset.JdbcRowSetImpl`。
198
+ 如` Lcom.sun.rowset.JdbcRowSetImpl; ` ,会先通过白名单校验,然后fastjson在加载类的时候会去掉前后的` L ` 和` ; ` ,变成了` com.sun.rowset.JdbcRowSetImpl ` 。
199
199
200
200
为了避免被攻击,在之后的 v1.2.42版本中,在进行黑白名单检测的时候,fastjson先判断目标类的类名的前后是不是` L ` 和` ; ` ,如果是的话,就截取掉前后的` L ` 和` ; ` 再进行黑白名单的校验。
201
201
202
202
看似解决了问题,但是黑客发现了这个规则之后,就在攻击时在目标类前后双写` LL ` 和` ;; ` ,这样再被截取之后还是可以绕过检测。如` LLcom.sun.rowset.JdbcRowSetImpl;; `
203
203
204
- 魔高一尺,道高一丈。在 v1.2.43中,fastjson这次在黑白名单判断之前,增加了一个是否以` LL ` 未开头的判断 ,如果目标类以` LL ` 开头,那么就直接抛异常,于是就又短暂的修复了这个漏洞。
204
+ 魔高一尺,道高一丈。在 v1.2.43中,fastjson这次在黑白名单判断之前,增加了一个是否以` LL ` 开头的判断 ,如果目标类以` LL ` 开头,那么就直接抛异常,于是就又短暂的修复了这个漏洞。
205
205
206
- 黑客在` L ` 和` ; ` 这里走不通了,于是想办法从其他地方下手,因为fastjson在加载类的时候,不只对` L ` 和` ; ` 这样的类进行特殊处理,还对` [ ` 也被特殊处理了 。
206
+ 黑客在` L ` 和` ; ` 这里走不通了,于是想办法从其他地方下手,因为fastjson在加载类的时候,不只对` L ` 和` ; ` 这样的类进行特殊处理,还对` [ ` 特殊处理了 。
207
207
208
208
同样的攻击手段,在目标类前面添加` [ ` ,v1.2.43以前的所有版本又沦陷了。
209
209
@@ -334,4 +334,4 @@ http://www.lmxspace.com/2019/06/29/FastJson-反序列化学习
334
334
[ 3 ] : https://www.hollischuang.com/wp-content/uploads/2020/07/15938462506312.jpg
335
335
[ 4 ] : https://www.hollischuang.com/wp-content/uploads/2020/07/15938495572144.jpg
336
336
[ 5 ] : https://www.hollischuang.com/wp-content/uploads/2020/07/15938532891003.jpg
337
- [ 6 ] : https://www.hollischuang.com/wp-content/uploads/2020/07/15938545656293.jpg
337
+ [ 6 ] : https://www.hollischuang.com/wp-content/uploads/2020/07/15938545656293.jpg
You can’t perform that action at this time.
0 commit comments