
Exploit PoC para CVE-2018-11736 que afeta versões do Pluck CMS anteriores à versão 4.7.7-dev2, com uma vulnerabilidade de upload de arquivos.
Aviso ⚠️: Este exploit foi desenvolvido em Rust principalmente como um exercício introdutório de aprendizado de programação. Por favor, desculpe qualquer falta de rigor técnico ou padrões de código não idiomáticos. Além disso, esta não é uma descoberta minha; contei com relatórios oficiais para escrever este exploit.
Exploit de PoC para CVE-2018-11736 que afeta versões do Pluck CMS anteriores à 4.7.7-dev2. A vulnerabilidade reside em /data/inc/images.php, que permite a um atacante enviar arquivos arbitrários. Ao enviar um arquivo .htaccess malicioso disfarçado com o tipo MIME image/jpeg, é possível forçar o servidor web a interpretar arquivos .jpg como scripts PHP, levando à execução arbitrária de código PHP.
Você precisa ter o Cargo instalado para compilar o main.rs.
cargo build
E um cookie de sessão autenticada válido da instância do Pluck CMS alvo é necessário:
./CVE-2018-11736 -h
CVE-2018-11736 exploit. Uploads a malicious .htaccess to force the web server to interpret .jpg files as PHP scripts, leading to Remote Code Execution (RCE)
Usage: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
Options:
-c, --cookie <COOKIE> Session Cookie (Once you have logged in succesfully). Format: xxxxxxxxxxxx
-u, --base-url <BASE_URL> Base URL (e.g. http://localhost)
-H, --hta-path <HTACCESS> Path to the .htaccess file
-i, --image-path <IMAGE> Path to the fake image file
-h, --help Print help
-V, --version Print version
Para garantir a reprodutibilidade e testes seguros, uma instância vulnerável do Pluck CMS v4.7.4-dev5 pode ser implantada usando Docker. Para implantá-la, você precisa baixar o .zip da versão vulnerável:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
Em seguida, execute o próximo comando no mesmo diretório dos arquivos docker:
docker-compose up -d
A aplicação web estará disponível em http://localhost:8080. Se você quiser abrir um TTY dentro do contêiner:
docker exec -it pluck-cms bash
Aqui está o PoC em ação, demonstrando o upload da configuração maliciosa e a RCE.