E.L.V — Exploit Loader & Vulnerability Firmware
用于授权漏洞评估的网络安全研究工具。
E.L.V CVE 研究与评估框架 是一个基于 Python 的命令行工具,用于受控的安全研究和授权漏洞评估。
所提供的实现包含以下功能:
当前源代码将其研究目标标识为:
CVE-2026-48907 Joomla! JCE Extension < 2.9.99.5 Unauthenticated RCE
该 CVE/产品声明是由源代码提供的元数据,本 README 未对其进行独立验证。在发布安全声明之前,请对照可信的厂商/CVE 来源验证标识符、受影响版本、安全公告、受影响组件以及修复信息。
本项目与远程 Web 应用程序交互,所提供的实现包含用于上传自定义服务端 payload 并与上传的 shell 通信的功能。
仅在您拥有明确授权的系统上使用本工具。
请勿使用本项目进行以下行为:
如需安全的实验环境,请使用隔离的本地 VM/容器环境或故意存在漏洞的训练目标。
| 字段 | 值 |
|---|---|
| 项目 | E.L.V CVE 研究与评估框架 |
| 作者 / 引擎 | HxN / E.L.V |
| 版本 | 1.0.0 |
| 语言 | Python |
| 平台 | *nix / 类 Unix 系统 |
| 许可证 | GNU GPL v3 |
| 接口 | 命令行 |
| HTTP 客户端 | requests |
| 并发 | ThreadPoolExecutor |
| 主要用途 | 授权安全研究与评估 |
所提供的 elv-cve.py 源代码包含以下主要组件。
脚本读取通过 --shell 选项提供的本地文件。
源代码将其描述为自定义 shell/上传器文件,当无法读取指定文件时终止运行。
程序支持两种互斥的目标模式:
对于每个目标,脚本对目标根路径执行 GET 请求,并期望在继续之前收到 HTTP 200 响应。
实现使用正则表达式在返回的 HTML 中搜索与 CSRF 相关的值。
当前实现了两种模式。
脚本针对以下地址构造一个 multipart 上传请求:```text /index.php?option=com_jce
该请求包含 profile-import 任务和提取出的 token。
### 6. 候选路径验证
在上传请求之后,程序会检查生成文件的多个可能位置。
当前源代码包含以下候选路径:```text
/tmp/
/images/
/images/stories/
/media/
对于单个目标,当程序报告成功上传的 shell 路径时,当前程序会调用交互式命令接口。
源端使用以下命名的 POST 参数发送命令:```text cmd c
由于此功能可能导致远程命令执行,因此应仅限于隔离的、明确授权的环境中使用。
### 8. 多目标处理
当提供目标文件时,程序使用 `ThreadPoolExecutor` 并发处理目标。
源代码中的默认线程数为:```text
10
从高层来看,当前实现遵循以下流程:```text Start │ ├── Parse command-line arguments │ ├── Load local payload file │ ├── Load one target OR target list │ ├── Create ELV_CVE output directory │ ├── Target processing │ │ │ ├── GET target │ ├── Check HTTP response │ ├── Extract token │ ├── Submit profile-import request │ ├── Check candidate file paths │ └── Record result │ └── Write results / display summary
---
## 环境要求
提供的源代码导入了:
- Python 标准库模块:
- `random`
- `re`
- `time`
- `argparse`
- `sys`
- `os`
- `json`
- `threading`
- `concurrent.futures`
- 第三方模块:
- `requests`
- `urllib3`
因此,最小依赖安装命令为:```bash
python3 -m pip install requests urllib3
对于可复现的部署,请在 requirements.txt 文件中固定依赖项。
示例:```text requests urllib3
---
## 安装
将项目克隆或复制到隔离的评估环境中。
示例:```bash
git clone <YOUR-REPOSITORY-URL>
cd <YOUR-REPOSITORY-DIRECTORY>
创建虚拟环境:```bash python3 -m venv .venv
激活它:```bash
source .venv/bin/activate
安装依赖:```bash python3 -m pip install -r requirements.txt
验证 Python:```bash
python3 --version
验证依赖项:```bash python3 -c "import requests, urllib3; print('Dependencies OK')"
> 将 `<YOUR-REPOSITORY-URL>` 和 `<YOUR-REPOSITORY-DIRECTORY>` 替换为你的仓库所使用的值。
---
## 命令行界面
源代码定义了以下命令行选项。
### 目标选择```text
-u, --url
单个目标 URL。```text -f, --file
包含目标 URL 的文件路径。
这些选项互斥,且必须指定其中之一。
### Payload 选择```text
--shell
本地自定义载荷文件的路径。
当前实现要求提供此参数。
-t, --threads
工作线程数。
默认值:```text
10
-v, --verbose
启用参数解析器暴露的详细标志。
注意:当前源代码定义了此选项,但并未使用 `args.verbose` 实质性地改变输出行为。
### 输出选项```text
-o, --output
参数由解析器定义,但当前实现写入最终结果时并未使用 args.output。当前结果路径被硬编码为:```text
ELV_CVE/success.txt
这是一个值得在后续版本中修复的实现细节。
---
## 输入文件
### 目标列表
目标列表模式要求每行一个 URL。
空行会被忽略。
以 `#` 开头的行会被忽略。
概念格式:```text
https://authorized-target-01.example
https://authorized-target-02.example
# laboratory target
https://authorized-target-03.example
仅应将您明确获授权评估的目标放入该文件。
--shell 参数指向一个本地文件,程序将其作为文本读取。
所提供的源代码除了成功读取文件外,不会验证文件的内容。
为了安全地进行开发和测试,请使用无害的测试夹具,而不是执行命令的 payload。
程序会创建:```text ELV_CVE/
对于多目标模式,它会写入:```text
ELV_CVE/success.txt
当前源将成功的 shell URL 写入此文件。
示例结果格式:```text https://authorized-lab.example/path/to/result
程序还会打印一份完成摘要,其中包含成功结果数量与已加载目标数量的对比。
---
## 并发
多目标模式使用:```python
ThreadPoolExecutor
配置的线程数默认为 10。
更高的并发可能会增加:
对于受控评估,请从较低的并发值开始,仅在环境和授权允许时才增加该值。
所提供的实现使用 requests.Session() 进行 HTTP 通信。
主要的网络操作包括:
源代码使用了显式的请求超时:
这些值在当前源代码中是硬编码的。
该实现设置了:```python s.verify = False
并抑制 `InsecureRequestWarning`。
这意味着证书验证已被禁用。
在带有自签名证书的一次性实验环境中,这可能有用,但**不建议用于正常的生产安全工具**。
更安全的实现应将证书验证设为可配置,并默认保持验证启用。
---
## 日志记录与结果
源代码在 `safe_print()` 周围使用线程锁,以减少工作线程之间的输出冲突。
典型的状态类别包括:```text
failed
success
结果对象还可以包含如下字段:```text url status reason shell_url
多目标收集器还会检查:```text
uploaded_hidden
然而,所提供的 exploit() 实现目前并不会返回该状态。
这表明结果模型存在一个可以在未来版本中清理改进的地方。
当前实现处理了以下几种失败情况:
失败的 HTTP 请求会被记录为失败目标,并附带异常消息。
如果初始 GET 请求未返回 HTTP 200,则停止对该目标的处理。
如果无法提取预期的令牌,则该目标会被报告为漏洞检查失败。
上传请求期间的异常会被捕获,脚本会继续尝试下一个扩展名/路径。
如果本地载荷文件不存在,程序会以错误终止。
交互式通道会处理 KeyboardInterrupt 并退出会话。
所提供源代码中的主要函数如下:
safe_print(msg)线程安全的控制台输出辅助函数。
read_custom_shell(filepath)以 UTF-8 文本形式读取本地载荷文件,并忽略解码错误。
interactive_shell(shell_url)在报告成功的 shell 路径后,提供交互式 HTTP 命令接口。
exploit(url, shell_content, interactive=False)执行目标处理工作流并返回结果字典。
main()处理以下内容:
本项目具有若干安全敏感特性,使用前应予以了解。
交互模式能够向远程 HTTP 端点发送命令。这使其比被动扫描器敏感得多。
请勿随意暴露或分发可操作的载荷。
当前实现中禁用了 TLS 证书验证。
在将该项目视为成熟的安全工具之前,应纠正此问题。
载荷直接从本地文件加载,并作为 HTTP 请求的一部分提交。
请将载荷文件视为可执行的安全测试材料。
当前源代码未实现强授权或允许列表机制。
更安全的内部版本应支持显式的目标允许列表。
当前实现未提供全面的速率限制器。
因此,应谨慎控制并发请求。
结果文件可能包含与成功利用尝试相关的 URL。请将这些文件作为敏感评估数据加以保护。
专业的评估工作流应如下所示:```text Authorization ↓ Define Scope ↓ Prepare Isolated Test Environment ↓ Confirm Target Ownership / Permission ↓ Perform Minimal Verification ↓ Collect Evidence ↓ Stop Exploitation Once Proof Is Established ↓ Remediate ↓ Retest ↓ Document Findings
漏洞评估的目标应当是在**必要影响最小化**的前提下确立风险,而不是获取不受限制的访问权限。
---
## 推荐的实验环境搭建
用于开发时,请创建一个专用环境,其中包含:
- 一台隔离的 Linux 虚拟机;
- 一个本地 Web 服务器;
- 一个测试用 Joomla 安装实例;
- 相关的 JCE 组件/版本;
- 网络隔离;
- 快照/备份;
- 测试账户;
- 应用程序和 Web 服务器日志。
避免针对无关的生产系统进行测试。
---
## 故障排除
### `ModuleNotFoundError: No module named 'requests'`
安装 Python 依赖:```bash
python3 -m pip install requests urllib3
确认提供的路径存在且可读:```bash ls -l
### 初始 HTTP 请求失败
检查:
- URL 正确性;
- DNS;
- 网络连通性;
- HTTP/HTTPS 可用性;
- 防火墙规则;
- 目标范围;
- 服务器日志。
### 未检测到 CSRF token