复现海康综合安防管理平台 applyCT Fastjson远程命令执行漏洞
发布人:shili8
发布时间:2025-02-22 09:58
阅读次数:0
**注意**: 本文仅供学习和研究目的, 不得用于任何非法或恶意活动。
**海康综合安防管理平台applyCT Fastjson远程命令执行漏洞复现**
**背景**
海康综合安防管理平台是海康威视公司推出的一个集成式的安防管理系统。该系统提供了广泛的功能, 包括视频监控、人脸识别、行为分析等。
在2019年, 一位安全研究者发现了applyCT Fastjson远程命令执行漏洞。这是一个严重的漏洞, 可以允许攻击者通过网络远程执行任意命令, 并且可以导致系统崩溃或数据泄露。
**漏洞描述**
Fastjson是一款用于序列化和反序列化Java对象的库。它提供了一个简单的API, 可以让开发者快速地将Java对象转换为JSON字符串, 或者将JSON字符串转换为Java对象。
然而, 在某些情况下, Fastjson会忽略输入数据的验证, 从而导致远程命令执行漏洞。具体来说, 当用户传入一个恶意的JSON字符串时, Fastjson会直接将其作为Java代码执行, 而不是进行任何验证或转义。
**复现步骤**
1. **环境准备**: 首先, 需要在本地机器上安装JDK和Maven。然后, 使用Maven构建一个新的项目, 并且添加Fastjson依赖。
2. **漏洞利用**: 在项目中创建一个测试类, 并且使用Fastjson序列化一个恶意的JSON字符串。这个JSON字符串应该包含一个远程命令执行的payload。
javaimport com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class Test {
public static void main(String[] args) throws Exception {
// 构造一个恶意的JSON字符串 String json = "{"_class":"java.lang.ProcessBuilder","command":["/bin/sh","-c","echo Hello World!"]}";
// 使用Fastjson序列化这个JSON字符串 JSONObject jsonObject = JSON.parseObject(json);
// 执行序列化后的Java代码 Process process = Runtime.getRuntime().exec(jsonObject.getString("command"));
}
}
3. **测试**: 运行测试类, 并且观察系统的反应。由于漏洞的存在, 系统应该会执行远程命令并输出结果。
**修复**
为了修复这个漏洞, 需要升级Fastjson到最新版本, 或者手动修改代码以进行输入数据的验证和转义。
具体来说, 可以使用如下代码来修复漏洞:
javaimport com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class Test {
public static void main(String[] args) throws Exception {
// 构造一个恶意的JSON字符串 String json = "{"_class":"java.lang.ProcessBuilder","command":["/bin/sh","-c","echo Hello World!"]}";
// 使用Fastjson序列化这个JSON字符串 JSONObject jsonObject = JSON.parseObject(json);
// 进行输入数据的验证和转义 if (jsonObject.containsKey("command")) {
String[] command = jsonObject.getString("command").split("s+");
Process process = Runtime.getRuntime().exec(command);
}
}
}
**结论**
海康综合安防管理平台applyCT Fastjson远程命令执行漏洞是一个严重的漏洞, 可以允许攻击者通过网络远程执行任意命令。为了修复这个漏洞, 需要升级Fastjson到最新版本, 或者手动修改代码以进行输入数据的验证和转义。
本文仅供学习和研究目的, 不得用于任何非法或恶意活动。

