15 KiB
Herramientas de revisión de código
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén el swag oficial de PEASS y HackTricks
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.
General
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
Descubrimiento
- Burp:
- Spider y descubrir contenido
- Sitemap > filtro
- Sitemap > clic derecho en el dominio > Herramientas de compromiso > Buscar scripts
- WaybackURLs:
waybackurls <dominio> |grep -i "\.js" |sort -u
Análisis estático
Desminimizar/Embellecer
https://prettier.io/playground/ https://beautifier.io/
Desofuscar/Desempaquetar
Nota: Puede que no sea posible desofuscar completamente.
- Encontrar y usar archivos .map:
- Si los archivos .map están expuestos, se pueden usar para desofuscar fácilmente.
- Comúnmente, foo.js.map mapea a foo.js. Búscalos manualmente.
- Usa JS Miner para buscarlos.
- Asegúrate de que se realice un escaneo activo.
- Lee 'Consejos/Notas'
- Si se encuentran, usa Maximize para desofuscar.
- Sin archivos .map, prueba JSnice:
- Referencias: http://jsnice.org/ y https://www.npmjs.com/package/jsnice
- Consejos:
- Si usas jsnice.org, haz clic en el botón de opciones junto al botón "Nicify JavaScript" y desmarca "Infer types" para reducir el desorden en el código con comentarios.
- Asegúrate de no dejar ninguna línea vacía antes del script, ya que puede afectar al proceso de desofuscación y dar resultados inexactos.
- Usa console.log();
- Encuentra el valor de retorno al final y cámbialo a
console.log(<packerReturnVariable>);
para que se imprima el js desofuscado en lugar de ejecutarse. - Luego, pega el js modificado (y aún ofuscado) en https://jsconsole.com/ para ver el js desofuscado registrado en la consola.
- Finalmente, pega la salida desofuscada en https://prettier.io/playground/ para embellecerla para su análisis.
- Nota: Si aún ves js empaquetado (pero diferente), puede estar empaquetado recursivamente. Repite el proceso.
- Encuentra el valor de retorno al final y cámbialo a
Analizar
Referencias: https://medium.com/techiepedia/javascript-code-review-guide-for-bug-bounty-hunters-c95a8aa7037a
Busca:
- Carga anti-depuración
- Angular: enableProdMode
- Secretos
- Usa:
- Si se encuentra una clave de API, comprueba aquí la sintaxis de uso potencial: https://github.com/streaak/keyhacks.
- Funciones vulnerables
- InnerHTML() - Si encuentras esto, significa que hay una posibilidad potencial de XSS si no se realiza una sanitización adecuada. Incluso si tu carga útil está sanitizada, no te preocupes. Rastrea el código para averiguar dónde se realiza la sanitización. Estúdialo e intenta sortear la sanitización.
- Postmessage() - Si has leído mi publicación anterior (https://medium.com/techiepedia/what-are-sop-cors-and-ways-to-exploit-it-62a5e02100dc), notarás que Postmessage() podría llevar a un problema potencial de CORS. Si el segundo parámetro de la función se establece en *, eres afortunado. Consulta mi publicación anterior para entender más sobre el mecanismo detrás de esto.
- String.prototype.search() - Esta función parece normal. ¿Por qué sería una función peligrosa? Bueno, es porque algunos desarrolladores la usaron para encontrar la ocurrencia de una cadena dentro de otra cadena. Sin embargo, "." se trata como comodín en esta función. Así que, si esta función se usa como comprobación de sanitización, puedes simplemente sortearla introduciendo ".". Consulta el informe de hackerone de Filedescryptor: https://hackerone.com/reports/129873
- Endpoints y parámetros
- Usa LinkFinder y JS Miner.
- Bibliotecas y dependencias vulnerables
- URLs de la nube
- Usa JS Miner.
- Subdominios
- Usa JS Miner.
- Errores de lógica
- Obtén conciencia situacional:
use strict;
?
- Busca controles del lado del cliente:
- disable, enable, hidden, hide, show
- catch, finally, throw, try
- input, validate, verify, valid, correct, check, confirm, require, ..
- Busca no primitivos:
- function , =>
- class
- Obtén conciencia situacional:
Análisis dinámico
Referencias
- 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
Herramientas
Referencias menos utilizadas
- https://cyberchef.org/
- https://olajs.com/javascript-prettifier
- https://jshint.com/
- https://github.com/jshint/jshint/
NodeJS
https://github.com/ajinabraham/nodejsscan
Electron
Electron es un framework de código abierto que permite crear aplicaciones de escritorio multiplataforma utilizando tecnologías web como HTML, CSS y JavaScript. Es utilizado por muchas aplicaciones populares como Slack, Discord y Visual Studio Code.
Sin embargo, debido a su naturaleza basada en web, las aplicaciones de Electron pueden ser vulnerables a ataques comunes de seguridad web, como XSS y CSRF. Es importante realizar una revisión de código exhaustiva para identificar y corregir posibles vulnerabilidades en la aplicación de Electron.
https://github.com/doyensec/electronegativity
Python
Python es un lenguaje de programación popular utilizado en el desarrollo de aplicaciones web y en la creación de herramientas de hacking. Algunas de las bibliotecas más utilizadas en el hacking son requests
, beautifulsoup4
, selenium
y scrapy
.
Requests
es una biblioteca utilizada para enviar solicitudes HTTP/HTTPS a un servidor web y recibir respuestas. BeautifulSoup4
es una biblioteca utilizada para analizar y extraer información de documentos HTML y XML. Selenium
es una biblioteca utilizada para automatizar pruebas en navegadores web. Scrapy
es un framework utilizado para extraer datos de sitios web de manera estructurada.
Python también es utilizado en la creación de herramientas de hacking personalizadas, como scripts de automatización de tareas repetitivas, herramientas de escaneo de puertos y vulnerabilidades, y herramientas de explotación de vulnerabilidades.
# bandit
https://github.com/PyCQA/bandit
# pyt
https://github.com/python-security/pyt
.NET
.NET es un framework de software desarrollado por Microsoft que se utiliza para construir aplicaciones de Windows y web. Es un entorno de tiempo de ejecución que permite a los desarrolladores escribir aplicaciones en varios lenguajes de programación, como C#, VB.NET y F#. Además, .NET proporciona una amplia biblioteca de clases y funciones que los desarrolladores pueden utilizar para crear aplicaciones de alta calidad de manera eficiente. En términos de seguridad, .NET tiene algunas características útiles, como la capacidad de implementar la autenticación y la autorización en las aplicaciones. Sin embargo, también puede ser vulnerable a ciertos tipos de ataques, como la inyección de SQL y la falsificación de solicitudes entre sitios (CSRF). Por lo tanto, es importante que los desarrolladores de .NET sean conscientes de estas vulnerabilidades y tomen medidas para proteger sus aplicaciones.
# dnSpy
https://github.com/0xd4d/dnSpy
# .NET compilation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
Java
Java es un lenguaje de programación popular utilizado en el desarrollo de aplicaciones empresariales y de servidor. Es conocido por su portabilidad, seguridad y capacidad para manejar grandes cantidades de datos. Sin embargo, también es conocido por ser vulnerable a ciertos tipos de ataques, como la inyección de código y la deserialización no segura.
Herramientas de revisión de código Java
- FindBugs - Herramienta de análisis estático de código que busca errores de programación comunes en Java.
- Checkstyle - Herramienta de análisis estático de código que busca violaciones de estilo de codificación en Java.
- PMD - Herramienta de análisis estático de código que busca errores de programación comunes en Java y otros lenguajes.
- SonarQube - Plataforma de análisis de código que proporciona informes detallados sobre la calidad del código, la seguridad y la cobertura de pruebas.
- Eclipse IDE - Entorno de desarrollo integrado que incluye herramientas de análisis de código para Java.
- IntelliJ IDEA - Entorno de desarrollo integrado que incluye herramientas de análisis de código para Java.
Es importante utilizar estas herramientas para identificar y corregir vulnerabilidades en el código Java antes de que puedan ser explotadas por atacantes.
# 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
Tarea | Comando |
---|---|
Ejecutar Jar | java -jar [jar] |
Descomprimir Jar | unzip -d [directorio de salida] [jar] |
Crear Jar | jar -cmf META-INF/MANIFEST.MF [jar de salida] * |
Base64 SHA256 | sha256sum [archivo] | cut -d' ' -f1 | xxd -r -p | base64 |
Eliminar Firma | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Eliminar de Jar | zip -d [jar] [archivo a eliminar] |
Descompilar clase | procyon -o . [ruta de la clase] |
Descompilar Jar | procyon -jar [jar] -o [directorio de salida] |
Compilar clase | javac [ruta del archivo .java] |
Go
https://github.com/securego/gosec
PHP
Plugins de Wordpress
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén el swag oficial de PEASS y HackTricks
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PR al repositorio hacktricks y al repositorio hacktricks-cloud.