Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ats-ipallow-method-case — Apache Traffic Server 10.2.0 - 높음 - 원격 - 권한 잔여 - ip_allow 메서드 대소문자 | Kitploit
도구/GitHubGitHub/abraxas/ats-ipallow-method-case
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityNetwork SecurityLabs & Practice
GitHubabraxas/ats-ipallow-method-case

ats-ipallow-method-case

Apache Traffic Server 10.2.0 - 높음 - 원격 - 권한 잔여 - ip_allow 메서드 대소문자

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - ats-ipallow-method-case

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  ats-ipallow-method-case

ats-ipallow-method-case

분류: 권한 잔여 도달 범위: 원격

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

HTTP/1 대소문자 혼용 메서드는 기본 ip_allow.yaml의 PURGE/PUSH/DELETE/TRACE 거부를 우회하고, 리맵된 오리진으로 ATS uid로서 TUNNEL됩니다. YAML과 remap @method 파싱은 대소문자를 구분하지 않습니다. H1은 토큰화한 뒤 요청 바이트를 strncmp하고 대소문자가 다르면 -1을 반환합니다. 거부 반전은 그 알 수 없는 토큰을 허용으로 처리합니다. HTTP/2 :method는 대소문자를 구분하지 않으며 계속 거부됩니다. 캐시 PURGE/PUSH는 여전히 잘 알려진 wksidx가 필요하므로, 대소문자 혼용은 캐시를 퍼지하거나 푸시하지 않습니다.

이것은 기본 인바운드 메서드 ACL의 잔여이며, CVE-2026-33267(hop-by-hop)도 아니고 반전된 빈-비표준 remap ACL(이 핀에서는 종료됨)도 아닙니다.

ID아직 CVE 없음
분류권한 잔여
도달 범위원격 (비루프백 클라이언트로부터의 비인증 HTTP/1)
CWECWE-178, CWE-863
CVSS높음: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
제품Apache Traffic Server
영향받음10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) 기본 리버스 프록시
인증없음. 기본 ip_allow.yaml. remap_required: 1 및 map 하나.
라이선스GNU Affero GPL v3.0
랩127.0.0.1:18710 전용. 이미지 ats-10.2.0-lab:local.

태그 10.2.0, 커밋 b1df7334b39a878971c376da849e8da4984918b6을 핀했습니다. 최신 안정 버전 2026년 8월 17일. 소스 빌드 이미지이며 가젯이 아닙니다.

공격자가 할 수 있는 일

비루프백 주소에서 HTTP/1로 일반적인 리버스 프록시(remap_required: 1 및 map 하나)에 도달합니다. 127.0.0.1은 모두 허용입니다. 빈 plugin.config. 기본 ip_allow.yaml.

메서드싱크권한
172.x 사이드카에서 리맵 후 HTTP/1 delete / DeLeTehdrtoken_method_tokenize 후 process_quick_http_filter 후 METHOD_NOT_SUPPORTED TUNNEL (HdrToken.cc:512-528, HttpTransact.cc:6855-6858)무결성 (랩 입증): 오리진 200 DELETED ATS-IPALLOW-METHOD-CASE-WITNESS. 대문자 DELETE는 403. 오리진 메서드는 ATS uid로서.
HTTP/1 trace동일 TUNNEL정찰 (랩 입증): 오리진 200 TRACE-OK. ATS는 TRACE 에코를 구성하지 않음(wksidx가 TRACE가 아님). 대문자 TRACE는 403.
HTTP/1 purge / push캐시 작업이 아닌 알 수 없는 메서드 TUNNEL무결성 (ATS 캐시): 종료됨 (랩 입증). 오리진은 PURGE-ORIGIN / PUSH-ORIGIN을 확인함. 캐시 작업에는 잘 알려진 wksidx가 필요. push_method_enabled 기본값 0.
동일한 대소문자 혼용 요청오리진 홉 하나 추가가용성 (랩 입증): 프로세스 종료 아님.

랩 입증 vs 추론: 대문자 거부, 대소문자 혼용 DELETE/TRACE 터널, 캐시 PURGE/PUSH 종료: 랩. 오리진 DELETE/TRACE는 해당 오리진이 메서드 대소문자를 폴딩하는 경우에만(IIS / 일부 Java). RFC 9110 대소문자 구분 오리진(nginx, httpd, Go)은 501로 응답. 랩 오리진은 대소문자를 폴딩함.

요구 사항: 비루프백 클라이언트로부터의 HTTP/1. remap_required: 1과 하나의 map. PURGE/PUSH/DELETE/TRACE에 대한 기본 인바운드 거부. HTTP/2 :method는 대소문자 무시(nocase)로도 여전히 거부됨.

닫힌 상태로 유지되는 인접 표면

