
AVISO: Esta é uma aplicação vulnerável para testar o exploit da falha de controle de acesso quebrado do Jetpack < 13.9.1 (CVE-2024-9926). Execute por sua conta e risco!
Esta é uma aplicação vulnerável para testar o exploit para o Jetpack < 13.9.1 com controle de acesso quebrado (CVE-2024-9926).
Esta aplicação contém vulnerabilidades de segurança graves. Execute-a por sua conta e risco! É recomendado usar um ambiente isolado e com backup (como uma VM com snapshot recente e rede somente host). Não envie esta aplicação para qualquer servidor exposto à Internet, pois ela será comprometida.
AVISO LEGAL: Não me responsabilizo pela forma como qualquer pessoa usa esta aplicação. O único propósito desta aplicação é servir como cenário de teste para o exploit do controle de acesso quebrado do Jetpack < 13.9.1 (CVE-2024-9926) e ela não deve ser usada maliciosamente. Se o seu servidor for comprometido por meio de uma instalação desta aplicação, a responsabilidade não é minha; é das pessoas que a enviaram e instalaram.
Aqui estão os passos para configurar o ambiente:
./up.sh para iniciar a composição.O contêiner será chamado vuln-wp-jetpack.
Para encerrar o ambiente, use o comando ./down.sh ou ./down_and_delete.sh para também remover as imagens e o volume do banco de dados.
Observando a correção, é trivial entender que a única verificação feita, tanto pelo método get_items_permissions_check() quanto pelo get_item_permissions_check(), é a associação do usuário ao blog.
Ambos os métodos são declarados na classe Contact_Form_Endpoint do arquivo automattic/jetpack-forms/src/contact-form/class-contact-form-endpoint.php. Como o comentário no início da classe diz, esta classe é...
Usada como parâmetro
rest_controller_classquando o tipo de postfeedbacké registrado em\Automattic\Jetpack\Forms\ContactForm\Contact_Form
Isso pode ser visto no arquivo automattic/jetpack-forms/src/contact-form/class-contact-form-plugin.php, na linha 201, onde o tipo de post personalizado feedback é registrado.
Os tipos disponíveis podem ser obtidos via APIs REST com uma requisição como a seguinte.
GET /?rest_route=/wp/v2/types
A resposta contém o tipo feedback.
Para explorar a vulnerabilidade, uma requisição como a seguinte é suficiente.
GET /?rest_route=/wp/v2/feedback
A requisição deve conter um cabeçalho de autorização com uma Application Password (senha de aplicativo) como a seguinte.
Authorization: Basic eW91cl91c2VybmFtZTp5b3VyX2FwcGxpY2F0aW9uX3Bhc3N3b3Jk
Um script de exploit em Python pode ser encontrado aqui.
Este projeto está licenciado sob a Unlicense - consulte o arquivo LICENSE para obter detalhes.