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

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-22963 — 针对 CVE-2025-22963 的概念验证利用程序,这是 Teedy v1.11 中的一个 CSRF 漏洞,可通过用户信息更改端点实现账户接管。 | Kitploit
工具/GitHubGitHub/gmh5225/cve-2025-22963
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试身份验证
GitHubgmh5225/cve-2025-22963

CVE-2025-22963

针对 CVE-2025-22963 的概念验证利用程序,这是 Teedy v1.11 中的一个 CSRF 漏洞,可通过用户信息更改端点实现账户接管。

查看仓库
11年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

概述

Teedy 版本 <= v1.11 中的跨站请求伪造(CSRF)漏洞允许远程攻击者强制当前已认证的终端用户更改其在 Web 应用程序中的个人信息(用户名、密码等)。

漏洞

用户信息更改端点为 /api/user/:username。
该端点仅检查 Cookie 中的 auth_token 以进行授权。
auth_token 值可在其他源网站中使用。

root@kitploit:~
POST /api/user/admin HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Content-Length: 173
Origin: http://localhost:8080
Connection: keep-alive
Referer: http://localhost:8080/
Cookie: auth_token=890b02eb-3e4b-4134-a523-56093a25952b
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=0

username=admin&groups=administrators&email=admin%40example.com&totp_enabled=false&storage_quota=0&storage_current=0&disabled=false&password=superSecure&passwordconfirm=superSecure

因此,诱使用户访问向 /api/user/:username 发送请求的网站,会导致用户信息被更改为远程攻击者的信息。
用户信息包含密码。
这可能导致账户接管。
当远程攻击者知道终端用户的用户名时,即可实施此攻击。
此攻击对管理员和访客用户均可利用。
在这种情况下,攻击者可以通过将受害用户的密码设置为攻击者的密码,然后使用该密码登录受害用户账户,从而接管受害用户。

修复

要修复此漏洞,请在请求 /api/user/:username 时附加 CSRF 令牌。

root@kitploit:~
POST /api/user/admin HTTP/1.1

...

username=admin&groups=administrators&email=admin%40example.com&totp_enabled=false&storage_quota=0&storage_current=0&disabled=false&password=superSecure&passwordconfirm=superSecure&csrf_token=<随机生成的令牌>

这可以防范 CSRF 攻击,因为攻击者不知道 CSRF 令牌的值。
要安全地使用 CSRF 令牌,请遵循以下步骤:

  1. 在请求表单中嵌入随机生成的 CSRF 令牌。
  2. 使用 CORS HTTP 头防止 CSRF 令牌被其他源网站泄露。

首先,在 docs/docs-web/src/main/java/com/sismics/docs/rest/util 目录下创建以下文件:

  • CSRFToken.java
  • RandomTokenGenerator.java CSRFToken.java
root@kitploit:~
package com.sismics.docs.rest.util;

import java.util.Map;
import java.util.HashMap;
import java.security.SecureRandom;
import com.sismics.docs.rest.util.RandomTokenGenerator;

/**
 * CSRF Token 类,用于管理用户的 CSRF 令牌
 */
public class CSRFToken {

    private static CSRFToken instance = new CSRFToken();
    private Map<String, String> tokenMap = new HashMap<String, String>();

    private CSRFToken() {}

    public static CSRFToken getInstance() {
        return instance;
    }

    public void setToken(String userName, String token) {
        tokenMap.put(userName, token);
    }

    public String getToken(String userName) {
        if (tokenMap.containsKey(userName)) {
            return tokenMap.get(userName);
        }
        // 避免使用可预测的字符串,因为暴力破解该值可能导致绕过 CSRF 检查
        return RandomTokenGenerator.generate();
    }

    public boolean validate(String userName, String token) {
        return this.getToken(userName).equals(token);
    }
}

RandomTokenGenerator.java

root@kitploit:~
package com.sismics.docs.rest.util;

import java.security.SecureRandom;
import java.lang.StringBuilder;
import java.lang.String;

/**
 * 用于 CSRF 令牌的令牌生成器
 */
public class RandomTokenGenerator {

    public static String generate() {
        byte[] bytes = new byte[16];
        SecureRandom rand = new SecureRandom();
        rand.nextBytes(bytes);
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    }
}

之后,将以下文件修改为如下内容:

  • docs/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsUserEdit.js
  • docs/docs-web/src/main/java/com/sismics/docs/rest/resource/UserResource.java UserResourceDiff1 UserResourceDiff2 SettingsUserEditDiff1 SettingsUserEditDiff2

参考资料

sismics - Teedy (https://github.com/sismics/docs)
portswigger - 跨站请求伪造(CSRF)(https://portswigger.net/web-security/csrf)
Mozilla - 访问控制场景示例 (https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#examples_of_access_control_scenarios)

致谢

感谢 Ayato 教我如何报告漏洞。

下载工具