
Prova de conceito para uma vulnerabilidade de injeção de SQL não autenticada no XOne Web Monitor que permite extração de credenciais e de dados por meio de requisições POST elaboradas.
Autor: Javier Carabantes
Software Afetado: XOne Web Monitor
Software: https://xone.es/
Versão Afetada: 02.10.2024.530 framework 1.0.4.9
Foi descoberta uma vulnerabilidade de injeção SQL não autenticada na funcionalidade de login do XOne Web Monitor versão 02.10.2024.530 framework 1.0.4.9. Essa falha permite que atacantes explorem o tratamento inadequado da entrada do usuário durante o processo de autenticação para extrair todos os nomes de usuário e senhas armazenados. Especificamente, o design do endpoint de login permite que atacantes manipulem uma cláusula WHERE por meio de um parâmetro de entrada vulnerável.
/webcore/api/itf/DoAction
O seguinte demonstra como a vulnerabilidade pode ser explorada usando uma requisição POST elaborada para a versão vulnerável:

Quando um login inválido é fornecido, como "test:test", a seguinte requisição é enviada
POST /webcore/api/itf/DoAction HTTP/1.1
Host: redacted:44330
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://redacted:44330/
Content-Type: application/json
Authorization: Bearer redacted
Content-Length: 124
Origin: http://redacted:44330
Connection: keep-alive
{"action":"select","count":false,"page":{},"coll":"Usuarios","macros":{},"where":"(LOGIN='test')","sort":"","loadall":false}
Observe como a senha não é enviada e o nome de usuário é envolvido em uma propriedade where. Alterar o operador do campo LOGIN fornecerá a lista completa de usuários e senhas em texto claro:

A resposta revela a lista de todos os nomes de usuário e suas respectivas senhas armazenadas no banco de dados. Qualquer usuário tem a capacidade de acessar e obter dados sensíveis (clientes, cargo do funcionário, etc.).

Essa vulnerabilidade de injeção SQL também suporta o uso de consultas UNION em MSSQL, permitindo que atacantes enumerem e recuperem dados de outras tabelas no banco de dados.

A mesma injeção permite LFD se o atacante souber o caminho absoluto, por exemplo, a leitura de C:/windows/system32/grouppolicy/machine/registry.pol, um arquivo privilegiado:

O fornecedor foi notificado sobre esta vulnerabilidade durante a semana de 11/11/2024.
A página web mostrada no PoC foi despublicada.