Skip to content

Latest commit

Β 

History

History
35 lines (22 loc) Β· 1.6 KB

README.md

File metadata and controls

35 lines (22 loc) Β· 1.6 KB

CVE-2017-7529

λ°•κ±΄ν˜Έ (@c0dep1ayer)


μš”μ•½

  • NginxλŠ” λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ‚¬μ΄νŠΈμ—μ„œ 일뢀 νŒŒμΌμ„ 캐싱, 특히 정적 νŒŒμΌμ„ 캐싱
    • 이 μΊμ‹œμ˜ μΌλΆ€λŠ” νŒŒμΌμ— μ €μž₯되며, 각 μΊμ‹œ νŒŒμΌμ—λŠ” "파일 헀더", "HTTP 응닡 헀더", "HTTP 응닡 λ³Έλ¬Έ"이 포함
  • μš”μ²­μ— Range 헀더가 ν¬ν•¨λ˜λ©΄ NginxλŠ” μ§€μ •λœ μ‹œμž‘ 및 μ’…λ£Œ μœ„μΉ˜μ— 따라 μ§€μ •λœ 길이의 λ‚΄μš©μ„ λ°˜ν™˜
    • 두 개의 음수 μœ„μΉ˜λ₯Ό κ΅¬μ„±ν•˜λ©΄, 예λ₯Ό λ“€μ–΄ (-600, -9223372036854774591), 음수 μœ„μΉ˜μ˜ 데이터λ₯Ό 읽을 수 있음
  • 이 μš”μ²­μ΄ μΊμ‹œ νŒŒμΌμ— μΌμΉ˜ν•˜λ©΄ μΊμ‹œ 파일 λ‚΄μ˜ "HTTP 응닡 λ³Έλ¬Έ" μ•žμ— μžˆλŠ” "파일 헀더", "HTTP 응닡 헀더" λ“±μ˜ λ‚΄μš©μ„ 읽을 수 있음

ν™˜κ²½ ꡬ성 및 μ‹€ν–‰

  • docker compose up -dλ₯Ό μ‹€ν–‰ν•˜μ—¬ ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ μ‹€ν–‰
  • http://your-ip:8080/에 μ ‘μ†ν•˜μ—¬ Nginx κΈ°λ³Έ νŽ˜μ΄μ§€λ₯Ό 확인
    • 이 νŽ˜μ΄μ§€λŠ” μ‹€μ œλ‘œ 8081 포트의 λ‚΄μš©μ„ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλ‘œ 전달
  • python3 poc.py http://your-ip:8080/λ₯Ό ν˜ΈμΆœν•˜μ—¬ λ°˜ν™˜ κ²°κ³Όλ₯Ό 읽음
    • κ²°κ³Όμ—μ„œ "HTTP 응닡 λ³Έλ¬Έ" μ•žμ— μžˆλŠ” "파일 헀더", "HTTP 응닡 헀더" λ“±μ˜ λ‚΄μš©μ„ 읽을 수 있음

κ²°κ³Ό


정리

이 취약점은 κ³΅κ²©μžκ°€ Nginx μ„œλ²„μ˜ μΊμ‹œ νŒŒμΌμ—μ„œ μ˜ˆμƒμΉ˜ λͺ»ν•œ 데이터λ₯Ό 읽을 수 있게 λ§Œλ“€μ–΄, 정보 유좜의 μœ„ν—˜μ΄ μžˆλ‹€. μ•ˆμ „ν•œ μ›Ή μ„œλΉ„μŠ€ μš΄μ˜μ„ μœ„ν•΄μ„œλŠ” μ΄λŸ¬ν•œ 취약점을 주기적으둜 ν™•μΈν•˜κ³  νŒ¨μΉ˜ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.