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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
smuggler — Python 기반 HTTP 요청 스머글링 및 디싱크 테스트 도구로, 구성 가능한 변형 페이로드와 자동 스캐닝을 사용하여 CL.TE 및 TE.CL 취약점을 탐지합니다. | Kitploit
도구/GitHubGitHub/defparam/smuggler
Vulnerability ScannersWeb Application ExploitationWeb SecurityPenetration Testing
GitHubdefparam/smuggler

smuggler

Python 기반 HTTP 요청 스머글링 및 디싱크 테스트 도구로, 구성 가능한 변형 페이로드와 자동 스캐닝을 사용하여 CL.TE 및 TE.CL 취약점을 탐지합니다.

저장소 보기
2.1k32695년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
root@kitploit:~
  ______                         _              
 / _____)                       | |             
( (____  ____  _   _  ____  ____| | _____  ____ 
 \____ \|    \| | | |/ _  |/ _  | || ___ |/ ___)
 _____) ) | | | |_| ( (_| ( (_| | || ____| |    
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|    
                    (_____(_____|               

     @defparam

Smuggler

HTTP 요청 밀수(Desync) 테스트 도구 (Python 3 작성)

감사의 말

James Kettle님의 HTTP desync에 대한 연구와 방법에 특별히 감사드립니다.

또한 Smuggler의 베타 테스트와 Nahamcon 2020에서 제 작업에 대해 발표할 수 있도록 허락해 주신 Ben Sadeghipour님께도 특별히 감사드립니다.

중요

이 도구는 위양성(false-positive) 또는 위음성(false-negative)이 없음을 보장하지 않습니다. 변형이 OK로 보고된다고 해서 desync 문제가 없는 것은 아니며, 더 중요하게는 도구가 잠재적인 desync 문제를 나타낸다고 해서 반드시 문제가 존재한다는 의미는 아닙니다. 대규모 업체(예: Google/AWS/Yahoo/Akamai 등)의 요청 프로세서를 만나면 위양성 결과가 나타날 수 있습니다.

설치

  1. git clone https://github.com/defparam/smuggler.git
  • cd smuggler
  • python3 smuggler.py -h
  • 사용 예시

    단일 호스트:

    root@kitploit:~
    python3 smuggler.py -u <URL>
    

    호스트 목록:

    root@kitploit:~
    cat list_of_hosts.txt | python3 smuggler.py
    

    옵션

    root@kitploit:~
    usage: smuggler.py [-h] [-u URL] [-v VHOST] [-x] [-m METHOD] [-l LOG] [-q]
                       [-t TIMEOUT] [--no-color] [-c CONFIGFILE]
    
    optional arguments:
      -h, --help            이 도움말 메시지를 보여주고 종료합니다
      -u URL, --url URL     엔드포인트가 포함된 대상 URL
      -v VHOST, --vhost VHOST
                            가상 호스트 지정
      -x, --exit_early      첫 발견 시 스캔 종료
      -m METHOD, --method METHOD
                            사용할 HTTP 메소드 (예: GET, POST) 기본값: POST
      -l LOG, --log LOG     로그 파일 지정
      -q, --quiet           조용한 모드, 발견된 문제만 로그에 기록
      -t TIMEOUT, --timeout TIMEOUT
                            소켓 타임아웃 값 기본값: 5
      --no-color            색상 코드 출력 억제
      -c CONFIGFILE, --configfile CONFIGFILE
                            페이로드 설정 파일 경로
    

    Smuggler는 최소한 -u/--url 인수를 통한 URL 또는 stdin을 통해 파이프로 전달된 URL 목록이 필요합니다. URL이 https://를 지정하면 Smuggler는 SSL/TLS를 사용하여 호스트:포트에 연결합니다. URL이 http://를 지정하면 SSL/TLS를 전혀 사용하지 않습니다. 호스트만 지정되면 스크립트는 기본적으로 https://를 사용합니다.

    -v/--vhost <host>를 사용하여 서버 주소와 다른 호스트 헤더를 지정합니다.

    -x/--exit_early를 사용하여 잠재적 문제가 발견되면 해당 서버의 스캔을 종료합니다. 파이프 모드에서는 목록의 다음 호스트로 계속 진행합니다.

    -m/--method <method>를 사용하여 POST 대신 다른 HTTP 동사(예: GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD 등)를 지정합니다.

    -l/--log <file>을 사용하여 stdout 외에도 파일로 출력합니다.

    -q/--quiet를 사용하여 출력을 줄이고 발견된 문제만 기록합니다.

    -t/--timeout <value>를 사용하여 소켓 타임아웃을 지정합니다. 값은 소켓이 정지되었음을 결론 내릴 수 있을 만큼 충분히 높아야 하지만 테스트 속도를 높이기 위해 충분히 낮아야 합니다 (기본값: 5).

    --no-color를 사용하여 stdout에 출력되는 색상 코드를 억제합니다 (로그는 기본적으로 색상 코드를 포함하지 않음).

    -c/--configfile <configfile>을 사용하여 자신만의 Smuggler 변형 설정 파일을 지정합니다 (기본값: default.py).

    설정 파일

    설정 파일은 smuggler의 ./config 디렉터리에 있는 Python 파일입니다. 이 파일들은 HTTP 요청의 내용과 테스트할 전송 인코딩 변형을 설명합니다.

    다음은 default.py의 예시 내용입니다:

    root@kitploit:~
    def render_template(gadget):
    	RN = "\r\n"
    	p = Payload()
    	p.header  = "__METHOD__ __ENDPOINT__?cb=__RANDOM__ HTTP/1.1" + RN
    	# p.header += "Transfer-Encoding: chunked" +RN	
    	p.header += gadget + RN
    	p.header += "Host: __HOST__" + RN
    	p.header += "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" + RN
    	p.header += "Content-type: application/x-www-form-urlencoded; charset=UTF-8" + RN
    	p.header += "Content-Length: __REPLACE_CL__" + RN
    	return p
    
    
    mutations["nameprefix1"] = render_template(" Transfer-Encoding: chunked")
    mutations["tabprefix1"] = render_template("Transfer-Encoding:\tchunked")
    mutations["tabprefix2"] = render_template("Transfer-Encoding\t:\tchunked")
    mutations["space1"] = render_template("Transfer-Encoding : chunked")
    
    for i in [0x1,0x4,0x8,0x9,0xa,0xb,0xc,0xd,0x1F,0x20,0x7f,0xA0,0xFF]:
    	mutations["midspace-%02x"%i] = render_template("Transfer-Encoding:%cchunked"%(i))
    	mutations["postspace-%02x"%i] = render_template("Transfer-Encoding%c: chunked"%(i))
    	mutations["prespace-%02x"%i] = render_template("%cTransfer-Encoding: chunked"%(i))
    	mutations["endspace-%02x"%i] = render_template("Transfer-Encoding: chunked%c"%(i))
    	mutations["xprespace-%02x"%i] = render_template("X: X%cTransfer-Encoding: chunked"%(i))
    	mutations["endspacex-%02x"%i] = render_template("Transfer-Encoding: chunked%cX: X"%(i))
    	mutations["rxprespace-%02x"%i] = render_template("X: X\r%cTransfer-Encoding: chunked"%(i))
    	mutations["xnprespace-%02x"%i] = render_template("X: X%c\nTransfer-Encoding: chunked"%(i))
    	mutations["endspacerx-%02x"%i] = render_template("Transfer-Encoding: chunked\r%cX: X"%(i))
    	mutations["endspacexn-%02x"%i] = render_template("Transfer-Encoding: chunked%c\nX: X"%(i))
    

    아직 자신만의 사용자 정의 헤더와 User-Agent를 지정하는 입력 인수는 없습니다. default.py를 기반으로 자신만의 설정 파일을 만들어 원하는 대로 수정하는 것이 좋습니다.

    Smuggler는 3개의 설정 파일을 제공합니다: default.py (빠름), doubles.py (특수 용도, 느림), exhaustive.py (매우 느림) default.py는 변형이 적기 때문에 가장 빠릅니다.

    설정 파일은 명령줄 옵션 -c/--configfile <configfile>을 사용하여 지정합니다.

    페이로드 디렉터리

    Smuggler 디렉터리 내부에는 payloads 디렉터리가 있습니다. Smuggler가 잠재적인 CLTE 또는 TECL desync 문제를 발견하면 해당 문제가 있는 페이로드의 바이너리 txt 파일을 payloads 디렉터리에 자동으로 덤프합니다. 모든 페이로드 파일 이름에는 호스트 이름, desync 유형 및 변형 유형이 주석으로 포함됩니다. 이러한 페이로드를 사용하여 서버에 직접 netcat으로 연결하거나 다른 분석 도구로 가져올 수 있습니다.

    도우미 스크립트

    desync 문제를 찾은 후에는 여기 있는 Turbo Intruder desync 스크립트를 자유롭게 사용하세요: https://github.com/defparam/tiscripts DesyncAttack_CLTE.py 및 DesyncAttack_TECL.py는 desync 공격을 준비하는 데 유용한 스크립트입니다.

    라이선스

    이 스크립트들은 MIT 라이선스 하에 배포됩니다. LICENSE를 참조하십시오.

    도구 다운로드