1. 程式人生 > 其它 >某處Fastjson漏洞挖掘

某處Fastjson漏洞挖掘

Fastjson是阿里的開源JSON解析庫,它可以解析 JSON 格式的字串,支援將 Java Bean 序列化為 JSON 字串,也可以從 JSON 字串反序列化到 JavaBean。 Fastjson提供了autotype功能,可通過修改@type的值,反序列化為指定型別,而fastjson在反序列化中或設定和獲取類中屬性,如果類中存在惡意方法則會導致程式碼執行等。

Fastjson

簡介

Fastjson是阿里的開源JSON解析庫,它可以解析 JSON 格式的字串,支援將 Java Bean 序列化為 JSON 字串,也可以從 JSON 字串反序列化到 JavaBean。

Fastjson提供了autotype功能,可通過修改@type的值,反序列化為指定型別,而fastjson在反序列化中或設定和獲取類中屬性,如果類中存在惡意方法則會導致程式碼執行等。

注入方法

JNDI Reference 配合 RMI

JNDI Reference 配合 LDAP

一般見到json格式的資料,有一定可能性是fastjson

在測試中某醫院登陸處是使用fastjson進行驗證

可構造payload

升級方案

升級到最新版本1.2.69或者更新的1.2.70版本。

1.2.69https://github.com/alibaba/fastjson/releases/tag/1.2.69

1.2.70https://github.com/alibaba/fastjson/releases/tag/1.2.70

如果遇到相容問題,原地升級sec10版本。

1.1.15~1.1.31->1.1.31.sec10

1.1.32~1.1.33->1.1.33.sec10

1.1.34->1.1.34.sec10

1.1.35~1.1.46->1.1.46.sec10

1.2.0~1.2.2->

1.2.2.sec10因為1.2.3之後的版本Map是沒有排序輸出的,如果不關注這個相容問題,升級到1.2.70

1.2.3~1.2.7->1.2.7.sec10因為1.2.7使用最多特別提供,也可以直接使用1.2.8.sec10

1.2.8->1.2.8.sec10

1.2.9~1.2.29->1.2.29.sec10

1.2.30~1.2.48->1.2.48.sec10

1.2.49~1.2.68->1.2.691.2.70中間有很多sec10小版本,建議直接升級到1.2.69或1.2.70,如果遇到相容再考慮sec10版本

如果還遇到其他相容問題,這裡有更多的sec10版本https://repo1.maven.org/maven2/com/alibaba/fastjson/

fastjson加固

fastjson在1.2.68及之後的版本中引入了safeMode,配置safeMode後,無論白名單和黑名單,都不支援autoType,可一定程度上緩解反序列化Gadgets類變種攻擊(關閉autoType注意評估對業務的影響)

開啟方法參考:

https://github.com/alibaba/fastjson/wiki/fastjson_safemode

[Sign]做不出ctf題的時候很痛苦,你只能眼睜睜看著其他人領先你