Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
lightweight_static_analysis — Erstelle nützliche, leichtgewichtige statische Analysen mit Open-Source-Tools + ein winziges bisschen deines Codes. | Kitploit
Tools/GitHubGitHub/nccgroup/lightweight_static_analysis
Statische Code-Analyse (SAST)SchwachstellenanalyseCode-AnalyseScripting & AutomatisierungWebsicherheitPenetrationstestsLernen & Bildung
GitHubnccgroup/lightweight_static_analysis

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

lightweight_static_analysis

Erstelle nützliche, leichtgewichtige statische Analysen mit Open-Source-Tools + ein winziges bisschen deines Codes.

Repository anzeigen
1345vor 6 JahrenNoch nicht geprüft

Leichtgewichtige statische Analyse

Dieses Repo enthält den PoC-Code für einen Vortrag auf der ShellCon 2019, „Rolling Your Own: How to Write Custom, Lightweight Static Analysis Tools“ (Folien).

Kurz gesagt zeigt dieses Repo ein paar konkrete Beispiele, wie du interessante statische Analysen mit Open-Source-Tools und einer kleinen Menge benutzerdefinierten Codes erstellen kannst.

Codebeispiele in diesem Repo:

  1. Iteratives Erkunden einer Rails-Codebasis, um die Controller zu verstehen, die sie definiert, und die before_actions, die sie verwendet.
  2. Finden von Command Injection in NodeJS-Apps.

So funktionieren die Beispiele

Auf hoher Ebene funktioniert die Implementierung der Beispiele wie folgt:

  1. Finde Quellcode, den du analysieren möchtest.
  2. Parst den Quellcode mit dem semantic-Tool von GitHub in einen Abstrakten Syntaxbaum (AST) und gib das als JSON aus.
  3. Parst den AST als JSON mit unserem Python-Code und führt dann einige interessante Analysen damit durch.

Einrichtung

Dieses Projekt ist dafür ausgelegt, mit Docker ausgeführt zu werden.

Dazu musst du zunächst ein paar Dinge einrichten.

Da unser Dockerfile auf dem semantic-Docker-Image basiert, das in der GitHub-Paketregistrierung gehostet wird, musst du Docker für die Verwendung mit GitHub Package Registry konfigurieren.

  1. Erstelle ein persönliches Zugriffstoken mit den Berechtigungen, die der obige Artikel beschreibt.
  2. Authentifiziere dich bei der GitHub-Paketregistrierung: $ docker login docker.pkg.github.com -u USERNAME -p TOKEN
  3. Baue den Docker-Container: docker build -t lightweight_static_analysis .
  4. Starte eine bash-Shell im Docker-Container und führe dann unsere Skripte aus.
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

Ausführen

Sobald du eine bash-Shell im Docker-Container hast (siehe oben für den docker run-Befehl), kannst du main.py in einem von mehreren möglichen Modi ausführen.

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

Du kannst alle verfügbaren Optionen sehen, indem du src/main.py ohne Optionen ausführst oder den Abschnitt parser.add_argument von main.py ansiehst.

Rails-Codebasen erkunden

Hier sind ein paar Befehle, die dir helfen, interaktiv eine Rails-Codebasis zu erkunden.

Zuerst solltest du ein oder mehrere Rails-Repos klonen und sie in examples/ ablegen. Wenn du Beispiel-Repos benötigst, kannst du den Quellcode von rubygems.org verwenden oder eines der Repos, die auf Open Source Rails aufgeführt sind.

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>

Wenn du nach Abschluss des Parsings in eine ipdb-REPL wechseln möchtest, um den geparsten Ruby-Code interaktiv zu untersuchen, kannst du dies tun, indem du den obigen Befehlen das Flag --repl hinzufügst.

Diese Beispiele verwenden die verschiedenen AstNode-Klassen aus ast_node.py, und der gesamte Rails-spezifische Code befindet sich in ruby.py.

Finden von Command Injection über JS-Shell-exec()s

Diese Implementierung wurde noch nicht bereinigt und dokumentiert, aber siehe batch_parse_json() in main.py und visit() sowie die anderen Methoden, die sie in visitor.py aufruft.

Bleib in Kontakt

Wir freuen uns, ausführlicher über diese Arbeit zu sprechen. Erstelle gerne ein Issue oder kontaktiere uns auf Twitter: @clintgibler, @defreez.

Wenn du über dieses und andere Projekte, an denen wir arbeiten, auf dem Laufenden bleiben möchtest, schau dir unseren tl;dr sec Newsletter an, in dem wir detaillierte Zusammenfassungen der wichtigsten Security-Vorträge und Links zu den besten Security-Tools und -Ressourcen senden.

Es ist ein Newsletter mit geringem Umfang, aber hoher Informationsdichte, der dich über die neuesten Entwicklungen in der Sicherheit auf dem Laufenden halten soll, damit du deine Arbeit effizienter und effektiver erledigen kannst und nützliche Kleinigkeiten für deinen Infosec-Wasserkühler hast.

Tool herunterladen