Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
lightweight_static_analysis — Crea utili e leggere analisi statiche utilizzando strumenti open source + un pizzico del tuo codice | Kitploit
Strumenti/GitHubGitHub/nccgroup/lightweight_static_analysis
Analisi Statica del Codice (SAST)Analisi delle VulnerabilitàAnalisi del CodiceScripting e AutomazioneSicurezza WebPenetration TestingApprendimento e Formazione
GitHubnccgroup/lightweight_static_analysis

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

lightweight_static_analysis

Crea utili e leggere analisi statiche utilizzando strumenti open source + un pizzico del tuo codice

Vedi Repository
13456 anni faNon ancora revisionato

Analisi statica leggera

Questa repo contiene il codice PoC per un talk di ShellCon 2019, "Rolling Your Own: How to Write Custom, Lightweight Static Analysis Tools" (slides).

In sintesi, questa repo dimostra alcuni esempi concreti di come puoi costruire interessanti analisi statiche usando strumenti open source e una piccola quantità di codice personalizzato.

Esempi di codice in questa repo:

  1. Esplorare iterativamente una codebase Rails per capire i controller che definisce e le before_action che utilizza.
  2. Trovare l'iniezione di comandi nelle app NodeJS.

Come funzionano gli esempi

A livello generale, l'implementazione degli esempi funziona come segue:

  1. Trova del codice sorgente che vuoi analizzare.
  2. Analizza il codice sorgente usando lo strumento semantic di GitHub per ottenere un Abstract Syntax Tree (AST) e restituiscilo in JSON.
  3. Analizza l'AST in formato JSON con il nostro codice Python e poi esegui alcune interessanti analisi.

Configurazione

Questo progetto è pensato per essere eseguito usando Docker.

Per farlo, dovrai prima configurare alcune cose.

Poiché il nostro Dockerfile si basa sull'immagine Docker di semantic, ospitata nel registro pacchetti di GitHub, dovrai configurare Docker per l'uso con GitHub Package Registry.

  1. Crea un personal access token con le autorizzazioni descritte nell'articolo sopra.
  2. Autenticati al registro pacchetti GitHub: $ docker login docker.pkg.github.com -u USERNAME -p TOKEN
  3. Crea il container Docker: docker build -t lightweight_static_analysis .
  4. Esegui una shell bash all'interno del container Docker e poi esegui i nostri script.
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

Esecuzione

Dopo aver ottenuto una shell bash nel container Docker (vedi sopra per il comando docker run), puoi eseguire main.py con una delle varie modalità disponibili.

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

Puoi vedere tutte le opzioni disponibili eseguendo src/main.py senza opzioni oppure visionando la sezione parser.add_argument di main.py.

Esplorare le codebase Rails

Ecco alcuni comandi che possono aiutarti a esplorare in modo interattivo una codebase Rails.

Prima di tutto, clona una o più repo Rails e mettile in examples/. Se ti servono repo di esempio, puoi usare il codice sorgente per rubygems.org, oppure una delle repo elencate su 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>

Se vuoi entrare in una REPL ipdb dopo che l'analisi è stata completata per esaminare in modo interattivo il codice Ruby analizzato, puoi farlo passando anche il flag --repl ai comandi precedenti.

Questi esempi si basano sulle varie classi AstNode definite in ast_node.py, e tutto il codice specifico per Rails è in ruby.py.

Trovare l'iniezione di comandi tramite le exec() della shell JS

Questa implementazione non è stata ancora ripulita e documentata, ma vedi batch_parse_json() in main.py e visit() e gli altri metodi che chiama in visitor.py.

Restiamo in contatto

Siamo felici di parlare di questo lavoro in maggior dettaglio, sentiti libero di aprire una issue o contattarci su Twitter: @clintgibler, @defreez.

Se vuoi tenerti aggiornato su questo e altri progetti a cui lavoriamo, dai un'occhiata alla nostra tl;dr sec newsletter, dove inviamo riassunti dettagliati dei migliori talk sulla sicurezza e link ai migliori strumenti e risorse di sicurezza.

È una newsletter a basso volume e alto segnale, pensata per tenerti aggiornato sulle ultime novità in ambito security, così da svolgere il tuo lavoro in modo più efficiente ed efficace e avere spunti utili da condividere con i colleghi dell'infosec.

Scarica lo strumento