第六天終於要開始進行第二個漏洞環境的分析,但這次會針對這個漏洞設計一個測試用的SpringBoot專案,方便我們之後進行測試用。而測試的程式碼則是透過靜態分析觀察而來的。
漏洞分析方式
靜態分析的部分與之前相同。相關步驟如下所示:
1. docker run -p 8066:8080 --rm --name spring4shell vulfocus/spring-core-rce-2022-03-29:latest #執行弱點專案,並expose在8066 port 上面
2. docker exec -it spring4shell bash #進到容器內執行shell指令
3. ps aux #觀察一下容器內執行程式,並得到程式目錄位置
4. exit #脫離容器
5. docker cp spring4shell:/app/tomcat/webapps/ROOT.war . #將容器內的弱點專案複製到宿主機當前目錄
6. docker cp spring4shell:/app/jdk9 . #將jdk9複製到宿主機當前目錄
這個主程式有一個特別的地方就是用到了SpringBoot的 Data Binding 功能,協助將傳入的參數綁定到物件上。這部分待會我們會透過例子進行測試。但首要之務在於建置一個可控的弱點專案出來進行測試及修改。
SpringBoot可有提供相關的IDE及初始化專案可以使用,分別為Spring Tools以及Spring initializr。可透過下列方式進行弱點專案的編譯。
*小提醒,Eclipse的設定目錄在專案目錄底下。Maven的下載資料在家目錄的.m2底下。
建置步驟 :
建置步驟 :
FROM vulfocus/spring-core-rce-2022-03-29:latest
ADD Spring4Shell/target/Spring4Shell.war /app/tomcat/webapps
CMD ["/app/tomcat/bin/catalina.sh","run"]
參考資料