Ponarejanje zahtev na strani strežnika (SSRF) je eden najpomembnejših razredov ranljivosti v sodobnih spletnih aplikacijah. Do njega pride, ko napadalec lahko vpliva na zahteve HTTP na strani strežnika in tako povzroči, da aplikacija pošlje zahteve na nepredvidene cilje. V današnjih oblačno naravnanih arhitekturah, kjer notranje storitve komunicirajo prek HTTP in so oblačni metapodatkovni API-ji le eno zahtevo stran, se je SSRF iz zmerne ugotovitve povzpel v kritično. Leta 2021 je bil dodan v OWASP Top 10 kot samostojna kategorija, kar odraža njegov naraščajoči pomen v realnem svetu.
Preverjanje ciljnih naslovov in omejevanje odhodnih povezav obravnava OWASP SSRF Prevention Cheat Sheet.
Vrste SSRF
Razumevanje različnih variant SSRF je bistvenega pomena za temeljito testiranje:
- Osnovni (In-Band) SSRF - Strežnik pridobi URL in vrne odgovor neposredno napadalcu. To je najlažje izkoriščati in potrditi, saj lahko takoj vidite odgovore notranjih storitev, vsebino datotek ali metapodatke v telesu odgovora HTTP.
- Slepi SSRF - Strežnik izvede zahtevo, vendar odgovora ne vrne napadalcu. Zanesti se morate na izvenkanalne tehnike, kot so poizvedbe DNS, časovne razlike ali zunanji strežniki za povratne klice (Burp Collaborator, interactsh), da potrdite ranljivost. Izkoriščanje je težje, vendar je lahko vpliv enako resen.
- Delni (pol-slepi) SSRF - Strežnik vrne omejene informacije, kot so statusne kode HTTP, odzivni časi ali sporočila o napakah, ki se razlikujejo glede na to, ali je cilj dosegljiv. To je mogoče uporabiti za skeniranje vrat ali sklepanje o razpoložljivosti notranjih storitev.
Analiza vpliva
- Dostop do notranjih storitev - Doseganje skrbniških panelov, podatkovnih baz, predpomnilnikov (Redis, Memcached) ali notranjih API-jev, ki niso izpostavljeni internetu.
- Izkoriščanje oblačnih metapodatkov - Oblačne metapodatkovne storitve izpostavljajo poverilnice IAM, ključe API in konfiguracijo infrastrukture.
- Notranje skeniranje vrat - Preslikava notranje omrežne topologije z opazovanjem odzivnih časov in statusnih kod.
- Branje lokalnih datotek - Kadar aplikacija podpira shemo file://, lahko SSRF bere lokalne datoteke.
- Oddaljeno izvajanje kode - SSRF je mogoče verižiti v RCE s ciljanjem notranjih storitev z znanimi ranljivostmi.
Končne točke oblačnih metapodatkov
- AWS IMDSv1 - http://169.254.169.254/latest/meta-data/ zagotavlja identiteto instance in poverilnice vloge IAM na /latest/meta-data/iam/security-credentials/[ime-vloge].
- AWS IMDSv2 - Zahteva zahtevo PUT na /latest/api/token z glavo X-aws-ec2-metadata-token-ttl-seconds za pridobitev sejnega žetona.
- GCP - http://metadata.google.internal/computeMetadata/v1/ zahteva glavo Metadata-Flavor: Google. Dostopni žetoni so na /instance/service-accounts/default/token.
- Azure - http://169.254.169.254/metadata/instance?api-version=2021-02-01 zahteva glavo Metadata: true. Žetoni upravljane identitete so na /metadata/identity/oauth2/token.
Tehnike obvoda
- Kodiranje URL - Enojno, dvojno ali trojno URL-kodiranje ciljnega IP ali imena gostitelja. Na primer, 169.254.169.254 postane %31%36%39%2e%32%35%34%2e%31%36%39%2e%32%35%34.
- Triki z obliko IP - Naslov IP 169.254.169.254 je mogoče predstaviti kot decimalno število (2852039166), šestnajstiško (0xa9fea9fe), osmiško (0251.0376.0251.0376) ali preslikano v IPv6 (::ffff:169.254.169.254).
- DNS rebinding - Registracija domene, ki izmenjevaje razrešuje na dovoljen zunanji IP in ciljni notranji IP. Validacijski pregled uspe ob prvi razrešitvi, dejanska zahteva pa zadene notranji cilj.
- Verige preusmeritev - Gostovanje URL-ja na strežniku pod nadzorom napadalca, ki vrne preusmeritev 302 na notranji cilj.
- Razlike v razčlenjevanju URL - Različne knjižnice za razčlenjevanje URL dvoumne URL-je interpretirajo različno. Uporaba simbolov @, fragmentov ali povratnih poševnic lahko povzroči drugačno razrešitev.
- Alternativni protokoli - Poskušanje shem gopher://, dict:// ali ftp:// za interakcijo z notranjimi storitvami na načine, ki jih HTTP ne more.
Scenariji SSRF v realnem svetu
Med penetracijskimi testi pogosto naletim na SSRF v naslednjih funkcionalnostih aplikacij:
- Funkcionalnost webhookov - Aplikacije, ki pošiljajo povratne klice HTTP na uporabniško konfigurirane URL-je.
- Generatorji PDF - Pretvorba HTML v PDF na strani strežnika (wkhtmltopdf, Puppeteer, WeasyPrint), ki obdeluje uporabniško posredovan HTML.
- Obdelovalci slik - Funkcije, ki pridobivajo slike iz URL-jev za spreminjanje velikosti, obrezovanje ali uvoz avatarjev.
- Predogledi URL in razgrnitev povezav - Aplikacije za klepet in družabne platforme, ki pridobivajo metapodatke URL ko uporabniki delijo povezave.
Zaznavanje in preprečevanje
Pristop poglobljene obrambe je bistven, ker nobeden posamezen nadzor ne odpravi SSRF v celoti:
- Beli seznam URL - Vzdržujte strog beli seznam dovoljenih ciljnih gostiteljev, obsegov IP, vrat in protokolov. Privzeto zavrnite in dovolite le znane dobre cilje.
- Uveljavitev IMDSv2 - Na AWS uveljavite način samo-IMDSv2 na vseh instancah EC2. Nastavite omejitev skokov na 1.
- Segmentacija omrežja - Uporabite konfiguracije VPC, varnostne skupine in omrežne ACL-je, da preprečite aplikacijskim strežnikom dostop do občutljivih notranjih storitev.
- Najboljše prakse validacije URL - Razrešite ime gostitelja pred izvedbo zahteve in validirajte razrešeni IP glede na seznam prepovedi zasebnih obsegov (RFC 1918, link-local, loopback).
- Onemogočanje preusmeritev - Kjer je mogoče, ne sledite preusmeritvam HTTP. Če so preusmeritve nujne, uporabite enako validacijo za vsak cilj preusmeritve.
Orodja za testiranje
- Burp Collaborator / interactsh - Zaznavanje slepega SSRF z opazovanjem izvenkanalnih povratnih klicev DNS in HTTP.
- ssrf-sheriff - Avtomatizirano orodje za zaznavanje SSRF, ki generira vsebine za različne tehnike obvoda.
- Prilagojeni seznami besed - Sestavite ciljno specifične sezname besed z notranjimi imeni gostiteljev in potmi oblačnih metapodatkov.
- Gopherus - Generira vsebine gopher:// za izkoriščanje notranjih storitev, kot so MySQL, Redis, SMTP in FastCGI.
Sorodno branje: Testiranje varnosti AWS: IAM, S3 in naprej in Testiranje varnosti API: Praktični vodic.
Zanima vas več o tej temi? Preberite mojo strokovno stran o Web Application Security →
Komentarji
Ni še komentarjev. Bodite prvi!
Dodaj komentar