原创 Java模版引擎注入(SSTI)漏洞研究

一、FreeMarker模板注入安全風險 0x1:FreeMarker簡介 FreeMarker 是一款Java語言編寫的模板引擎,它是一種基於模板和程序動態生成的數據,動態生成輸出文本(HTML網頁,電子郵件,配置文件,源代碼等)的通用工

原创 JetBrains TeamCity 任意代碼執行漏洞(CVE-2023-42793)研究

一、JetBrains TeamCity簡介 TeamCity 是一款由 JetBrains 開發的強大的持續集成(Continuous Integration,CI)和持續部署(Continuous Deployment,CD)工具

原创 Apache Spark 認證繞過漏洞(CVE-2020-9480)研究

一、Apache Spark簡介 Spark是一種快速、通用、可擴展的大數據分析引擎,2009年誕生於加州大學伯克利分校AMPLab,2010年開源,2013年6月成爲Apache孵化項目,2014年2月成爲Apache頂級項目。項目是用

原创 SnakeYaml反序列化漏洞研究

一、SnakeYaml簡介 SnakeYaml是Java中解析yaml的庫,而yaml是一種人類可讀的數據序列化語言,通常用於編寫配置文件等。 YAML 的語法和其他高級語言類似,並且可以簡單表達清單、散列表,標量等數據形態。它使用空白符號

原创 Hessian反序列化漏洞研究

一、Hessian簡介 0x1:Hessian是什麼 Hessian 是 caucho 公司的工程項目,爲了達到或超過 ORMI/Java JNI 等其他跨語言/平臺調用的能力設計而出,在 2004 點發布 1.0 規範,一般稱之爲 Hes

原创 Java JNI(Java Native Interface)攻擊原理研究

一、Java JNI簡介 0x1:JNI是什麼 JNI (Java Native Interface,Java本地接口)是一種編程框架,使得Java虛擬機中的Java程序可以調用本地應用/或庫,也可以被其他程序調用。 本地程序一般是用其它語

原创 Java Fastjson反序列化漏洞研究

一、Fastjson簡介 JSON是一種輕量級資料交換格式,其內容由屬性和值所組成,因此也有易於閱讀和處理的優勢,JSON也是目前最爲流行的C/S通訊方式。JavaEE的規範中制定了Java API for JSON Processing

原创 XMLDecoder反序列化漏洞研究

一、XMLDecoder簡介 java.beans.XMLDecoder 是jdk自帶的以SAX方式解析XML的類,主要功能是實現java對象和xml文件之間的轉化: 序列化:將java對象轉換成xml文件 反序列化:把特定格式的xml文

原创 Jackson反序列化漏洞研究

一、Jackson序列化庫使用簡介 0x1:Jackson背景 Jackson是一個強大而高效的Java庫,處理Java對象及其JSON表示的序列化和反序列化。它是這項任務中使用最廣泛的庫之一,並在許多其他框架中作爲默認的Json引擎使用。

原创 XStream反序列化漏洞原理分析

一、XStream簡介 0x1:XStream介紹 Xstream是一種OXMapping 技術,是用來處理XML文件序列化的框架,在將JavaBean序列化,或將XML文件反序列化的時候,不需要其它輔助類和映射文件,使得XML序列化不再繁

原创 Java反序列化漏洞原理研究

一、Java類加載機制 0x1:Java程序如何運行 一個Java程序的運行整個過程分爲編譯時和運行時。 首先原始的java程序源碼先由java編譯器javac來編譯成字節碼,即.class文件,然後有ClassLoader類加載器加載類的

原创 Java SPEL表達式注入漏洞原理研究

一、Java SpEL表達式基本原理 SpEL(Spring Expression Language)簡稱Spring表達式語言,在Spring 3中引入。 SpEL能在運行時構建複雜表達式、存取對象圖屬性、對象方法調用等等,可以與基於XM

原创 Java MVEL表達式注入漏洞原理研究

一、Java MVEL表達式原理 MVEL全稱爲:MVFLEX Expression Language,是用來計算Java語法所編寫的表達式值的表達式語言。MVEL的語法很大程度上受到Java語法的啓發,但爲了使表達式語法更高效,還是有一些

原创 Java OGNL表達式注入漏洞原理研究

一、OGNL表達式基礎 0x1:什麼是Java中的對象圖 來看一個例子: Class SchoolMaster{ String name = "wanghua"; } Class School { String name

原创 Java內存馬原理研究

一、內存馬攻防技術整體圖景  從整體攻防領域角度進行分類,內存馬可以分爲如下幾個類型: Servlet-API型:通過模擬中間件註冊流程,動態註冊一個新的listener、filter或者servlet,從而實現一箇中間件後門。特定框架