16 KiB
Ferramentas de Revisão de Código
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
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!
-
Descubra A Família PEASS, nossa coleção exclusiva de NFTs
-
Adquira o swag oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
Geral
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
https://github.com/insidersec/insider
# Find interesting strings
https://github.com/s0md3v/hardcodes
https://github.com/micha3lb3n/SourceWolf
https://libraries.io/pypi/detect-secrets
JavaScript
Descoberta
- Burp:
- Spider e descobrir conteúdo
- Sitemap > filtro
- Sitemap > clique com o botão direito do mouse no domínio > Ferramentas de engajamento > Encontrar scripts
- WaybackURLs:
waybackurls <domínio> |grep -i "\.js" |sort -u
Análise estática
Desminificar/Embelezar/Formatar
https://prettier.io/playground/ https://beautifier.io/
Desofuscar/Descompactar
Nota: Pode não ser possível desofuscar completamente.
- 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 para procurá-los.
- Certifique-se de que a verificação ativa seja realizada.
- Leia 'Dicas/Notas'
- Se encontrados, use Maximize para desofuscar.
- 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.
- Use console.log();
- 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.
- Encontre o valor de retorno no final e altere-o para
Analisar
Referências: https://medium.com/techiepedia/javascript-code-review-guide-for-bug-bounty-hunters-c95a8aa7037a
Procure por:
- Carregamento anti-depurador
- Angular: enableProdMode
- Segredos
- Use:
- 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
- Use LinkFinder & JS Miner.
- Bibliotecas e dependências vulneráveis
- URLs de nuvem
- Use JS Miner.
- Subdomínios
- Use JS Miner.
- Falhas de lógica
- Obtenha consciência situacional:
use strict;
?
- Grep para controles do lado do cliente:
- disable, enable, hidden, hide, show
- catch, finally, throw, try
- input, validate, verify, valid, correct, check, confirm, require, ..
- Grep para não-primitivos:
- function , =>
- class
- Obtenha consciência situacional:
Análise dinâmica
Referências
- 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
Ferramentas
Referências menos usadas
- https://cyberchef.org/
- https://olajs.com/javascript-prettifier
- https://jshint.com/
- https://github.com/jshint/jshint/
NodeJS
https://github.com/ajinabraham/nodejsscan
Electron
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.
https://github.com/doyensec/electronegativity
Python
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.
# bandit
https://github.com/PyCQA/bandit
# pyt
https://github.com/python-security/pyt
.NET
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.
# dnSpy
https://github.com/0xd4d/dnSpy
# .NET compilation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
Java
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.
# 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
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] |
https://github.com/securego/gosec
PHP
Plugins do Wordpress
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
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!
-
Descubra A Família PEASS, nossa coleção exclusiva de NFTs
-
Adquira o swag oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.