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
gaia — Évaluateur global d'intégrité d'API | Kitploit
Outils/GitLabGitLab/functori/dev/gaia
Scanners de VulnérabilitésTests de Sécurité des APISécurité WebFuzzing
GitLabfunctori/dev/gaia

gaia

Évaluateur global d'intégrité d'API

Voir le dépôt
3il y a 1 anPas encore vérifié

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

Gaia : Évaluateur mondial de l'intégrité des API

Dépendances

  • Installez opam pour construire l'API de tests.

  • Installez git, python3, pip et .NET pour construire RESTler et Schemathesis.

  • Installez cargo pour construire Gaia.

  • Installez docker v26.0.1 et docker compose v2.26.1 pour construire Gaia avec la pile ELK (optionnel sinon).

  • Installez node >= v18.0.0 et npm >= v8.6.0

  • Pour créer un switch local opam :

root@kitploit:~
make opam-switch
  • Pour installer toutes les dépendances :
root@kitploit:~
make deps

Compilation

  • Pour compiler Gaia :
root@kitploit:~
Télécharger l’outil
make build
  • Pour compiler l'API de tests :
root@kitploit:~
make build-test

Spécification OpenAPI

  • Pour générer la spécification OpenAPI pour les tests :
root@kitploit:~
make generate-swagger
  • Pour supprimer la spécification OpenAPI pour les tests :
root@kitploit:~
make clean-swagger

Formatage

  • Pour formater le projet (tests + source) :
root@kitploit:~
make format

Nettoyage

  • Pour nettoyer les fichiers de compilation (tests + source) :
root@kitploit:~
make clean-build-files
  • Pour tout nettoyer :
root@kitploit:~
make clean

Exécution

  • Après la compilation, vous pouvez afficher les options de GAIA par :
root@kitploit:~
./_bin/gaia --help
  • Utilisation de GAIA :
root@kitploit:~
gaia --configuration <configuration> --openapi-path <chemin-openapi> --workdir-path <chemin-répertoire-travail> --verbose <verbose>

  • workdir-path : Le répertoire de travail où vous trouverez les différents journaux des fuzzers.

  • openapi-path : Chemin du fichier OpenAPI de l'API réelle. Requis lorsque vous utilisez le fuzzing ou la surveillance mais pas pour les statistiques

  • verbose : Le niveau de verbosité {NOTHING, LOW, MID, HIGH, ALL} (Valeur par défaut : NOTHING)

  • configuration : Le chemin du fichier json qui contient :

