Web cache poisoning

Web cache poisoning

in

Web cache poisoning

πŸ”Ž What is Web cache poisoning?

μ›Ή μΊμ‹œ ν¬μ΄μ¦ˆλ‹μ€ κ³΅κ²©μžκ°€ μ›Ήμ„œλ²„μ˜ μΊμ‹œλ₯Ό μ•…μš©ν•˜μ—¬ ν•΄λ‘œμš΄ HTTP 응닡값을 λ‹€λ₯Έ μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•˜λŠ” μ·¨μ•½μ μž…λ‹ˆλ‹€.

How does a web cache work?

μ›Ή μΊμ‹œλŠ” μ‚¬μš©μžμ™€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„ 사이에 μœ„μΉ˜ν•˜λ©° νŠΉμ • μ‘λ‹΅μ˜ 사본을 μ €μž₯ν•˜κ³  μ œκ³΅ν•©λ‹ˆλ‹€. μ•„λž˜ κ·Έλ¦Όμ—μ„œ μ„Έλͺ…μ˜ μ‚¬μš©μžκ°€ λ™μΌν•œ λ¦¬μ†ŒμŠ€λ₯Ό μ°¨λ‘€λ‘œ κ°€μ Έμ˜€λŠ”κ²ƒμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

이미지 1 μΊμ‹œ μ‚¬μš©

캐싱은 λŒ€κΈ° μ‹œκ°„μ„ 쀄여 νŽ˜μ΄μ§€ λ‘œλ“œ 속도λ₯Ό 높이고 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ˜ λ‘œλ“œλ₯Ό 쀄이기 μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.

Cache keys

μΊμ‹œλŠ” λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μš”μ²­μ„ μˆ˜μ‹ ν• λ•Œλ§ˆλ‹€ μ •ν™•ν•œ λ¦¬μ†ŒμŠ€μ˜ 볡사본이 이미 μ €μž₯λ˜μ–΄ 있고 이에 응닡할 수 μžˆλŠ”μ§€ λ˜λŠ” μš”μ²­μ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ— 전달해야 ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.
HTTP μš”μ²­μ΄ λΈŒλΌμš°μ €μ™€ 같이 μ€‘μš”ν•˜μ§€ μ•Šμ€ λ°μ΄ν„°λ‘œ 가득 μ°¨ 있기 떄문에 μš”μ²­μ΄ λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ μΌμΉ˜ν•˜λ„λ‘ μš”κ΅¬ν•˜λŠ” 것은 λΉ„νš¨μœ¨μ μž…λ‹ˆλ‹€.

이미지 2 μΊμ‹œν‚€μ— ν¬ν•¨λ˜λŠ” 값은 μ£Όν™©μƒ‰ν‘œμ‹œ

μΊμ‹œλŠ” μš”μ²­λ˜λŠ” λ¦¬μ†ŒμŠ€λ₯Ό μ™„μ „νžˆ μ‹λ³„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” HTTP μš”μ²­μ˜ λͺ‡κ°€μ§€ νŠΉμ • ꡬ성 μš”μ†ŒμΈ μΊμ‹œ ν‚€ κ°œλ…μ„ μ‚¬μš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
즉 μΊμ‹œλŠ” λ‹€μŒ 두 μš”μ²­μ΄ λ™μΌν•˜λ‹€κ³  μƒκ°ν•˜κ³  첫번째 μš”μ²­μ—μ„œ μΊμ‹œλœ μ‘λ‹΅μœΌλ‘œ λ‘λ²ˆμ§Έ μš”μ²­μ— μ‘λ‹΅ν•©λ‹ˆλ‹€.

이미지 3

결과적으둜 νŽ˜μ΄μ§€λŠ” λ‘λ²ˆμ§Έ λ°©λ¬Έμžμ—κ²Œ 잘λͺ»λœ μ–Έμ–΄λ‘œ μ œκ³΅λ©λ‹ˆλ‹€.

Cache Poisoning

μ›Ή μΊμ‹œ μ€‘λ…μ˜ λͺ©μ μ€ μΊμ‹œλ₯Ό μ•…μš©ν•˜μ—¬ λ‹€λ₯Έ μ‚¬μš©μžμ—κ²Œ μ œκ³΅λ˜λŠ” μœ ν•΄ν•œ 응닡을 μœ λ°œν•˜λŠ” μš”μ²­μ„ λ³΄λ‚΄λŠ” κ²ƒμž…λ‹ˆλ‹€

이미지 4

Exploiting cache design flaws

Using web cache poisoning to exploit unsafe handling of resource imports
제λͺ© λ‚΄μš©



πŸ‘€ How to Prevent ?


🐞 BugBounty Write up


πŸ“ƒ References