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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
rapid-reset-check — ALPN을 통해 HTTP/2를 협상하는 HTTPS 엔드포인트를 목록화하여 CVE-2023-44487 완화 검토가 필요한 시스템을 식별하는 Go CLI입니다. 비악용적이며, 인증서를 검증하고 안전한 기본값을 사용하는 TLS 검사를 수행합니다. | Kitploit
도구/GitHubGitHub/ramonzx6/rapid-reset-check
Vulnerability ScannersConfiguration AuditingInformation GatheringWeb SecurityNetwork Security
GitHubramonzx6/rapid-reset-check

rapid-reset-check

ALPN을 통해 HTTP/2를 협상하는 HTTPS 엔드포인트를 목록화하여 CVE-2023-44487 완화 검토가 필요한 시스템을 식별하는 Go CLI입니다. 비악용적이며, 인증서를 검증하고 안전한 기본값을 사용하는 TLS 검사를 수행합니다.

저장소 보기
1일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Rapid Reset Check

rapid-reset-check는 HTTP/2를 노출하므로 CVE-2023-44487 완화 검토가 필요한 HTTPS 엔드포인트를 신속하게 인벤토리화하는 작은 Go CLI 도구입니다.

이 스캐너는 의도적으로 악용을 수행하지 않습니다. 각 대상을 해석하고, 인증서가 검증된 TLS 연결을 연 다음, ALPN을 통해 h2와 http/1.1을 제안하고, 상대방(peer)이 선택한 것을 기록한 뒤 연결을 닫습니다. HTTP 요청, HTTP/2 연결 프리페이스(preface), 스트림, RST_STREAM 프레임 또는 플러드 트래픽을 전혀 보내지 않습니다.

[!IMPORTANT] h2 협상은 노출 관찰일 뿐, 서비스가 취약하거나 패치되지 않았음을 증명하는 것이 아닙니다. 원격 핸드셰이크만으로는 HTTP/2 구현의 Rapid Reset 제한, 패치 수준, 업스트림 오리진 또는 DDoS 제어를 검증할 수 없습니다.

왜 이런 방식인가?

CVE-2023-44487은 빠른 HTTP/2 스트림 생성 및 취소를 악용하는 서비스 거부(DoS) 기법입니다. 실제 서비스를 대상으로 해당 조건을 증명하려는 시도 자체가 서비스를 방해할 수 있는 트래픽을 필요로 합니다. 대신 이 도구는 안전한 첫 번째 질문에 답합니다: 테스트된 TLS 엔드포인트 중 현재 HTTP/2를 협상하므로 운영자가 완화 조치를 확인해야 하는 것은 무엇인가?

TLS를 통한 HTTP/2는 RFC 9113에 정의된 h2 ALPN 식별자로 광고됩니다. Google은 요청 경로에 있는 모든 HTTP/2 지원 서버, 프록시 및 로드 밸런서를 검증하거나 패치할 것을 권장합니다. 을 참조하세요.

CVE-2023-44487 지침

릴리스 바이너리 설치

도구를 실행하는 데 Go는 필요하지 않습니다. 최신 GitHub 릴리스에서 플랫폼에 맞는 아카이브를 다운로드하세요:

플랫폼릴리스 에셋
Linux x86-64rapid-reset-check_<version>_linux_amd64.tar.gz
Linux ARM64rapid-reset-check_<version>_linux_arm64.tar.gz
macOS Intelrapid-reset-check_<version>_darwin_amd64.tar.gz
macOS Apple siliconrapid-reset-check_<version>_darwin_arm64.tar.gz
Windows x86-64rapid-reset-check_<version>_windows_amd64.zip
Windows ARM64rapid-reset-check_<version>_windows_arm64.zip

아카이브를 추출한 다음 rapid-reset-check --version을 실행하세요. Windows에서 실행 파일의 이름은 rapid-reset-check.exe입니다.

각 릴리스에는 SHA256SUMS가 포함됩니다. Linux에서는 같은 디렉터리에서 다운로드한 아카이브를 다음으로 검증하세요:

root@kitploit:~
sha256sum --ignore-missing --check SHA256SUMS

macOS에서는 shasum -a 256 <archive>를 SHA256SUMS의 해당 줄과 비교하세요. 공개 릴리스 아카이브에는 GitHub 아티팩트 증명(attestation)도 포함되며, GitHub CLI로 확인할 수 있습니다:

root@kitploit:~
gh attestation verify <archive> --repo ramonzx6/http-script-json

