Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
gaia — Глобальный оценщик целостности API | Kitploit
Инструменты/GitLabGitLab/functori/dev/gaia
Сканеры уязвимостейТестирование безопасности APIВеб-безопасностьФаззинг
GitLabfunctori/dev/gaia

gaia

Глобальный оценщик целостности API

Репозиторий
31 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Gaia: Глобальный оценщик целостности API

Зависимости

  • Установите opam для сборки тестового API.

  • Установите git, python3, pip и .NET для сборки RESTler и Schemathesis.

  • Установите cargo для сборки Gaia.

  • Установите docker v26.0.1 и docker compose v2.26.1 для сборки Gaia с ELK Stack (необязательно, если не требуется).

  • Установите node >= v18.0.0 и npm >= v8.6.0

  • Чтобы создать локальный переключатель opam:

root@kitploit:~
make opam-switch
  • Чтобы установить все зависимости:
root@kitploit:~
make deps

Сборка

  • Чтобы собрать Gaia:
root@kitploit:~
make build
  • Чтобы собрать тестовое API:
root@kitploit:~
make build-test

Спецификация OpenAPI

  • Чтобы сгенерировать спецификацию OpenAPI для тестов:
root@kitploit:~
make generate-swagger
  • Чтобы удалить спецификацию OpenAPI для тестов:
root@kitploit:~
make clean-swagger

Форматирование

  • Чтобы отформатировать проект (тест + исходный код):
root@kitploit:~
make format

Очистка

  • Чтобы очистить файлы сборки (тест + исходный код):
root@kitploit:~
make clean-build-files
  • Чтобы очистить всё:
root@kitploit:~
make clean

Выполнение

  • После сборки вы можете отобразить опции GAIA с помощью:
root@kitploit:~
./_bin/gaia --help
  • Использование GAIA:
root@kitploit:~
gaia --configuration <configuration> --openapi-path <openapi-path> --workdir-path <workdir-path> --verbose <verbose>
  • workdir-path: Рабочая директория, в которой вы найдете различные журналы фаззеров.

  • openapi-path: Путь к файлу OpenAPI реального API. Требуется при использовании фаззинга или мониторинга, но не для статистики

  • verbose : Уровень детализации {NOTHING, LOW, MID, HIGH, ALL} (Значение по умолчанию: NOTHING)

  • configuration: Путь к JSON-файлу, который содержит:

