hacktricks/network-services-pentesting/pentesting-web/code-review-tools.md

239 lines
16 KiB
Markdown
Raw Normal View History

2023-06-06 18:56:34 +00:00
# Ferramentas de Revisão de Código
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- 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)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **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)**.**
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-06 18:56:34 +00:00
## Geral
2020-11-10 09:27:45 +00:00
2022-09-27 00:18:19 +00:00
* [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)\
* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis)
2020-11-10 09:27:45 +00:00
```bash
https://www.sonarqube.org/downloads/
https://deepsource.io/signup/
https://github.com/pyupio/safety
https://github.com/returntocorp/semgrep
https://github.com/WhaleShark-Team/cobra
2021-09-25 13:27:46 +00:00
https://github.com/insidersec/insider
2020-11-10 09:27:45 +00:00
# Find interesting strings
https://github.com/s0md3v/hardcodes
https://github.com/micha3lb3n/SourceWolf
https://libraries.io/pypi/detect-secrets
```
2022-05-07 10:35:17 +00:00
## JavaScript
2023-06-06 18:56:34 +00:00
### Descoberta
2022-09-02 04:20:58 +00:00
1. Burp:
2023-06-06 18:56:34 +00:00
- Spider e descobrir conteúdo
- Sitemap > filtro
- Sitemap > clique com o botão direito do mouse no domínio > Ferramentas de engajamento > Encontrar scripts
2022-09-02 04:20:58 +00:00
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
2023-06-06 18:56:34 +00:00
- `waybackurls <domínio> |grep -i "\.js" |sort -u`
### Análise estática
#### Desminificar/Embelezar/Formatar
2022-09-02 04:20:58 +00:00
https://prettier.io/playground/
https://beautifier.io/
2023-06-06 18:56:34 +00:00
#### Desofuscar/Descompactar
__Nota__: Pode não ser possível desofuscar completamente.
1. Encontre e use arquivos .map:
- Se os arquivos .map estiverem expostos, eles podem ser usados para desofuscar facilmente.
- Comumente, foo.js.map mapeia para foo.js. Procure manualmente por eles.
- Use [JS Miner](https://github.com/PortSwigger/js-miner) para procurá-los.
- Certifique-se de que a verificação ativa seja realizada.
- Leia '[Dicas/Notas](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
- Se encontrados, use [Maximize](https://www.npmjs.com/package/maximize) para desofuscar.
2. Sem arquivos .map, tente JSnice:
- Referências: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
- Dicas:
- Se estiver usando jsnice.org, clique no botão de opções ao lado do botão "Nicify JavaScript" e desmarque "Infer types" para reduzir a desordem no código com comentários.
- Certifique-se de não deixar nenhuma linha vazia antes do script, pois isso pode afetar o processo de desofuscação e fornecer resultados imprecisos.
2022-09-02 04:20:58 +00:00
3. Use console.log(<packerReturnVariable>);
2023-06-06 18:56:34 +00:00
- Encontre o valor de retorno no final e altere-o para `console.log(<packerReturnVariable>);` para que o js desofuscado seja impresso em vez de ser executado.
- Em seguida, cole o js modificado (e ainda ofuscado) em https://jsconsole.com/ para ver o js desofuscado registrado no console.
- Finalmente, cole a saída desofuscada em https://prettier.io/playground/ para embelezá-la para análise.
- __Nota__: Se você ainda estiver vendo js compactado (mas diferente), ele pode estar compactado recursivamente. Repita o processo.
#### Analisar
Referências:
2022-09-02 04:20:58 +00:00
https://medium.com/techiepedia/javascript-code-review-guide-for-bug-bounty-hunters-c95a8aa7037a
2023-06-06 18:56:34 +00:00
Procure por:
- Carregamento anti-depurador
2022-09-02 04:20:58 +00:00
- Angular: [enableProdMode](https://blog.nvisium.com/angular-for-pentesters-part-2)
2023-06-06 18:56:34 +00:00
- Segredos
2022-09-02 04:20:58 +00:00
- Use:
- [JS Miner](https://github.com/PortSwigger/js-miner)
2023-06-06 18:56:34 +00:00
- [RegHex](https://github.com/l4yton/RegHex) padrões
- [gf](https://github.com/tomnomnom/gf/tree/master/examples) padrões
- Grep padrões relevantes do dicionário:
2022-09-02 04:20:58 +00:00
- pass, user, admin
- auth, login, sign, challenge, 2fa
- key, apikey, api_key, api-key, jwt, token
- secret, security, secure
- ...
2023-06-06 18:56:34 +00:00
- Revisão manual
- Se a chave da API for encontrada, verifique aqui a sintaxe potencial de uso: https://github.com/streaak/keyhacks.
- Funções vulneráveis
- InnerHTML() - Se você encontrou 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. Trace o código para descobrir onde a sanitização ocorre. 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ê notaria que 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.
- String.prototype.search() - Esta função parece normal. Por que seria uma função perigosa? Bem, é porque alguns desenvolvedores usaram isso para encontrar a ocorrência de uma string dentro de outra string. No entanto, "." é tratado como curinga nesta função. Então, se esta função for usada como verificação de sanitização, você pode simplesmente contorná-la inserindo ".". Confira o relatório do hackerone do Filedescryptor: https://hackerone.com/reports/129873
- Endpoints e parâmetros
2022-09-02 04:20:58 +00:00
- Use [LinkFinder](https://github.com/GerbenJavado/LinkFinder) & [JS Miner](https://github.com/PortSwigger/js-miner).
2023-06-06 18:56:34 +00:00
- Bibliotecas e dependências vulneráveis
- Use [Retire.js](https://retirejs.github.io/retire.js/) e [NPM](https://snyk.io/advisor/) (role para baixo até a seção de segurança > link de todas as versões).
- URLs de nuvem
2022-09-02 04:20:58 +00:00
- Use [JS Miner](https://github.com/PortSwigger/js-miner).
2023-06-06 18:56:34 +00:00
- Subdomínios
2022-09-02 04:20:58 +00:00
- Use [JS Miner](https://github.com/PortSwigger/js-miner).
2023-06-06 18:56:34 +00:00
- Falhas de lógica
- Obtenha consciência situacional:
2022-09-02 04:20:58 +00:00
- `use strict;`?
2023-06-06 18:56:34 +00:00
- Grep para controles do lado do cliente:
2022-09-02 04:20:58 +00:00
- disable, enable, hidden, hide, show
- catch, finally, throw, try
- input, validate, verify, valid, correct, check, confirm, require, ..
2023-06-06 18:56:34 +00:00
- Grep para não-primitivos:
2022-09-02 04:20:58 +00:00
- function , =>
- class
2023-06-06 18:56:34 +00:00
### Análise dinâmica
2022-09-02 04:20:58 +00:00
2023-06-06 18:56:34 +00:00
Referências
2022-09-02 04:20:58 +00:00
- https://www.youtube.com/watch?v=_v8r_t4v6hQ
- https://blog.nvisium.com/angular-for-pentesters-part-1
- https://blog.nvisium.com/angular-for-pentesters-part-2
2023-06-06 18:56:34 +00:00
Ferramentas
2022-09-02 04:20:58 +00:00
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader
2023-06-06 18:56:34 +00:00
#### Referências menos usadas
2022-09-02 04:20:58 +00:00
- https://cyberchef.org/
- https://olajs.com/javascript-prettifier
- https://jshint.com/
- https://github.com/jshint/jshint/
2020-11-10 09:27:45 +00:00
2022-05-07 10:35:17 +00:00
## NodeJS
2022-04-11 00:18:13 +00:00
```
2020-11-10 09:27:45 +00:00
https://github.com/ajinabraham/nodejsscan
```
2022-05-07 10:35:17 +00:00
## Electron
2020-11-10 09:27:45 +00:00
2023-06-06 18:56:34 +00:00
Electron é um framework de código aberto criado pela equipe do GitHub. Ele permite que os desenvolvedores criem aplicativos de desktop multiplataforma usando tecnologias web como HTML, CSS e JavaScript. O Electron é usado por muitos aplicativos populares, incluindo o Slack, o Visual Studio Code e o Discord.
Embora o Electron seja uma ferramenta poderosa para criar aplicativos de desktop, ele também pode ser uma fonte de vulnerabilidades de segurança. Os aplicativos do Electron são executados em um ambiente de navegador incorporado, o que significa que eles têm acesso a muitos recursos do sistema operacional, como o sistema de arquivos e a rede. Isso pode ser útil para os desenvolvedores, mas também pode ser explorado por atacantes.
Os testadores de segurança devem estar cientes das vulnerabilidades comuns do Electron, como a execução remota de código (RCE) e a injeção de código malicioso. Eles também devem estar familiarizados com as ferramentas de análise de segurança do Electron, como o Electron Security Checklist e o Electron Scanner, para ajudar a identificar possíveis vulnerabilidades em aplicativos do Electron.
2022-04-11 00:18:13 +00:00
```
2020-11-10 09:27:45 +00:00
https://github.com/doyensec/electronegativity
```
2022-05-07 10:35:17 +00:00
## Python
2020-11-10 09:27:45 +00:00
2023-06-06 18:56:34 +00:00
Python é uma linguagem de programação popular usada em muitas aplicações, incluindo desenvolvimento web. É uma linguagem interpretada, o que significa que o código é executado linha por linha em tempo de execução. Python é conhecido por sua sintaxe clara e concisa, tornando-o uma escolha popular para iniciantes em programação.
Algumas ferramentas úteis para revisão de código Python incluem:
- **Pylint**: uma ferramenta de análise de código que verifica se o código Python está em conformidade com as convenções de codificação definidas pela PEP 8. Ele também pode detectar erros comuns de programação, como variáveis não utilizadas e referências indefinidas.
- **Pyflakes**: uma ferramenta de análise de código que verifica se o código Python tem erros de sintaxe ou referências indefinidas.
- **Bandit**: uma ferramenta de segurança de código que verifica se o código Python tem vulnerabilidades de segurança conhecidas.
- **Mypy**: uma ferramenta de análise de tipo estático que verifica se o código Python tem erros de tipo.
- **Black**: uma ferramenta de formatação de código que ajuda a manter a consistência do estilo de código Python em um projeto.
2020-11-10 09:27:45 +00:00
```bash
# bandit
https://github.com/PyCQA/bandit
# pyt
https://github.com/python-security/pyt
```
2022-05-07 10:35:17 +00:00
## .NET
2020-11-10 09:27:45 +00:00
2023-06-06 18:56:34 +00:00
O .NET é uma plataforma de desenvolvimento de software da Microsoft que é amplamente utilizada para criar aplicativos Windows e Web. Ele fornece uma estrutura de desenvolvimento de software que inclui uma linguagem de programação (C # ou VB.NET), um ambiente de tempo de execução e uma biblioteca de classes. O .NET é uma plataforma poderosa e flexível que permite aos desenvolvedores criar aplicativos de alta qualidade com facilidade.
### Ferramentas de Revisão de Código .NET
Existem várias ferramentas de revisão de código disponíveis para o .NET que podem ajudar a identificar vulnerabilidades de segurança em seu código. Algumas das ferramentas mais populares incluem:
- **Visual Studio**: O Visual Studio inclui uma série de ferramentas de análise de código que podem ajudar a identificar problemas de segurança em seu código .NET. Essas ferramentas incluem o Code Analysis, que verifica seu código em busca de problemas de segurança e o FxCop, que verifica seu código em busca de conformidade com as diretrizes de codificação.
- **ReSharper**: O ReSharper é uma ferramenta de revisão de código para o Visual Studio que pode ajudar a identificar problemas de segurança em seu código .NET. Ele fornece sugestões de correção de código em tempo real e pode ajudar a melhorar a qualidade do seu código.
- **NDepend**: O NDepend é uma ferramenta de análise de código que pode ajudar a identificar problemas de segurança em seu código .NET. Ele fornece uma análise detalhada do seu código e pode ajudar a identificar áreas que precisam de melhorias de segurança.
- **SonarQube**: O SonarQube é uma plataforma de análise de código que pode ajudar a identificar problemas de segurança em seu código .NET. Ele fornece uma análise detalhada do seu código e pode ajudar a identificar áreas que precisam de melhorias de segurança.
- **Fortify**: O Fortify é uma ferramenta de análise de segurança que pode ajudar a identificar vulnerabilidades de segurança em seu código .NET. Ele fornece uma análise detalhada do seu código e pode ajudar a identificar áreas que precisam de melhorias de segurança.
2020-11-10 09:27:45 +00:00
```bash
# dnSpy
https://github.com/0xd4d/dnSpy
# .NET compilation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
```
2022-05-07 10:35:17 +00:00
## Java
2020-11-10 09:27:45 +00:00
2023-06-06 18:56:34 +00:00
Java é uma linguagem de programação popular usada para desenvolver aplicativos em várias plataformas. É uma linguagem orientada a objetos e é executada em uma máquina virtual Java (JVM). A JVM permite que o código Java seja executado em qualquer plataforma que tenha uma JVM instalada. O Java é usado em muitos aplicativos da web e é uma das linguagens mais populares para desenvolvimento de aplicativos Android.
2020-11-10 09:27:45 +00:00
```bash
# JD-Gui
https://github.com/java-decompiler/jd-gui
# Java compilation step-by-step
javac -source 1.8 -target 1.8 test.java
mkdir META-INF
echo "Main-Class: test" > META-INF/MANIFEST.MF
jar cmvf META-INF/MANIFEST.MF test.jar test.class
```
2023-06-06 18:56:34 +00:00
| Tarefa | Comando |
| ---------------- | --------------------------------------------------------- |
| Executar Jar | java -jar \[jar] |
| Descompactar Jar | unzip -d \[diretório de saída] \[jar] |
| Criar Jar | jar -cmf META-INF/MANIFEST.MF \[jar de saída] \* |
| Base64 SHA256 | sha256sum \[arquivo] \| cut -d' ' -f1 \| xxd -r -p \| base64 |
| Remover Assinatura| rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Excluir do Jar | zip -d \[jar] \[arquivo a ser removido] |
| Descompilar classe | procyon -o . \[caminho para a classe] |
| Descompilar Jar | procyon -jar \[jar] -o \[diretório de saída] |
| Compilar classe | javac \[caminho para o arquivo .java] |
2021-05-26 11:18:48 +00:00
```bash
https://github.com/securego/gosec
```
2022-05-07 10:35:17 +00:00
## PHP
2023-06-06 18:56:34 +00:00
[Psalm](https://phpmagazine.net/2018/12/find-errors-in-your-php-applications-with-psalm.html) e [PHPStan](https://phpmagazine.net/2020/09/phpstan-pro-edition-launched.html).
2023-06-06 18:56:34 +00:00
### Plugins do Wordpress
2022-04-11 00:18:13 +00:00
2022-05-07 10:35:17 +00:00
[https://www.pluginvulnerabilities.com/plugin-security-checker/](https://www.pluginvulnerabilities.com/plugin-security-checker/)
2022-04-28 16:01:33 +00:00
2022-05-07 10:35:17 +00:00
## Solidity
* [https://www.npmjs.com/package/solium](https://www.npmjs.com/package/solium)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- 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)!
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- 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)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **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)**.**
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>