
Hackeie este serviço para provar que o CVE-2022–29622 é válido
Este código foi criado para ajudar profissionais de segurança e desenvolvedores a entender por que eu acredito que o Formidable não era vulnerável ao CVE-2022-29622. Escrevi minha análise aqui: CVE-2022–29622: Análise de (In)vulnerabilidade
Como alguns não entenderam, pensei em ilustrar meu ponto usando código real e em execução.
O servidor está implementado em index.mjs. Ele usa a versão 3.1.4 do Formidable para enviar qualquer arquivo de sua escolha.
Configurei explicitamente o Formidable como mostrado abaixo:
{
uploadDir: './uploads/',
keepExtensions: true,
}
Dessa forma, todos os arquivos serão enviados para o diretório uploads. Habilitei o keepExtension para que você possa obter seus arquivos com um nome de arquivo malicioso enviado.
Para configurar e iniciar o servidor, execute os seguintes comandos a partir deste diretório:
npm install
npm run start
O primeiro comando instala todas as dependências, incluindo a versão apropriada do formidable. O segundo comando iniciará o servidor.
Depois de instalado e em execução, você pode acessar o formulário de upload de arquivos exposto pelo servidor em: http://127.0.0.1:3000/
Incluí dois arquivos com nome malicioso no diretório examples... como exemplos.
Os arquivos enviados usando o formulário em http://127.0.0.1:3000 serão carregados no diretório uploads.
O desafio é ver se você consegue provar que o formidable é vulnerável ao CVE-2022–29622. Para conseguir isso, você tem que fazer este servidor web executar código que você inclua no arquivo enviado ou no nome do arquivo.
As regras:
3000. Você NÃO DEVE modificar nenhum arquivo dentro deste diretório.Se você conseguir executar código arbitrário seguindo estritamente as regras acima, somente então você terá provado que o formidable era vulnerável à execução arbitrária de código.
Sugestão: Provavelmente a demonstração visual mais simples seria fazer o servidor imprimir uma string, por exemplo, "I'm awesome, I've got arbitrary code executed" no console onde você iniciou o servidor web.