본문으로 이동

경쟁 상태와 스머글링 ​

경쟁 상태 / 스머글링은 타이밍에 민감한 공격과 프로토콜 수준의 HTTP 공격을 위한 두 가지 전용 도구를 제공합니다.

경쟁 상태 ​

경쟁 상태 탭은 같은 엔드포인트에 요청의 여러 복사본을 동시에 보내고, 병렬 실행 간 응답과 시간을 비교할 수 있게 합니다.

사용 시점 ​

  • TOCTOU(검사 시점 / 사용 시점): 동시 요청으로 검사와 상태 변경 작업을 분리할 수 있는지 테스트합니다.
  • 계정 조작: 잔액 변경, 쿠폰 사용 또는 한도가 있는 작업을 동시에 보내 이중 지출이나 초과 사용이 가능한지 테스트합니다.
  • 투표 제한 또는 요청 빈도 제한 우회: 사용자별 제한이 원자적으로 적용되는지 확인합니다.

경쟁 상태 테스트 실행 ​

  1. 경쟁 상태 탭에서 대상 요청을 구성하거나 해당 탭으로 요청을 보냅니다.
  2. 동시 요청 수를 설정합니다. 병렬로 보낼 복사본의 수입니다.
  3. 요청 수가 표시된 전송 버튼을 클릭합니다. 모든 복사본을 최대한 동시에 보냅니다.
  4. 응답 표에서 각 복사본의 상태 코드, 본문, 경과 시간을 검토합니다.
  5. 응답 간 차이(서로 다른 상태 코드나 응답 본문, 2번째 이후 복사본의 예상치 못한 성공)는 경쟁 상태가 발생할 수 있는 시간 구간을 나타냅니다.

HTTP/2 단일 패킷 경쟁 상태 테스트 ​

대상이 HTTP/2를 지원하면 H2 단일 패킷 모드를 활성화합니다. HTTP/2는 모든 병렬 요청을 하나의 연결에서 다중화하여 네트워크 지터를 없애고 서버에 요청이 동시에 도착할 가능성을 높입니다.

HTTP 요청 스머글링 ​

HTTP 스머글링 탭은 서버가 모호한 Content-Length 및 Transfer-Encoding 헤더를 처리하는 방식을 테스트하여 프런트엔드와 백엔드의 동기화 불일치를 탐지합니다.

배경 ​

리버스 프록시와 백엔드 서버가 한 요청의 끝과 다음 요청의 시작을 다르게 판단하면, 요청 A에 숨겨 넣은 접두 부분이 요청 B 앞에 붙을 수 있습니다. 영향은 캐시 오염부터 인증 우회와 임의 요청 주입까지 다양합니다.

동기화 불일치 유형 ​

유형설명
CL.TE프런트엔드는 Content-Length, 백엔드는 Transfer-Encoding을 사용함
TE.CL프런트엔드는 Transfer-Encoding, 백엔드는 Content-Length를 사용함
TE.TE양쪽 모두 Transfer-Encoding을 사용하지만 난독화된 헤더에 다르게 반응함

스머글링 탐색 실행 ​

  1. HTTP 스머글링 탭에서 대상 엔드포인트를 선택합니다.
  2. 테스트할 동기화 불일치 유형을 선택합니다.
  3. 스머글링 점검 실행을 클릭합니다. 도구가 특수하게 구성한 요청을 보내고 응답을 측정합니다.
  4. 요청 순서에서 두 번째 요청이 시간 초과되거나 예상치 못한 응답을 반환하면 동기화 불일치 가능성이 있습니다.
  5. 발견 사항을 만들기 전에 수동으로 확인합니다. 네트워크 상황 때문에 탐색 요청과 무관한 시간 초과가 발생하면 오탐이 생길 수 있습니다.

독점 소프트웨어입니다. 모든 권리는 저작권자에게 있습니다.