SSRF — serverni attacker tanlagan yoki ta’sir qila oladigan manzilga request yuborishga majbur qiladigan web zaiflik. To‘liq nomi Server-Side Request Forgery. Hujumchi serverning network joylashuvi, credentiallari va ishonch darajasidan foydalanib, tashqaridan kira olmaydigan resource’larga murojaat qilishga urinadi.
SSRF ko‘pincha URL import, webhook, image fetch, PDF generator, proxy, preview va integration funksiyalarida uchraydi.
Zaif funksiyalar
Riskli funksiyalar:
- URLdan rasm yuklash;
- remote fayl importi;
- webhook test;
- link preview;
- document converter;
- feed reader;
- callback;
- cloud metadata bilan ishlash;
- generic HTTP proxy.
User URLni to‘liq yoki qisman boshqarsa threat modeli talab qilinadi.
Ichki network
Application server ichki service’larga kira olishi mumkin:
127.0.0.1
private IP
internal DNS
management port
database admin
container network
Tashqi user bu manzillarga to‘g‘ridan-to‘g‘ri kira olmasa ham server orqali request yuborishga urinadi.
Cloud metadata
Cloud virtual machine yoki container muhitida metadata endpoint instance identity va vaqtinchalik credential berishi mumkin.
SSRF orqali metadata’ga access olinsa attacker cloud API huquqlarini qo‘lga kiritishi ehtimoli bor.
Metadata service himoyasi, token talabi va minimal IAM role muhim.
Blind SSRF
Server response body’ni userga qaytarmaydi, ammo request baribir yuboriladi.
Attacker:
orqali request bo‘lganini bilishi mumkin.
Response ko‘rinmasligi SSRF xavfini yo‘qotmaydi.
URL parser
URL murakkab syntaxga ega:
Custom string tekshiruvi parser farqlari sabab bypass qilinishi mumkin.
Bitta ishonchli parser ishlatiladi va normalized host tekshiriladi.
DNS rebinding
Allowlist tekshiruvida domen public IPga resolve bo‘lishi, request vaqtida esa boshqa yoki private IPga o‘zgarishi mumkin.
DNS rebinding va multi-address holati hisobga olinadi.
Har connection uchun resolved IP tekshiriladi va redirectdan keyin qayta validation qilinadi.
Redirect
Ruxsat etilgan tashqi URL keyin private manzilga redirect qilishi mumkin.
HTTP client redirectni avtomatik kuzatsa dastlabki allowlist yetarli emas.
Har redirect target alohida tekshiriladi yoki redirect butunlay o‘chiriladi.
Scheme
Faqat HTTP va HTTPS kutilgan bo‘lsa boshqa schemelar rad etiladi.
Generic URL library file, FTP yoki boshqa protocolni qo‘llashi mumkin.
Protocol allowlist minimal bo‘ladi.
Port
User arbitrary port tanlasa server ichki management yoki database service’ga murojaat qilishi mumkin.
Ruxsat etilgan service uchun aniq portlar allowlist qilinadi.
Default port normalization ham tekshiriladi.
Egress filtering
Application subnet faqat zarur tashqi destinationlarga chiqishi mumkin.
ga connectionni bloklaydi.
Application validation buzilsa ham network qatlam himoya beradi.
Dedicated fetch service
Remote content olish alohida izolyatsiyalangan service orqali bajarilishi mumkin.
U:
- ichki networkga kira olmaydi;
- minimal credentialga ega;
- response size va type limitiga ega;
- timeout bilan ishlaydi;
- contentni scan qiladi.
Asosiy application arbitrary network access olmaydi.
Response limit
SSRF faqat targetga access emas, resource exhaustion ham yaratishi mumkin.
Remote server cheksiz yoki juda katta response yuborishi ehtimoli bor.
ni cheklaydi.
Authentication forwarding
Server userning cookie, Authorization header yoki internal tokenini arbitrary targetga yubormasligi kerak.
HTTP client default headerlari destinationga qarab boshqariladi.
Redirect boshqa hostga o‘tsa secret header olib tashlanadi.
Logging
Logda:
- original URL;
- normalized host;
- resolved IP;
- redirect;
- response status;
- byte;
- timeout;
- user yoki tenant
qayd etiladi.
Secret query parameterlar redaction qilinadi.
Test
SSRF testlari private IP, localhost, IPv6, encoded address, redirect, DNS o‘zgarishi va metadata manzilini qamrab oladi.
Production ichki service’lariga zararli request yubormasdan izolyatsiyalangan test endpointlari ishlatiladi.
Hostname allowlist
Suffix tekshiruvi xato yozilsa trusted.example.attacker.tld kabi host o‘tishi mumkin. Host parser orqali ajratilib exact match yoki haqiqiy subdomain boundary tekshiriladi. Username qismidagi [email protected] ham chalkashlik yaratishi mumkin.
IP formatlari
IP manzil decimal, hexadecimal, IPv6, IPv4-mapped IPv6 yoki boshqa alternativ yozuvlarda ifodalanishi mumkin. Custom regex barcha formatni qamrab olmasligi ehtimoli bor. Parser va resolved address classification librarysi ishlatiladi.
Audit endpoint
Remote fetch funksiyasi business uchun zarur bo‘lsa barcha requestlar central service orqali o‘tadi. Security jamoasi qaysi user qaysi hostga qachon request yuborganini ko‘ra oladi. Noma’lum private destination urinishlari alert yaratadi.
URL credentiallari
URL ichidagi username:password@host qismi log va UI’da hostni chalkashtirishi mumkin. Application embedded credentiallarni rad etadi. Remote resource uchun zarur authentication server konfiguratsiyasidan qo‘shiladi, user URLidan olinmaydi.
Proxy
Barcha outbound HTTP requestlar nazorat qilinadigan egress proxy orqali o‘tsa destination policy markazlashtiriladi. Proxy private range, noma’lum port va metadata manzilini bloklaydi. Application proxy’ni chetlab to‘g‘ridan-to‘g‘ri networkga chiqolmasligi kerak.
Bog‘liq tushunchalar
Server-Side Request Forgery, URL parsing, DNS rebinding, Cloud metadata, Egress filtering, Allowlist, Redirect, Internal network, Web security