ν”Όλ“œλ‘œ λŒμ•„κ°€κΈ°
🧩 The Web Cache "Whack-a-Mole" at PortSwigger Academy 🧩
Dev.toDev.to
Security

Path Mapping μ˜€μ„€μ • 및 Cache Logic ν—ˆμ μ„ μ΄μš©ν•œ API Key νƒˆμ·¨

🧩 The Web Cache "Whack-a-Mole" at PortSwigger Academy 🧩

NekoSec2026λ…„ 4μ›” 19일2λΆ„intermediate

Context

μ›Ή μΊμ‹œμ™€ μ˜€λ¦¬μ§„ μ„œλ²„ κ°„μ˜ λ¦¬μ†ŒμŠ€ 해석 차이둜 λ°œμƒν•˜λŠ” Web Cache Deception 취약점 뢄석. 정적 ν™•μž₯자(.css) 기반의 캐싱 κ·œμΉ™κ³Ό μ‹€μ œ μ„œλ²„μ˜ 동적 경둜 처리 둜직 κ°„μ˜ 뢈일치둜 인해 민감 정보가 곡개 μΊμ‹œμ— μ €μž₯λ˜λŠ” ꡬ쑰적 결함 쑴재.

Technical Solution

  • 정적 파일둜 μ˜€μΈν•˜κ²Œ λ§Œλ“œλŠ” ν™•μž₯자λ₯Ό κ²½λ‘œμ— ν¬ν•¨ν•˜μ—¬ Cache의 public asset νŒλ‹¨ 둜직 μœ λ„
  • μ˜€λ¦¬μ§„ μ„œλ²„κ°€ ν™•μž₯자λ₯Ό λ¬΄μ‹œν•˜κ³  /my-account λ“± 민감 경둜의 데이터λ₯Ό λ°˜ν™˜ν•˜λ„λ‘ μœ λ„ν•˜λŠ” Path Mapping ν™œμš©
  • μ„Έμ…˜ μΏ ν‚€λ₯Ό ν¬ν•¨ν•œ μš”μ²­μœΌλ‘œ 200 OK 및 X-Cache: hit μƒνƒœλ₯Ό μƒμ„±ν•˜λŠ” Prime 단계 μˆ˜ν–‰
  • 동일 URL을 ν¬μƒμžμ—κ²Œ μ „λ‹¬ν•˜μ—¬ ν¬μƒμžμ˜ 개인 정보가 μΊμ‹œ μ„œλ²„μ— μ €μž₯되게 ν•˜λŠ” Poison 단계 μ‹€ν–‰
  • TTL 만료 μ „ μΏ ν‚€ 없이 ν•΄λ‹Ή URL에 μ ‘κ·Όν•˜μ—¬ μ €μž₯된 민감 데이터λ₯Ό νšλ“ν•˜λŠ” Harvest ꡬ쑰 섀계
  • 302 Redirect 루프 및 TTL μ œμ•½μ„ κ·Ήλ³΅ν•˜κΈ° μœ„ν•œ μ •λ°€ν•œ μš”μ²­ 타이밍 μ œμ–΄

- μΊμ‹œ μ„œλ²„μ˜ 파일 ν™•μž₯자 기반 캐싱 κ·œμΉ™κ³Ό μ˜€λ¦¬μ§„ μ„œλ²„μ˜ 경둜 λ§€ν•‘ 일관성 κ²€ν†  - 민감 정보 응닡 μ‹œ Cache-Control: no-store λ˜λŠ” private 헀더 적용 μ—¬λΆ€ 확인 - URL 경둜 μƒμ˜ μž„μ˜ ν™•μž₯μžκ°€ μ„œλ²„ λ‚΄λΆ€ λ‘œμ§μ— 영ν–₯을 μ£Όμ§€ μ•Šλ„λ‘ Strict Path Validation κ΅¬ν˜„

원문 읽기