표면실험실
172.x에서의 정확한 대소문자 DELETE / TRACE403, 오리진에 도달하지 않음
HTTP/2 :method 혼합 대소문자nocase 토큰화, 여전히 거부됨
ATS 캐시 작업으로서의 혼합 대소문자 purge / push오리진은 해당 동사를 확인함; 캐시 경로는 닫힌 상태 유지
CONNECT 대상 거부 (0.0.0.0/8, RFC1918, 링크 로컬, ::ffff:0:0/96)기본 ip_allow.yaml 아웃바운드
remap_required: 1 미스404, 오픈 릴레이 아님
반전된 빈 비표준 remap ACLCHANGELOG 수정 사항 유지됨
CVE-2026-33267 홉바이홉 / @ 제거이 핀에서 닫힘

발견 경위

기본 ip_allow.yaml은 기본 제공되는 원격 메서드 ACL입니다. YAML 로드는 hdrtoken_tokenize(nocase)를 사용합니다. DENY 반전은 그런 다음 _method_mask = ALL & ~listed와 빈 비표준 목록과 함께 _deny_nonstandard_methods = true를 설정합니다 (IPAllow.cc:545-548).

HTTP/1 파싱은 hdrtoken_method_tokenize로 토큰화합니다. DFA는 대소문자를 구분하지 않습니다; 그런 다음 헬퍼는 요청 바이트를 잘 알려진 문자열과 strncmp하고 대소문자가 일치하지 않으면 -1을 반환합니다:

retval = hdrtoken_tokenize(string, string_len, &string_out);
if (retval >= 0) {
  if (strncmp(string, string_out, string_len) != 0) {
    // Not a case match
    retval = -1;
  }
}

EndRemapRequest는 method == -1에 대해 isNonstandardMethodAllowed를 요청합니다 (IPAllow.h:365-376). 비표준 집합이 비어 있고 비표준 거부가 설정된 경우 !method_in_set이 되므로, 대소문자가 혼합된 메서드는 허용됩니다. is_this_http_method_supported(-1)은 false입니다. METHOD_NOT_SUPPORTED는 ProxyMode_t::TUNNELLING을 설정하고 true를 반환합니다. 문서에 따르면 ATS는 알 수 없는 메서드를 오리진으로 전달합니다. TUNNELLING에서는 캐시 조회가 건너뛰어집니다.

HTTP/2 :method는 대소문자 검사 없이 HTTPHdr::method_set -> hdrtoken_tokenize를 거칩니다. H2 delete는 DELETE가 되어 거부됩니다. 이 잔여 사항은 HTTP/1에 해당합니다.

잘못된 접근: RFC 9110의 대소문자 구분 오리진 때문에 거부 목록이 무효라고 간주하기 (ATS 캐시 PURGE/PUSH는 여전히 차단됨; 오리진 DELETE/TRACE가 잔여 사항임); 127.0.0.1에서 curl 실행하기 (ALL 허용); 캐시 퍼지라고 주장하기; hop-by-hop으로 다시 제기하기.

극적인 요소: 리버스 셸. 오라클은 대문자 403 이후 오리진에 나타나는 증인 문자열입니다.

실습

python3 ats-ipallow-method-case-Abraxas-Labs.py

또는

cd lab
./run.sh

Loopback 127.0.0.1:18710. Compose 프로젝트 ats-ipallow-method-case. 이미지 ats-10.2.0-lab:local (10.2.0의 소스 빌드). 공격자 사이드카는 172.x에 위치하여 localhost ALL이 deny를 가리지 않도록 함. Origin은 메서드 대소문자를 병합함. Witness ATS-IPALLOW-METHOD-CASE-WITNESS. 마지막 줄:

SUCCESS ats-ipallow-method-case how=live control=DELETE/TRACE-403 poc=delete/DeLeTe/trace-tunneled cache-purge-push=closed ATS-IPALLOW-METHOD-CASE-WITNESS

수정 방법

YAML과 HTTP/2가 이미 하는 것과 동일한 방식(nocase)으로 HTTP/1 메서드를 토큰화하거나, 알 수 없는 메서드 TUNNEL 이전에 ip_allow.yaml의 deny 이름을 nocase로 매칭한다. 캐시 PURGE/PUSH는 잘 알려진 wksidx에 그대로 둔다. 거부된 잘 알려진 메서드의 대소문자 변형을 새로운 메서드로 취급하지 않는다.

참고 자료

  • github.com/apache/trafficserver 태그 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6)
  • HdrToken.cc hdrtoken_method_tokenize
  • IPAllow.cc DENY 반전
  • IPAllow.h isNonstandardMethodAllowed
  • HttpTransact.cc METHOD_NOT_SUPPORTED TUNNEL
  • ip_allow.yaml.default
  • CWE-178 · CWE-863
도구 다운로드