root@kitploit:~
{
  "configuration": {
    // L'un des : fuzzing ou monitoring
    "fuzzing": {
      //Requis
      "config_fuzzer": {
        //Requis
        // En heures
        "timeout": 1,
        //Optionnel
        // Désactiver les fuzzers
        "disable_fuzzers": [{
           "Restler":{
             // Bfs, BfsFast, BfsCheap ou RandomWalk
             "strategy" : "Bfs" 
            }
          },
          "Schemathesis",
          {"Custom": {"id": "1"}}
        ],
        //Optionnel
        "custom_fuzzers": [
          "<ligne de commande pouvant accepter `--output_dir <PATH>`, `--openapi_path <PATH>` et `--timeout <FLOAT>` comme arguments>"
        ],
        //Optionnel
        "generation_config": {
          //optionnel (Requis si vous définissez une fonction pour générer une valeur)
          "lib_path": "Chemin absolu vers la bibliothèque dynamique (.so, .dll ou .rs).",
          //Optionnel
          "generate_string": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie un tableau de chaînes>",
            //Ou
            "value": ["fuzzstring"],
            //Ou
            "function": "<function() qui renvoie un tableau de chaînes>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          },
          //Optionnel
          "generate_datetime": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie un tableau de datetime au format chaîne>",
            //Ou
            "value": ["2019-06-26T20:20:39+00:00"],
            //Ou
            "function": "<function() qui renvoie un tableau de datetime au format chaîne>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          },
          //Optionnel
          "generate_date": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie un tableau de dates au format chaîne>",
            //Ou
            "value": ["2019-06-26"],
            //Ou
            "function": "<function() qui renvoie un tableau de dates au format chaîne>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          },
          //Optionnel
          "generate_int": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie un tableau d'entiers au format chaîne>",
            //Ou
            "value": ["0"],
            //Ou
            "function": "<function() qui renvoie un tableau d'entiers au format chaîne>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          },
          //Optionnel
          "generate_number": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie un tableau de flottants au format chaîne>",
            //Ou
            "value": ["1.5"],
            //Ou
            "function": "<function() qui renvoie un tableau de flottants au format chaîne>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          },
          //Optionnel
          "generate_object": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie un tableau d'objets json au format chaîne>",
            //Ou
            "value": ["{\"k\" : {\"v\" : \"value\" }}"],
            //Ou
            "function": "<function() qui renvoie un tableau d'objets json au format chaîne>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          },
          //Optionnel
          "generate_path_parameter": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie une carte clé-valeur avec une clé chaîne faisant référence à un paramètre de chemin et un tableau de chaînes de valeurs>",
            //Ou
            "value": {
              "k": {
                "v": ["value"]
              }
            },
            //Ou
            "function": "<function() qui renvoie une carte clé-valeur avec une clé chaîne faisant référence à un paramètre de chemin et un tableau de chaînes de valeurs>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          },
          //Optionnel
          "generate_query_parameter": {
            //L'un des : Command, Value, File path ou Function
            "command": "<ligne de commande qui renvoie une carte clé-valeur avec une clé chaîne faisant référence à un paramètre de requête et un tableau de chaînes de valeurs>",
            //Ou
            "value": {
              "k": {
                "v": ["value"]
              }
            },
            //Ou
            "function": "<function() qui renvoie une carte clé-valeur avec une clé chaîne faisant référence à un paramètre de requête et un tableau de chaînes de valeurs>",
            //Ou
            "file": "Le chemin du fichier vers le dictionnaire de valeurs"
          }
        }
      },
      //Requis
      "config_process_manager": {
        //Optionnel
        "config_reset": {
          //Requis
          "reset_lib": "Chemin absolu vers la bibliothèque dynamique (.so, .dll ou .rs).",
          //Requis
          "function": "Nom de la fonction qui prend deux chaînes comme arguments et renvoie une unité. La première chaîne représente le journal au format JSON, et la seconde le chemin vers le fichier journal en temps réel."
        },
        //Requis
        "config_proxy": {
          //Optionnel
          "headers_config": {
            //Optionnel
            "custom_headers": [
              {
                //Requis
                "title": "titre",
                //Requis
                "header_type": {
                  //L'un des : Command ou Value
                  "Command": {
                    //Requis
                    "cmd": "<Commande qui renvoie la valeur de l'en-tête>",
                    //Requis
                    //Durée de rafraîchissement en millisecondes
                    "duration": 0
                  },
                  // ou
                  "Value": { "value": "Valeur de l'en-tête" }
                }
              }
            ]
          },
          //Optionnel
          "openapi_config": {
            //Optionnel
            "responses_to_string": true, // Change le type des réponses en chaîne
            //Optionnel
            "requests_config": {
              //L'un des : Exclude ou Only
              "only": {
                //Requis
                "requests": [
                  {
                    //Requis
                    "path": "Regex représentant un chemin",
                    //Requis
                    "methods": [
                      "Get",
                      "Put",
                      "Post",
                      "Delete",
                      "Options",
                      "Head",
                      "Patch",
                      "Trace"
                    ]
                  }
                ]
              },
              //Ou
              "Exclude": {
                //Requis
                "requests": [
                  {
                    //Requis
                    "path": "Regex représentant un chemin",
                    //Optionnel : Par défaut, toutes les méthodes si non spécifié.
                    "methods": [
                      "Get",
                      "Put",
                      "Post",
                      "Delete",
                      "Options",
                      "Head",
                      "Patch",
                      "Trace"
                    ]
                  }
                ]
              }
            }
          },
          //Optionnel
          "stream_response_services": [
            {
              //Requis
              "path": "Regex représentant un chemin",
              //Optionnel : Par défaut, toutes les méthodes si non spécifié.
              "methods": [
                "Get",
                "Put",
                "Post",
                "Delete",
                "Options",
                "Head",
                "Patch",
                "Trace"
              ]
            }
          ]
        },
        //Optionnel
        "use_sync_requests" : true
      }
    },
    "monitoring": {
      "config_monitoring": {
        //L'un des : log_file_path ou service
        "log_file_path": {
          //Requis
          "path": "/home/log.log"
        },
        "service": {
          //Requis
          "url": "http://localhost:3000/log"
        }
      }
    }
  },
  //Optionnel
  "config_checker": {
    //Optionnel
    "checkers_cmd": [
      "<ligne de commande qui prend une chaîne comme argument et renvoie une unité. Cette chaîne représente le journal au format JSON>"
    ],
    //Optionnel
    "checkers_lib": [
      {
        //Requis
        "checkers_lib": "Chemin absolu vers la bibliothèque dynamique (.so, .dll ou .rs).",
        //Requis
        "function_names": [
          "Noms de fonctions qui prennent une chaîne comme argument et renvoient une unité. Cette chaîne représente le journal au format JSON"
        ]
      }
    ]
  },
  //Optionnel
  "config_checker_elk_stack": {
    //Requis
    "kibana_port": 5602 //Url Kibana : http://localhost:{kibana_port}
  },
  //Optionnel
  "config_statistics": {
    //Requis
    "process": {
      //L'un des : docker, process ou service
      "docker": {
        //Requis
        "container_id": "89u32eew2r"
      },
      "process": {
        //Requis
        "pid": 1100293
      },
      "service": {
        //Requis
        "url": "http://localhost:3000/statistics"
      }
    }
  },
  //Optionnel
  "scanner": true
}
  • Exemple de format de journal JSON :
