Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
lightweight_static_analysis — Créez des analyses statiques utiles et légères à l'aide d'outils open source + un peu de votre code | Kitploit
Outils/GitHubGitHub/nccgroup/lightweight_static_analysis
Analyse Statique de Code (SAST)Analyse des VulnérabilitésAnalyse de CodeScripting et AutomatisationSécurité WebTests d'IntrusionApprentissage et Éducation
GitHubnccgroup/lightweight_static_analysis

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

lightweight_static_analysis

Créez des analyses statiques utiles et légères à l'aide d'outils open source + un peu de votre code

Voir le dépôt
134il y a 6 ansPas encore vérifié

Analyse statique légère

Ce dépôt contient le code de preuve de concept (PoC) d'une présentation à ShellCon 2019, « Rolling Your Own: How to Write Custom, Lightweight Static Analysis Tools » (diapositives).

En résumé, ce dépôt démontre quelques exemples concrets de la manière dont vous pouvez construire des analyses statiques intéressantes à l'aide d'outils open source et d'une petite quantité de code personnalisé.

Exemples de code dans ce dépôt :

  1. Explorer de manière itérative une base de code Rails pour comprendre les contrôleurs qu'elle définit et les before_actions qu'elle utilise.
  2. Détecter les injections de commandes dans les applications NodeJS.

Comment fonctionnent les exemples

À un niveau élevé, l'implémentation des exemples fonctionne comme suit :

  1. Trouvez du code source que vous souhaitez analyser.
  2. Analysez le code source à l'aide de l'outil semantic de GitHub pour obtenir un arbre de syntaxe abstraite (AST) et exportez-le en JSON.
  3. Analysez l'AST au format JSON avec notre code Python, puis effectuez des analyses intéressantes avec celui-ci.

Configuration

Ce projet est conçu pour être exécuté avec Docker.

Pour ce faire, vous devrez d'abord configurer quelques éléments.

Étant donné que notre Dockerfile est basé sur l'image Docker semantic, qui est hébergée sur le registre de paquets de GitHub, vous devrez configurer Docker pour utiliser GitHub Package Registry.

  1. Créez un jeton d'accès personnel avec les autorisations décrites dans l'article ci-dessus.
  2. Authentifiez-vous auprès du registre de paquets GitHub : $ docker login docker.pkg.github.com -u USERNAME -p TOKEN
  3. Construisez le conteneur Docker : docker build -t lightweight_static_analysis .
  4. Lancez un shell bash dans le conteneur Docker, puis exécutez nos 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

Exécution

Une fois que vous disposez d'un shell bash dans le conteneur Docker (voir plus haut pour la commande docker run), vous pouvez exécuter main.py avec l'un des plusieurs modes possibles.

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

Vous pouvez voir toutes les options disponibles en exécutant src/main.py sans options ou en consultant la section parser.add_argument de main.py.

Explorer les bases de code Rails

Voici quelques commandes qui peuvent vous aider à explorer de manière interactive une base de code Rails.

Tout d'abord, clonez un ou plusieurs dépôts Rails et placez-les dans examples/. Si vous avez besoin de dépôts d'exemple, vous pouvez utiliser le code source de rubygems.org, ou l'un des dépôts listés sur 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 vous souhaitez basculer dans un REPL ipdb une fois l'analyse terminée, afin d'examiner interactivement le code Ruby analysé, vous pouvez le faire en passant également l'option --repl aux commandes ci-dessus.

Ces exemples reposent sur les différentes classes AstNode définies dans ast_node.py, et tout le code spécifique à Rails se trouve dans ruby.py.

Détection d'injections de commande via les appels exec() du shell JS

Cette implémentation n'a pas encore été nettoyée ni documentée, mais voir batch_parse_json() dans main.py et visit() ainsi que les autres méthodes qu'elle appelle dans visitor.py.

Restons en contact

Nous serons ravis d'échanger plus en détail sur ce travail ; n'hésitez pas à ouvrir une issue ou à nous contacter sur Twitter : @clintgibler, @defreez.

Si vous souhaitez suivre ce projet ainsi que les autres projets sur lesquels nous travaillons, consultez notre newsletter tl;dr sec, où nous envoyons des résumés détaillés des principales conférences de sécurité et des liens vers les meilleurs outils et ressources de sécurité.

C'est une newsletter à faible volume mais à forte valeur ajoutée, destinée à vous tenir au courant des dernières nouveautés en matière de sécurité afin que vous puissiez faire votre travail de manière plus efficace et efficiente, et avoir des anecdotes utiles à partager à la fontaine à eau de l'infosec.

Télécharger l’outil