Translated ['network-services-pentesting/pentesting-web/code-review-tool

This commit is contained in:
Translator 2023-09-10 22:56:35 +00:00
parent 65e6a6c4d3
commit ea81cdd21e

View file

@ -219,7 +219,7 @@ echo $FINAL_MSG
Você pode visualizar as descobertas em [**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/) ou usando a extensão do VSCode [**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer).
Você também pode usar a [**extensão do VSCode**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) para obter as descobertas dentro do VSCode. Ainda será necessário criar um banco de dados manualmente, mas depois você pode selecionar qualquer arquivo e clicar em `Right Click` -> `CodeQL: Run Queries in Selected Files`
Você também pode usar a [**extensão do VSCode**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) para obter as descobertas dentro do VSCode. Ainda será necessário criar um banco de dados manualmente, mas então você pode selecionar qualquer arquivo e clicar em `Right Click` -> `CodeQL: Run Queries in Selected Files`
### [**Snyk**](https://snyk.io/product/snyk-code/)
@ -279,6 +279,14 @@ cd /path/to/repo
yarn audit
npm audit
```
* **`pnpm`**
```bash
# Install
npm install -g pnpm
# Run
cd /path/to/repo
pnpm audit
```
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Scanner estático de código de segurança (SAST) para aplicações Node.js alimentado por [libsast](https://github.com/ajinabraham/libsast) e [semgrep](https://github.com/returntocorp/semgrep).
```bash
# Install & run
@ -376,29 +384,29 @@ cargo audit fetch
```
## Java
Java é uma linguagem de programação popular que é amplamente utilizada para desenvolvimento de aplicativos web. Ao realizar uma revisão de código em um aplicativo Java, existem várias ferramentas úteis que podem ajudar a identificar possíveis vulnerabilidades de segurança. Aqui estão algumas das principais ferramentas de revisão de código para Java:
Java é uma linguagem de programação popular usada para desenvolver aplicativos e serviços da web. É importante revisar o código Java em busca de vulnerabilidades de segurança durante o processo de teste de penetração. Existem várias ferramentas disponíveis para ajudar nessa tarefa.
### 1. FindBugs
### FindBugs
O FindBugs é uma ferramenta de análise estática de código que pode identificar bugs potenciais em um código Java. Ele pode detectar problemas como uso incorreto de APIs, erros de programação e vulnerabilidades de segurança. O FindBugs fornece relatórios detalhados sobre os problemas encontrados, permitindo que os desenvolvedores corrijam os problemas antes que eles se tornem vulnerabilidades reais.
O FindBugs é uma ferramenta de análise estática de código que pode ser usada para encontrar possíveis bugs e vulnerabilidades em código Java. Ele examina o código em busca de padrões conhecidos de erros e fornece sugestões para corrigi-los. O FindBugs pode ser integrado a IDEs populares, como o Eclipse, para facilitar a revisão do código.
### 2. PMD
### PMD
O PMD é outra ferramenta de análise estática de código que pode ajudar a identificar problemas de qualidade de código em um aplicativo Java. Ele verifica o código em busca de más práticas de programação, código duplicado, variáveis não utilizadas e outros problemas que podem levar a vulnerabilidades de segurança. O PMD também fornece sugestões de correção para os problemas encontrados.
O PMD é outra ferramenta de análise estática de código que pode ser usada para encontrar problemas de código em Java. Ele verifica o código em busca de más práticas de programação, como variáveis não utilizadas, código duplicado e uso incorreto de APIs. O PMD também pode ser integrado a IDEs populares para facilitar a revisão do código.
### 3. Checkstyle
### Checkstyle
O Checkstyle é uma ferramenta de análise de código que verifica se o código Java está em conformidade com um conjunto de regras de codificação predefinidas. Ele pode ajudar a garantir que o código siga as melhores práticas de codificação e evite vulnerabilidades comuns. O Checkstyle pode ser configurado para verificar regras específicas, como o uso de chaves em blocos de código, a formatação correta de nomes de variáveis e métodos, entre outros.
O Checkstyle é uma ferramenta de análise de código que verifica se o código Java está em conformidade com um conjunto de regras de codificação predefinidas. Ele pode ser usado para garantir que o código siga as melhores práticas de codificação e padrões de estilo. O Checkstyle também pode ser integrado a IDEs populares para facilitar a revisão do código.
### 4. SonarQube
### SonarQube
O SonarQube é uma plataforma de análise de código que suporta várias linguagens de programação, incluindo Java. Ele fornece uma análise abrangente do código-fonte, identificando problemas de qualidade de código, vulnerabilidades de segurança e dívidas técnicas. O SonarQube também oferece recursos avançados, como integração contínua e rastreamento de métricas de código ao longo do tempo.
O SonarQube é uma plataforma de análise de código que pode ser usada para revisar o código Java em busca de problemas de qualidade e segurança. Ele fornece métricas detalhadas sobre o código, como complexidade, duplicação e vulnerabilidades conhecidas. O SonarQube pode ser integrado a pipelines de CI/CD para automatizar a revisão do código.
### 5. FindSecBugs
### OWASP Dependency Check
O FindSecBugs é uma extensão do FindBugs que se concentra especificamente em encontrar vulnerabilidades de segurança em aplicativos Java. Ele usa uma abordagem baseada em regras para identificar problemas de segurança comuns, como injeção de SQL, XSS (Cross-Site Scripting) e autenticação fraca. O FindSecBugs fornece relatórios detalhados sobre as vulnerabilidades encontradas, permitindo que os desenvolvedores as corrijam antes que sejam exploradas por hackers.
O OWASP Dependency Check é uma ferramenta que verifica as dependências do projeto Java em busca de vulnerabilidades conhecidas. Ele analisa as bibliotecas e frameworks usados no projeto e verifica se há versões conhecidas por terem vulnerabilidades conhecidas. O OWASP Dependency Check pode ser usado para garantir que as dependências do projeto estejam atualizadas e seguras.
Essas são apenas algumas das ferramentas de revisão de código disponíveis para Java. Ao usar essas ferramentas em conjunto, os desenvolvedores podem identificar e corrigir problemas de segurança em seus aplicativos, garantindo que eles sejam robustos e protegidos contra ataques.
Revisar o código Java em busca de vulnerabilidades é uma etapa importante no processo de teste de penetração. Usar ferramentas de análise estática de código, como o FindBugs, PMD e Checkstyle, pode ajudar a identificar problemas de segurança e melhorar a qualidade do código. Além disso, o uso de ferramentas como o SonarQube e o OWASP Dependency Check pode ajudar a garantir que o código esteja livre de vulnerabilidades conhecidas.
```bash
# JD-Gui
https://github.com/java-decompiler/jd-gui
@ -500,7 +508,7 @@ Procure por:
* Se a chave da API for encontrada, verifique aqui a sintaxe de uso potencial: https://github.com/streaak/keyhacks.
* Funções vulneráveis
* InnerHTML() - Se você encontrar isso, significa que há uma chance potencial de XSS se não houver uma sanitização adequada. Mesmo que sua carga útil esteja sanitizada, não se preocupe. Rastreie o código para descobrir onde ocorre a sanitização. Estude-o e tente contornar a sanitização.
* Postmessage() - Se você leu meu post anterior (https://medium.com/techiepedia/what-are-sop-cors-and-ways-to-exploit-it-62a5e02100dc), você perceberia que o Postmessage() pode levar a um possível problema de CORS. Se o segundo parâmetro da função for definido como \*, você é o sortudo. Confira meu post anterior para entender mais sobre o mecanismo por trás disso.
* Postmessage() - Se você leu meu post anterior (https://medium.com/techiepedia/what-are-sop-cors-and-ways-to-exploit-it-62a5e02100dc), você perceberá que o Postmessage() pode levar a um possível problema de CORS. Se o segundo parâmetro da função for definido como \*, você é o sortudo. Confira meu post anterior para entender mais sobre o mecanismo por trás disso.
* String.prototype.search() - Essa função parece normal. Por que seria uma função perigosa? Bem, é porque alguns desenvolvedores a usaram para encontrar a ocorrência de uma string dentro de outra string. No entanto, "." é tratado como caractere curinga nessa função. Portanto, se essa função for usada como verificação de sanitização, você pode simplesmente contorná-la inserindo ".". Confira o relatório do Filedescryptor no hackerone: https://hackerone.com/reports/129873
* Endpoints e parâmetros
* Use [LinkFinder](https://github.com/GerbenJavado/LinkFinder) e [JS Miner](https://github.com/PortSwigger/js-miner).
@ -544,7 +552,7 @@ Ferramentas
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? Ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do Telegram**](https://t.me/peass) ou **siga-me no Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**