Skip to main content

No project description provided

Project description

httpscan

Конфигуриемый HTTP сканер для поиска дампов, бекапов, конфигов в открытом доступе, а так же может отправлять запросы другими HTTP-методами, а не только GET. Может обходить проверку от Cloudflare, но для этого в системе должна быть установлена Node.js.

Я долгое время пользовался утилитой httpx. Та утилита всем хороша за исключением настраивамости (а еще она CloudFlare обходить не умеет). Мне нужен был декларативный способ описания правил для сканирования + утилита должна была сама выкачивать найденные бекапы, дампы и тп. От тех же разработчиков есть nuclei, но он решает немного другие вопросы, ну а главное, я не могу взять и просто переписать тонны кода на Go, где дельть многие вещи — боль.

Установка:

pipx install httpscan

Используйте pipx вместо pip для установки пакетов, содержащих исполняемые файлы

Установка самой последней версии с github:

pipx install git+https://github.com/s3rgeym/httpscan.git

Использование:

# -i urls.txt                       - загрузить список ссылок для сканирования
#                                     из файла, где каждая ссылка с новой строки
# -o results.json                   - файл с результатами сканирования, где
#                                     результаты в виде JSON-объектов - каждый с
#                                     новой строки
# -vv                               - вывод отладочных сообщений
# --proxy 'socks5://localhost:1080' - использовать прокси для сканирования
httpscan -i urls.txt -o results.json -vv --proxy 'socks5://localhost:1080'

httpscan -h

Если путь до конфига не задан, то в текущей рабочей директории либо в ~/.config ищутся файлы с именами httpscan.yml или httpscan.yaml.

Поля которые содержит конфиг: см. Config.

В конфиге есть поле probes. Оно содержит список объектов ProbeConfig.

Пример пробы:

probes:
# ...
- condition: status_code == 200 && content_type != 'text/html'
  name: site backup
  path: /{site,www,backup}.{zip,tar.{g,x}z}
  save_to: ./output

В репозитории имеется sample.httpscan.yml (можно его переместить в ~/.config/httpscan.yml).

  • Каждый элемент массива probes содержит обязательное поле name с именем пробы.
  • path — это путь для подстановки к каждому URL. Путь поддерживает brace expansion как в BASH, например, /{foo,ba{r,z}}.biz (будут проверены пути /foo.biz, /bar.biz и /baz.biz).
  • method задает HTTP-метод; params служит для передачи параметров QUERY STRING, data — параметры передаваемые с помощью application/x-www-form-urlencoded, json..., cookies..., headers...
  • condition позволяет отфильтровать результаты. Имеется встроенный движок выражений. Поддерживаются операторы ==, !=, <, <=, >, >=, ! или NOT, AND или &&, OR или ||. Все регистронезависимы. Их можно группировать с помощью круглых скобок. Доступны переменные: status_code, content_length, content_type... Например, status_code == 200 and content_type == 'application/json'. Заметьте, что строки должны быть в кавычках...
  • match, not_match проверяют на соответсвие шаблону регулярного выражения ответ сервера. extract и extract_all позволяют извлечь содержимое, если оно соответствует шаблону.
  • save_to сохраняет файл...

Результаты сканирования выводятся в формате JSONL (JSON Lines, где каждый объект с новой строки). Для работы с ними используйте jq.

{"content_length": 256, "content_type": "application/octet-stream", "http_version": "1.1", "probe_name": "git config", "response_headers": {"Connection": "close", "Content-Length": "256", "Date": "Sat, 06 Jul 2024 22:05:56 GMT", "Host": "127.0.0.1:8000"}, "status_code": 200, "status_reason": "OK", "url": "http://127.0.0.1:8000/.git/config"}

Другие особенности:

  • При каждом запросе используется рандомный заголовок User-Agent.
  • Поддерживаются прокси, например, socks5://localhost:1080.
  • С помощью --ignore-hosts можно передать список игнорируемых хостов, причем можно использовать шаблоны со звездочкой типа *.shopify.com, чтобы отсеивать поддомены. Домены можно писать в любом регистре.

Для разработки:

git clone ... && cd ...
python -m venv .venv
. .venv/bin/activate
# установит все зависимости из pyproject.toml
pip install .

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

httpscan-0.3.1.tar.gz (16.1 kB view hashes)

Uploaded Source

Built Distribution

httpscan-0.3.1-py3-none-any.whl (14.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page