Basic of Caching
Cache๋ Web Server์ User ์ฌ์ด์ ์์นํ์ฌ Web Service๊ฐ์ ํต์ ์ ํจ์จ์ ์ผ๋ก ๋์์ค๋ค.
Web Server์ ๋ฐ์ดํฐ๋ฅผ ์ด Cache์ ๋ฏธ๋ฆฌ ์ ์ฅํด๋๊ณ , ์ฌ์ฉ์์๊ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ์ฌ ์๋น์ค ์๋ ํฅ์์ ํ ์์ฃผ๋ ๊ฒ์ Caching์ด๋ผ ํ๋ค.
Web Server ๋ฟ๋ง ์๋๋ผ Browser์๋ Cache๊ฐ ์กด์ฌํ๋ค. ์น ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ Loadํ๊ธฐ ์ํด ๋ก์ปฌ PC์ ์ด๋ฏธ์ง, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ค. User๊ฐ Cache ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋ Website์ ์ ๊ทผ ์, ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ ์๋, ๋ก์ปฌ PC์์ ๋ฐ์ดํฐ๋ฅผ Loadํ๊ธฐ ๋๋ฌธ์ ์๋ ์ธก๋ฉด์์ ๋น ๋ฅด๋ค. (๋ํ์ ์ธ Cache๋ฅผ ์ด์ฉํ๋ ์๋น์ค๋ก๋ CDN์ด ์๋ค.)
Explanation about Cache Keys
์น์๋ฒ์ ๋ฐ์ดํฐ์ ๋ํ ์์ฒญ์ ๋ฐ์ ๋๋ง๋ค Cache๋ ์์ฒญ์ ์๋ฒ๋ก ์ ์กํด์ผํ ์ง, ์๋๋ฉด ์ด๋ฏธ ๋ก์ปฌ PC์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ก ์๋ตํ ์ ์์ ์ง๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค. ์ด๋ฅผ ์๋ณํ๋ ๊ฐ์ด Cache Key๋ค. Cache Key๋ ์๋ฒ์ ์์ฒญ๋๋ ๊ฐ ์ผ๋ถ๋ฅผ ๋ผ์ด๋ด์ Request ์ผ๋ถ์ ์์ํ๋ Response๋ฅผ ์ ์ฅํ๋ค. (Request์ ๋ชจ๋ ๋ถ๋ถ์ ํ์ธํ์ง ์๋๋ค.)
๋ณดํต Host, Path๋ฅผ ์ ๋ขฐํ๋ค.
์ Request์์ ์ค๋ ์ง ์์ผ๋ก ์น ํด์ง ๋ถ๋ถ์ด ์ผ๋ฐ์ ์ธ Cache Key๋ค.
What is Cache Poisoning Attack?
๋ฌธ์ ๊ทธ๋๋ก Cache์ ์ ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋จ๊ฒจ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์๋ํ์ง ์์ ๋์์ ํ๋๋ก ํ๋ ๊ณต๊ฒฉ์ด๋ค.
ํ๋ฆ ๊ฐ๋จ ์์ฝ :
Case Study :
๋ ํผ๋ฐ์ค์ ๋ง์ ๊ณต๊ฒฉ ์ผ์ด์ค๊ฐ ์๋๋ฐ, ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ง ์ดํด๋ณด์. PortSwigger๊ฐ Redhat์ ๋ณด๊ณ ํ ๋ด์ฉ์ด๋ค.
์ ์์ฒญ์์ ๊ณต๊ฒฉ์๊ฐ X-Forwarded-Host ํค๋๊ฐ meta ํ๊ทธ ์์์ URL์ ์์ฑ๋๊ธฐ ์ํด ์ฌ์ฉ๋ ๊ฒ์ Response์์ ํ์ธํ ์ ์๋ค. ์ด ํค๋๋ฅผ ์กฐ์ํ์ฌ XSS ์ฝ๋๋ฅผ ์ฝ์ ํ๋ฉด Reflected XSS Trigger๊ฐ ๊ฐ๋ฅํด์ง๋ค.
XSS ์ฝ๋๋ฅผ ์ฝ์ ํ ๋ฐ์ดํฐ๊ฐ Cache๋ก ์ ์ฅ๋ ํ, ๋ค๋ฅธ User๋ค์๊ฒ ์ ๋ฌ๋๋ฉด User์ธก์์ Reflected XSS๊ฐ ๋ฐ์ํ๋ค.
์ด์ธ Case๋ค์ ๋ ํผ๋ฐ์ค๋ค์ ํตํด ํ์ธํ๋ฉด ๋๋ค.
Reference :
https://portswigger.net/kb/papers/7q1e9u9a/web-cache-poisoning.pdf%20