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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
http2-rst-stream-attacker — CVE-2023-44487에 대한 서버의 취약성을 확인하기 위해 HEADERS 및 RST_STREAM 프레임을 신속하게 전송하고 서버의 응답을 기록하는 고도로 구성 가능한 도구입니다. | Kitploit
도구/GitHubGitHub/ndrscodes/http2-rst-stream-attacker
Vulnerability AnalysisExploitationWeb SecurityPenetration Testing
GitHubndrscodes/http2-rst-stream-attacker

http2-rst-stream-attacker

CVE-2023-44487에 대한 서버의 취약성을 확인하기 위해 HEADERS 및 RST_STREAM 프레임을 신속하게 전송하고 서버의 응답을 기록하는 고도로 구성 가능한 도구입니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
622년 전아직 검토되지 않음

CVE-2023-44487 및 http2-rst-stream-attacker

CVE-2023-44487

CVE-2023-44487은 HTTP2 프로토콜 자체를 대상으로 하는 익스플로잇입니다. HTTP2에서 데이터 요청은 HEADERS 프레임을 전송하여 시작됩니다. 서버는 이 프레임을 수신한 후 요청 처리를 시작하고, 모든 데이터가 전송될 때까지 DATA 프레임을 연속으로 보냅니다. HTTP2는 또한 스트림을 언제든지 닫는 데 사용할 수 있는 RST_STREAM 프레임을 정의합니다. 공격을 방지하기 위해 서버는 일반적으로 동시에 열리는 스트림 수를 제한합니다(기본값 100). 클라이언트가 실제로 모든 리소스가 소비될 때까지 기다린다면 이 제한에 도달하는 경우는 드뭅니다.

이 공격은 단순한 이유로 작동합니다. 클라이언트는 어느 시점에든 RST_STREAM 프레임을 보낼 수 있습니다. RST_STREAM 프레임은 스트림을 닫으며, 닫힌 스트림은 동시 스트림 수에 포함되지 않습니다. 즉, 클라이언트는 요청을 보낸 직후 연결을 닫기만 하면 이 제한에 걸리지 않고 요청을 빠르게 전송할 수 있습니다. 공격 대상 서버는 경우에 따라 여전히 데이터 로딩을 시작하므로 과도한 부하가 발생합니다.

이 도구는 이 공격에 대한 서버의 취약성을 확인하는 것을 목표로 합니다. 하나 이상의 동시 HTTP2 연결을 설정한 다음 지정된 수의 HEADER 프레임을 보내고 이어서 RST_STREAM 프레임을 보냅니다.

또한 HEADERS 프레임과 RST_STREAM 프레임 사이의 지연, 열 스트림 수, 스트림당 전송할 프레임 수 등 다양한 기타 구성 옵션을 제공합니다. 공격이 완료되면 수신된 프레임 수와 오류 및 GOAWAY 프레임 수신 횟수에 대한 정보가 포함된 요약을 출력합니다. 이를 통해 서비스가 CVE-2023-44487에 취약한지 여부를 식별하는 데 도움을 받을 수 있습니다.

실행

현재 이 도구는 소스 코드로만 배포되므로 go install이 필요합니다. 도구는 go run main.go <options> 명령으로 실행할 수 있습니다. 또한 monitor.log 파일에 기록된 지연 시간 정보를 플로팅하는 데 사용할 수 있는 python 스크립트도 있습니다.

도구

또한 더 정확하고 광범위한 측정을 위해 새로운 python 도구를 만들었습니다. tooling 폴더에 있는 runner.py 파일은 config.py에 정의된 값(자세한 내용은 config-sample.py 참조)을 읽고 정의된 모든 docker 컨테이너에 대해 모든 테스트를 실행합니다. 그런 다음 paths 배열에 정의된 모든 경로에 대해 가장 성공적인 테스트(중앙값 + 평균 지연 시간이 가장 높은 테스트)를 실행합니다. 실행된 각 테스트에 대한 플롯과 로그 파일을 출력합니다.

이 도구는 아직 개발 중입니다. 연구 논문을 위해 이러한 모든 테스트를 수동으로 실행하기가 너무 귀찮아서 만들었을 뿐입니다. 정리하거나 우리의 사용 사례 외에도 실제로 사용할 수 있게 만들려면 PR을 자유롭게 제출하세요.

CLI 플래그

현재 다음 CLI 옵션이 구현되어 있습니다:

예제 출력

이 도구는 요약과 함께 많은 디버그 정보를 출력합니다. 디버그 정보에는 연결이 설정된 방식, 현재 진행 상황 및 현재 전송 중인 프레임 유형에 대한 정보가 포함됩니다.

요약은 다음과 같은 형태입니다(구성에 따라 다름)

root@kitploit:~
####################SUMMARY####################
Packet types received:
	PING: 2
	HEADERS: 12
	SETTINGS: 0
	DATA: 11
	GOAWAY: 3
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
Attack ending reasons (per receiving thread):
	GoAway events: 3
	Timeout events: 0
	Error events: 0
Summary for connection 2
	PING: 1
	HEADERS: 9
	SETTINGS: 0
	DATA: 6
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 1
	PING: 1
	HEADERS: 3
	SETTINGS: 0
	DATA: 5
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 0
	PING: 0
	HEADERS: 0
	SETTINGS: 0
	DATA: 0
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.

수집해야 할 다른 통계가 있다고 생각되면 주저하지 말고 연락하거나 이슈를 생성하세요!

TODO

  • HEADERS 전송과 해당 요청에 대한 첫 프레임 수신 사이의 평균 지연 시간 계산
  • HEADERS 전송과 GOAWAY 프레임 수신 사이의 평균 지연 시간 계산(있는 경우)
  • 서버가 올바르게 응답한 연결 비율 계산
  • 서버가 올바르게 응답한 스트림 비율 계산(연결별 및 전체)
  • 요약에 전송된 패킷 수 포함

면책 조항

이 도구는 연구 목적으로만 사용됩니다. 본인이 소유하거나 관리하지 않는 서버에 대한 공격을 실행하기 위한 것이 아닙니다. 제공되는 통계의 정확성이나 공격 및 이로 인한 서버와 서비스에 대한 결과에 대해 어떠한 책임도 지지 않습니다.

도구 다운로드
FlagDefault의미
frames1모든 스트림에서 전송할 HEADERS 및 RST_STREAM 프레임 수
connections1공격을 실행할 TLS 연결 수(동시에)
consecutiveSends1RST_STREAM 프레임을 보내기 전에 전송할 HEADERS 프레임 수(흐름당)
connectAttempts1테스트를 실행할 연속 연결 수(연결 루틴당)
delay0HEADERS 프레임과 RST_STREAM 프레임을 보내는 사이에 대기할 시간(ms)
ignoreGoAwayfalsetrue이면 GOAWAY 스트림으로 인해 수신 루틴이 종료되지 않습니다. 대신 10초 이상 프레임을 수신하지 못할 때까지 대기합니다.
monitorfalse성능 모니터링 활성화
monitorDelay100응답 지연 시간 테스트 사이에 대기할 시간(ms)
monitorLog./monitor.log모니터 지연 로그를 기록할 파일
routines1공격할 스트림 수
skipValidationtruetrue이면 서버 인증서를 검증하지 않습니다(기본값 - 어차피 공격자이므로 보안은 신경 쓰지 않습니다)
timeout1000연결 시도를 무효로 간주하고 중지하기 전에 새 프레임을 기다리는 시간
urlhttps://localhost:433/공격을 실행할 url