POC详情: 8972930e3010ef6a8f6d7dbfbfccf86bae6e74d3

来源
关联漏洞
标题: Swagger UI 输入验证错误漏洞 (CVE-2018-25031)
描述:Swagger UI是一款支持可视化API资源并能够与之进行交互的开源工具。 Swagger-api Swagger UI 4.1.3之前版本中存在安全漏洞,该漏洞源于软件缺少对于用户提交的URL数据过滤和转义。攻击者可以通过特制的URL数据利用该漏洞进行欺骗攻击并显示远程OpenAPI定义。
介绍
# 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).
文件快照

[4.0K] /data/pocs/8972930e3010ef6a8f6d7dbfbfccf86bae6e74d3 ├── [1.4K] main.py ├── [ 0] naovalido.txt ├── [5.3K] README.md ├── [ 22] sites_para_testar.txt ├── [ 0] valido.txt └── [ 81K] vuln.jpeg 0 directories, 6 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。