hacktricks/network-services-pentesting/pentesting-web/code-review-tools.md
2023-06-06 18:56:34 +00:00

16 KiB

Ferramentas de Revisão de Código

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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

  1. 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
  2. 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.

  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 para procurá-los.
    • Certifique-se de que a verificação ativa seja realizada.
    • Leia 'Dicas/Notas'
    • Se encontrados, use 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.
  3. 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.

Analisar

Referências: https://medium.com/techiepedia/javascript-code-review-guide-for-bug-bounty-hunters-c95a8aa7037a

Procure por:

  • Carregamento anti-depurador
  • Segredos
    • Use:
      • JS Miner
      • RegHex padrões
      • gf padrões
      • Grep padrões relevantes do dicionário:
        • pass, user, admin
        • auth, login, sign, challenge, 2fa
        • key, apikey, api_key, api-key, jwt, token
        • secret, security, secure
        • ...
      • 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
  • Bibliotecas e dependências vulneráveis
    • Use Retire.js e NPM (role para baixo até a seção de segurança > link de todas as versões).
  • URLs de nuvem
  • Subdomínios
  • 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

Análise dinâmica

Referências

Ferramentas

Referências menos usadas

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

Psalm e PHPStan.

Plugins do Wordpress

https://www.pluginvulnerabilities.com/plugin-security-checker/

Solidity

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