Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
lightweight_static_analysis — Crea análisis estáticos útiles y ligeros utilizando herramientas de código abierto + un poquito de tu propio código | Kitploit
Herramientas/GitHubGitHub/nccgroup/lightweight_static_analysis
Análisis Estático de Código (SAST)Análisis de VulnerabilidadesAnálisis de CódigoScripting y AutomatizaciónSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHubnccgroup/lightweight_static_analysis

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

lightweight_static_analysis

Crea análisis estáticos útiles y ligeros utilizando herramientas de código abierto + un poquito de tu propio código

Ver Repositorio
134hace 6 añosAún no revisado

Análisis estático ligero

Este repositorio contiene el código del PoC de una charla de ShellCon 2019, «Crea el tuyo propio: Cómo escribir herramientas de análisis estático personalizadas y ligeras» (diapositivas).

En pocas palabras, este repositorio demuestra algunos ejemplos concretos de cómo puedes crear análisis estáticos interesantes utilizando herramientas de código abierto y una pequeña cantidad de código personalizado.

Ejemplos de código en este repositorio:

  1. Explorar de forma iterativa una base de código Rails para entender los controladores que define y los before_action que utiliza.
  2. Detectar inyección de comandos en aplicaciones NodeJS.

Cómo funcionan los ejemplos

A grandes rasgos, la implementación de los ejemplos funciona de la siguiente manera:

  1. Encuentra algún código fuente que quieras analizar.
  2. Analiza el código fuente con la herramienta semantic de GitHub para convertirlo en un Árbol de Sintaxis Abstracta (AST) y generar su salida en JSON.
  3. Analiza el AST en formato JSON con nuestro código Python y luego realiza algunos análisis interesantes con él.

Configuración

Este proyecto está diseñado para ejecutarse con Docker.

Para ello, primero necesitarás configurar algunas cosas.

Dado que nuestro Dockerfile se basa en la imagen Docker de semantic, que está alojada en el registro de paquetes de GitHub, tendrás que configurar Docker para usarlo con GitHub Package Registry.

  1. Crea un token de acceso personal con los permisos que describe el artículo anterior.
  2. Autentícate en el registro de paquetes de GitHub: $ docker login docker.pkg.github.com -u USERNAME -p TOKEN
  3. Construye el contenedor Docker: docker build -t lightweight_static_analysis .
  4. Ejecuta una shell bash dentro del contenedor Docker y luego ejecuta nuestros scripts.
root@kitploit:~
# Run this 
# (Make sure to run this from a terminal in this repo's project root)
$ docker run -it --rm --entrypoint /bin/bash -v $PWD:/lightweight_static_analysis lightweight_static_analysis

# cd into this project's source code within the 
# running container
$ cd /lightweight_static_analysis

# Run main.py with different config options, described further below

Ejecución

Una vez que tengas una shell bash en el contenedor Docker (consulta arriba el comando docker run), puedes ejecutar main.py con uno de varios modos posibles.

root@kitploit:~
/lightweight_static_analysis> $ python3 src/main.py <options>

Puedes ver todas las opciones disponibles ejecutando src/main.py sin opciones o consultando la sección parser.add_argument de main.py.

Explorando bases de código Rails

A continuación se muestran algunos comandos que pueden ayudarte a explorar de forma interactiva una base de código Rails.

Primero, clona uno o más repositorios Rails y colócalos en examples/. Si necesitas algunos repositorios de ejemplo, puedes usar el código fuente de rubygems.org, o uno de los repositorios listados en Open Source Rails.

root@kitploit:~
# Print out the class, super class, defined methods, and before actions
# for all controllers
$ python3 src/main.py --rails-summarize-controllers examples/<repo_name>

# Print out every controller name, grouped by super class
#
# This can find examples where security protections defined in a parent class
# (e.g. ApplicationController or Api::BaseController) aren't applied because
# the vulnerable controller didn't subclass the appropriate class.
$ python3 src/main.py --rails-controllers-by-superclass examples/<repo_name>

# For every before_action used by any controller, list the controllers that
# use that before_action and the routes that it is and isn't applied to
# (e.g. handle the 'except' and 'only" keywords)
#
# This can:
# * Give you quick insight the various before_actions the application defines,
#   yielding some intuition as to the code's flow and organization.
#   * `verify_with_otp` - Hm, that sounds interesting, I probably want to
#      review how that filter is implemented.
# * Show you where a given before_action is and isn't applied across an entire
#   code base, potentially leading to bugs where it is inconsistently used
#
# For example
# * Is there a before_action that's used to protect all state0-changing API
#   routes except for 1 model? That's strange.
# * Is there an authentication or authorization before_action applied to every
#   action in a controller except one? Why?
$ python3 src/main.py --rails-controllers-by-before_action examples/<repo_name>

Si quieres entrar a un REPL de ipdb después de que el análisis haya terminado para poder examinar interactivamente el código Ruby analizado, puedes hacerlo pasando también la opción --repl a los comandos anteriores.

Estos ejemplos se basan en las distintas clases AstNode definidas en ast_node.py, y todo el código específico de Rails está en ruby.py.

Detección de inyección de comandos mediante exec() de la shell de JS

Esta implementación aún no se ha limpiado ni documentado, pero consulta batch_parse_json() en main.py y visit() y los demás métodos que llama en visitor.py.

Mantente en contacto

Estamos encantados de hablar sobre este trabajo con más detalle, no dudes en abrir un issue o contactarnos en Twitter: @clintgibler, @defreez.

Si quieres mantenerte al día con este y otros proyectos en los que trabajamos, echa un vistazo a nuestro boletín de seguridad tl;dr, donde enviamos resúmenes detallados de las mejores charlas de seguridad y enlaces a las mejores herramientas y recursos de seguridad.

Es un boletín de bajo volumen y alto valor, pensado para mantenerte al día con lo último y lo mejor en seguridad, de modo que puedas hacer tu trabajo de manera más eficiente y eficaz y tengas datos útiles que compartir en la máquina de agua de la infosec.

Descargar herramienta