소스에서 빌드

  • Go 1.22 이상

Node.js, cURL, nghttp2 또는 WHOIS 설치가 필요하지 않습니다.

root@kitploit:~
go test ./...
go build -o rapid-reset-check ./cmd/rapid-reset-check

소스 빌드는 --version에서 dev를 보고하며, 릴리스 빌드는 릴리스 태그에서 버전을 받습니다.

빠른 시작

소유하거나 평가 권한이 있는 엔드포인트만 스캔하세요.

공개 엔드포인트 하나 이상을 스캔합니다:

root@kitploit:~
./rapid-reset-check example.com api.example.com:8443

호스트 이름만 있는 대상은 포트 443의 HTTPS로 정규화됩니다. authority만 있는 HTTPS URL도 허용됩니다:

root@kitploit:~
./rapid-reset-check https://example.com https://api.example.com:8443

저장소의 JSON 대상 목록을 스캔합니다:

root@kitploit:~
./rapid-reset-check --input json/urls.json

자동화를 위해 표준 입력을 사용합니다:

root@kitploit:~
printf '["example.com", "api.example.com"]' | ./rapid-reset-check --input -

모든 제한 및 출력 옵션은 ./rapid-reset-check --help를 실행하세요.

입력

--input은 원래 JSON 배열 형식을 허용합니다:

root@kitploit:~
[
  "example.com",
  "api.example.com:8443",
  "https://www.example.net"
]

객체 형식인 {"urls": [...]} 및 {"targets": [...]}도 지원됩니다. 위치 인자 대상과 --input은 의도적으로 상호 배타적입니다. 중복된 정규화 엔드포인트는 한 번만 스캔되며, 각 실행은 입력 대상 4,096개로 제한됩니다.

HTTPS 엔드포인트만 범위에 포함됩니다. 자격 증명, 루트가 아닌 경로, 쿼리, 프래그먼트, 지원되지 않는 스킴, 잘못된 포트 및 모호한 호스트 이름은 자동으로 재작성되지 않고 거부됩니다.

평가 결과

평가의미
h2_observed_review_required검증된 TLS 피어 중 하나 이상이 h2를 선택했습니다. 해당 경로의 모든 HTTP/2 구성 요소를 검토하세요. 이는 취약점 판정이 아닙니다.
h2_not_observed_on_tested_path선택된 모든 주소가 h2를 선택하지 않고 검증된 핸드셰이크를 완료했습니다. 이는 특정 시점의 경로 관찰일 뿐, 안전을 보장하는 것은 아닙니다.
indeterminateDNS, 연결, 시간 초과, TLS, 인증서 또는 주소 제한 문제로 완전한 관찰이 불가능했습니다.
not_scanned_policy해석된 주소가 스캐너의 네트워크 안전 정책에 의해 제외되었습니다.
invalid_target입력이 잘못되었거나 지원되는 HTTPS authority 범위를 벗어났습니다.

보고서에는 시도된 각 해석 주소, 협상된 ALPN, TLS 버전 및 암호, 제한된 인증서 ID/유효성 데이터, 타이밍, 정책 결정, 생략된 주소 수, 명시적 완전성 플래그 및 요약이 포함됩니다. 응답 본문, 응답 헤더, 쿠키 또는 원시 인증서는 수집하지 않습니다.

안전한 기본값

  • TLS 인증서와 호스트 이름이 검증됩니다. --ca-file로 개인 CA를 추가할 수 있으며, 안전하지 않은 검증 모드는 없습니다.
  • 루프백, 사설, 링크-로컬, 멀티캐스트, 미지정, CGNAT, 문서용, 벤치마크 및 기타 예약 주소는 기본적으로 차단됩니다. --allow-private은 평가 권한이 있는 내부 엔드포인트에만 사용하세요.
  • DNS 결과는 각 연결에 고정되며, SNI 및 인증서 검증을 위해 원래 호스트 이름이 유지됩니다.
  • 연결 동시성, 주소별 시간 초과 및 대상별 주소 수는 제한되어 있습니다.
  • 이 스캐너는 HTTP 요청을 전혀 보내지 않으므로 자동으로 재시도하지 않으며 리디렉션을 따르지 않습니다. 평가해야 하는 각 HTTPS authority를 제출하세요.

예시 옵션:

root@kitploit:~
./rapid-reset-check \
  --format json \
  --timeout 5s \
  --concurrency 4 \
  --max-addresses 8 \
  example.com > report.json

권한이 있는 사설 PKI 엔드포인트의 경우:

root@kitploit:~
./rapid-reset-check \
  --allow-private \
  --ca-file ./internal-root-ca.pem \
  service.internal:8443

종료 코드 0은 모든 대상이 완전한 ALPN 관찰 결과를 생성했음을 의미합니다. 종료 코드 1은 하나 이상의 대상이 유효하지 않거나, 정책에 의해 차단되었거나, 판정 불가(indeterminate)임을 의미하며, 보고서는 여전히 작성됩니다. CLI 사용법 및 구성 오류는 2를 반환합니다. h2 관찰 자체는 종료 코드를 변경하지 않습니다. 이는 취약점 판정이 아닌 인벤토리 신호이기 때문입니다.

결과 해석 및 조치

모든 h2_observed_review_required 결과에 대해:

  1. 외부에 노출된 TLS 종단점과 그 뒤에 있는 모든 HTTP/2 지원 프록시, 로드 밸런서, 게이트웨이 및 오리진 서버를 식별하세요.
  2. 각 제품 및 버전을 공급업체의 CVE-2023-44487 권고와 대조하여 확인하세요.
  3. 최신 패치와 공급업체의 재설정/속도 제한 지침을 적용하세요.
  4. 엣지 DDoS 제어가 오리진을 보호하며 대체 호스트 이름, 주소 또는 포트를 통해 우회할 수 없는지 확인하세요.
  5. 신뢰할 수 있는 인벤토리 또는 텔레메트리에서 구성 및 패치 상태를 검증하세요. 이 스캐너의 ALPN 결과를 완화 조치의 증거로 사용하지 마세요.

제한 사항

결과는 호스트 이름, DNS 응답, 네트워크 경로, TLS 엔드포인트 및 스캔 시점에 따라 달라집니다. CDN, 애니캐스트, split-horizon DNS, 로드 밸런싱, 대체 포트 및 테스트되지 않은 주소에서는 다른 결과가 나올 수 있습니다. 이 스캐너는 다음을 수행하지 않습니다.

  • 서버가 취약한지, 패치되었는지, 완화되었는지 또는 안전한지 판단하지 않습니다.
  • Rapid Reset 동작을 테스트하거나 리셋 프레임을 보내지 않습니다.
  • 클리어텍스트 HTTP/2(h2c), QUIC/HTTP/3, 리디렉션, 엣지 뒤에 숨겨진 오리진 또는 비-HTTPS 서비스를 검사하지 않습니다.
  • 스푸핑 가능한 Server 헤더 또는 CDN 핑거프린트에서 패치 상태를 유추하지 않습니다.
  • 구성 검토, 자산 인벤토리, 공급업체 지침 또는 격리된 환경에서의 공인된 부하 테스트를 대체하지 않습니다.

개발

root@kitploit:~
gofmt -w ./cmd ./internal
go vet ./...
go test ./...
go test -race ./...
go build ./...

테스트 스위트는 로컬 TLS 픽스처를 사용하며 공개 서비스를 스캔하지 않습니다.

자동화된 릴리스

Release Please는 Conventional Commit 메시지에서 릴리스 버전과 vX.Y.Z 태그를 관리합니다. 일반적인 개발에서는 태그를 만들거나 푸시할 필요가 없습니다:

  1. main에 병합된 커밋은 Release Please가 버전 및 체인지로그 변경 사항이 포함된 릴리스 PR을 열거나 업데이트하도록 합니다.
  2. 해당 릴리스 PR을 병합하면 버전 태그와 초안 GitHub 릴리스가 생성됩니다.
  3. 동일한 워크플로가 태그된 소스를 테스트하고, 6개 아카이브를 모두 크로스 컴파일하고, 체크섬과 출처(provenance)를 생성하고, 에셋을 업로드하고, 초안을 게시합니다.

패치 변경에는 fix:를, 사소한 변경에는 feat:를, 주요 변경에는 breaking-change 표시(!) 또는 BREAKING CHANGE: 푸터를 사용하세요. 메인테이너는 Release Please가 PR을 관리할 수 있도록 Settings > Actions > General > Workflow permissions > Allow GitHub Actions to create and approve pull requests를 한 번 활성화해야 합니다.

Release Please가 태그를 생성한 후 에셋 게시에 실패하면 릴리스는 초안으로 남습니다. 실패를 수정한 후 기존 vX.Y.Z 태그로 Release 워크플로를 수동으로 다시 실행하세요. 대체 태그를 만들거나 푸시하지 마세요.

도구 다운로드