root@kitploit:~
{
  "configuration": {
    // Один из: fuzzing или monitoring
    "fuzzing": {
      //Обязательно
      "config_fuzzer": {
        //Обязательно
        // В часах
        "timeout": 1,
        //Необязательно
        // Отключить фаззеры
        "disable_fuzzers": [{
           "Restler":{
             // Bfs, BfsFast, BfsCheap или RandomWalk
             "strategy" : "Bfs" 
            }
          },
          "Schemathesis",
          {"Custom": {"id": "1"}}
        ],
        //Необязательно
        "custom_fuzzers": [
          "<командная строка, которая может принимать `--output_dir <PATH>`, `--openapi_path <PATH>` и `--timeout <FLOAT>` в качестве аргументов>"
        ],
        //Необязательно
        "generation_config": {
          //необязательно (Обязательно, если вы задаете функцию для генерации значения)
          "lib_path": "Абсолютный путь к динамической библиотеке (.so, .dll или .rs).",
          //Необязательно
          "generate_string": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая массив строк>",
            //Или
            "value": ["fuzzstring"],
            //Или
            "function": "<function() возвращающая массив строк>",
            //Или
            "file": "Путь к файлу словаря значений"
          },
          //Необязательно
          "generate_datetime": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая массив дат и времени в строковом формате>",
            //Или
            "value": ["2019-06-26T20:20:39+00:00"],
            //Или
            "function": "<function() возвращающая массив дат и времени в строковом формате>",
            //Или
            "file": "Путь к файлу словаря значений"
          },
          //Необязательно
          "generate_date": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая массив дат в строковом формате>",
            //Или
            "value": ["2019-06-26"],
            //Или
            "function": "<function() возвращающая массив дат в строковом формате>",
            //Или
            "file": "Путь к файлу словаря значений"
          },
          //Необязательно
          "generate_int": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая массив целых чисел в строковом формате>",
            //Или
            "value": ["0"],
            //Или
            "function": "<function() возвращающая массив целых чисел в строковом формате>",
            //Или
            "file": "Путь к файлу словаря значений"
          },
          //Необязательно
          "generate_number": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая массив чисел с плавающей точкой в строковом формате>",
            //Или
            "value": ["1.5"],
            //Или
            "function": "<function() возвращающая массив чисел с плавающей точкой в строковом формате>",
            //Или
            "file": "Путь к файлу словаря значений"
          },
          //Необязательно
          "generate_object": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая массив JSON-объектов в строковом формате>",
            //Или
            "value": ["{\"k\" : {\"v\" : \"value\" }}"],
            //Или
            "function": "<function() возвращающая массив JSON-объектов в строковом формате>",
            //Или
            "file": "Путь к файлу словаря значений"
          },
          //Необязательно
          "generate_path_parameter": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая карту ключ-значение, где строковый ключ ссылается на параметр пути, а значение — массив строк>",
            //Или
            "value": {
              "k": {
                "v": ["value"]
              }
            },
            //Или
            "function": "<function() возвращающая карту ключ-значение, где строковый ключ ссылается на параметр пути, а значение — массив строк>",
            //Или
            "file": "Путь к файлу словаря значений"
          },
          //Необязательно
          "generate_query_parameter": {
            //Один из: Command, Value, File path или Function
            "command": "<командная строка, возвращающая карту ключ-значение, где строковый ключ ссылается на параметр запроса, а значение — массив строк>",
            //Или
            "value": {
              "k": {
                "v": ["value"]
              }
            },
            //Или
            "function": "<function() возвращающая карту ключ-значение, где строковый ключ ссылается на параметр запроса, а значение — массив строк>",
            //Или
            "file": "Путь к файлу словаря значений"
          }
        }
      },
      //Обязательно
      "config_process_manager": {
        //Необязательно
        "config_reset": {
          //Обязательно
          "reset_lib": "Абсолютный путь к динамической библиотеке (.so, .dll или .rs).",
          //Обязательно
          "function": "Имя функции, которая принимает две строки в качестве аргументов и возвращает unit. Первая строка представляет журнал в формате JSON, а вторая — путь к файлу журнала в реальном времени."
        },
        //Обязательно
        "config_proxy": {
          //Необязательно
          "headers_config": {
            //Необязательно
            "custom_headers": [
              {
                //Обязательно
                "title": "title",
                //Обязательно
                "header_type": {
                  //Один из: Command или Value
                  "Command": {
                    //Обязательно
                    "cmd": "<Команда, возвращающая значение заголовка>",
                    //Обязательно
                    //Время обновления значения в миллисекундах
                    "duration": 0
                  },
                  // или
                  "Value": { "value": "Значение заголовка" }
                }
              }
            ]
          },
          //Необязательно
          "openapi_config": {
            //Необязательно
            "responses_to_string": true, // Изменить тип ответов на строку
            //Необязательно
            "requests_config": {
              //Один из: Exclude или Only
              "only": {
                //Обязательно
                "requests": [
                  {
                    //Обязательно
                    "path": "Регулярное выражение, представляющее путь",
                    //Обязательно
                    "methods": [
                      "Get",
                      "Put",
                      "Post",
                      "Delete",
                      "Options",
                      "Head",
                      "Patch",
                      "Trace"
                    ]
                  }
                ]
              },
              //Или
              "Exclude": {
                //Обязательно
                "requests": [
                  {
                    //Обязательно
                    "path": "Регулярное выражение, представляющее путь",
                    //Необязательно: По умолчанию используются все методы, если не указано.
                    "methods": [
                      "Get",
                      "Put",
                      "Post",
                      "Delete",
                      "Options",
                      "Head",
                      "Patch",
                      "Trace"
                    ]
                  }
                ]
              }
            }
          },
          //Необязательно
          "stream_response_services": [
            {
              //Обязательно
              "path": "Регулярное выражение, представляющее путь",
              //Необязательно: По умолчанию используются все методы, если не указано.
              "methods": [
                "Get",
                "Put",
                "Post",
                "Delete",
                "Options",
                "Head",
                "Patch",
                "Trace"
              ]
            }
          ]
        },
        //Необязательно
        "use_sync_requests" : true
      }
    },
    "monitoring": {
      "config_monitoring": {
        //Один из: log_file_path или service
        "log_file_path": {
          //Обязательно
          "path": "/home/log.log"
        },
        "service": {
          //Обязательно
          "url": "http://localhost:3000/log"
        }
      }
    }
  },
  //Необязательно
  "config_checker": {
    //Необязательно
    "checkers_cmd": [
      "<командная строка, принимающая строку в качестве аргумента и возвращающая unit. Эта строка представляет журнал в формате JSON>"
    ],
    //Необязательно
    "checkers_lib": [
      {
        //Обязательно
        "checkers_lib": "Абсолютный путь к динамической библиотеке (.so, .dll или .rs).",
        //Обязательно
        "function_names": [
          "Имена функций, принимающих строку в качестве аргумента и возвращающих unit. Эта строка представляет журнал в формате JSON"
        ]
      }
    ]
  },
  //Необязательно
  "config_checker_elk_stack": {
    //Обязательно
    "kibana_port": 5602 //URL Kibana: http://localhost:{kibana_port}
  },
  //Необязательно
  "config_statistics": {
    //Обязательно
    "process": {
      //Один из: docker, process или service
      "docker": {
        //Обязательно
        "container_id": "89u32eew2r"
      },
      "process": {
        //Обязательно
        "pid": 1100293
      },
      "service": {
        //Обязательно
        "url": "http://localhost:3000/statistics"
      }
    }
  },
  //Необязательно
  "scanner": true
}
  • Пример формата 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
}

Лицензия

Copyright © 2024, Functori [email protected].

Скачать инструмент