root@kitploit:~
{
  "id" : 9009,
  "request": {
    "method": "GET",
    "url": "http://localhost:8080/api/data",
    "headers": [
      ["connection", "keep-alive"],
      ["accept", "*/*"],
      ["user-agent", "schemathesis/3.24.3"],
      ["host", "localhost:8081"],
      ["accept-encoding", "gzip, deflate"],
      ["authorization", "Bearer"],
      ["x-schemathesis-testcaseid", "97pK1I"],
      ["authorization", "Bearer Test"]
    ],
    "params": [],
    "body": "",
    "timestamp": "2024-06-17T12:43:21.717+00:00"
  },
  "response": {
    "status_code": 403,
    "headers": [
      ["access-control-allow-headers", "accept, content-type"],
      ["access-control-allow-origin", "*"],
      ["content-type", "application/json"],
      ["content-length", "70"]
    ],
    "body": "{\"error\":\"get_data\",\"exception\":\"sender Test should be connected\"}",
    "timestamp": "2024-06-17T12:43:21.717+00:00"
  },
  "reset": false
}
root@kitploit:~
{
  "request": {
    "method": "POST",
    "url": "http://localhost:20000/injection/block",
    "headers": [
      ["user-agent", "restler/9.2.3"],
      ["content-type", "application/json"],
      ["accept", "application/json"],
      ["x-restler-sequence-id", "20f34e2b-13e8-4861-a7aa-77df3dff5ad6"],
      ["host", "localhost:22333"],
      ["content-length", "225"]
    ],
    "params": [
      ["async", "fuzzstring"],
      ["force", "fuzzstring"],
      ["chain", "fuzzstring"]
    ],
    "body": {
      "data": "fuzzstring",
      "operations": [[{ "branch": { "fuzz": false }, "data": "fuzzstring" }]]
    },
    "timestamp": "2024-06-17T12:43:21.717+00:00"
  },
  "response": {
    "status_code": 400,
    "headers": [
      ["content-type", "text/plain"],
      ["transfer-encoding", "chunked"]
    ],
    "body": null,
    "timestamp": "2024-06-17T12:43:21.722+00:00"
  },
  "reset": false
}

Licence

Copyright © 2024, Functori [email protected].