[dca] report alex

47
SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 1 dari 47 SECURITY VULNERABILITY REPORT Target: Server Kioptrix4 Type: Linux 2.6 by: Alexander Lumban Tobing

Upload: kevin

Post on 28-Jan-2016

230 views

Category:

Documents


0 download

DESCRIPTION

Pentest Kioptrix 4 Using Backtrack5 R3 by Alex L

TRANSCRIPT

Page 1: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 1 dari 47

SECURITY VULNERABILITY REPORT

Target: Server Kioptrix4 Type: Linux 2.6

by: Alexander Lumban Tobing

Page 2: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 2 dari 47

DAFTAR ISI PENDAHULUAN PENGUMPULAN INFORMASI

A. Mempersiapkan Backtrack B. Mencari dan memetakan semua host

C. Informasi seputar server target PENDETEKSIAN SERVICE

A. Mencari tahu daftar service menggunakan nmap B. Hasil kesimpulan dari pendeteksian service

PENCARIAN KELEMAHAN A. Mencari celah keamanan menggunakan Mozilla Firefox

B. Mencari celah keamanan menggunakan OWASP Dir Buster MELAKUKAN EKSPLOITASI

A. Melakukan eksploitasi menggunakan SQL Inject Me

B. Melakukan eksploitasi menggunakan SSH MENINGKATKAN HAK AKSES

A. Keluar dari limited shell B. Mencari proses yang dijalankan oleh root

C. Mengambil alih akun akses mysqld D. Login sebagai service mysqld

E. Memodifikasi file /etc/passwd F. Bukti bahwa kita adalah root

MENCIPTAKAN PINTU BELAKANG A. Membuat user biasa sebagai pintu belakang

B. Membuat sebuah user dengan akses root sebagai pintu belakang MENGHAPUS JEJAK

A. Mengembalikan hak akses user john B. Menghapus seluruh file log service

1. Menghapus log service apache2

2. Menghapus log service ssh 3. Menghapus log service daemon

4. Menghapus log service syslog PENUTUP

Page 3: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 3 dari 47

PENDAHULUAN Dokumen ini adalah dokumen yang berisi mengenai laporan celah keamanan yang berhasil ditemukan pada sebuah server Kioptrix4 – Linux 2.6. Pada dokumen ini juga dibahas mengenai

teknik yang digunakan untuk memanfaatkan celah keamanan tersebut.

Adapun peralatan yang dibutuhkan dalam melakukan pencarian celah keamanan ini, adalah sebagai berikut:

1. Sistem Operasi attacker, yaitu: Backtrack 5 R3 (dapat diperoleh di: ftp\\172.21.1.10\File

sharing\ABS@CyberDefense\BT5_R3\BT5R3-GNOME-32.iso) 2. Sistem Operasi target, yaitu: Kioptrix4 Linux 2.6

(dapat diperoleh di: https://if11022.nm.del.ac.id/files/Server%20Kioptrix.vmdk) 3. Aplikasi Virtual Machine, seperti: VMWare 9.0

(dapat diperoleh di: ftp\\172.21.1.10\File

sharing\ABS@CyberDefense\VMware.Workstation.v9\setup.exe)

Persiapan yang dilakukan adalah: 1. Menginstall VMWare terlebih dahulu.

2. Menciptakan sebuah Virtual Machine dengan menggunakan BT5R3-GNOME-32.iso sebagai sistem operasinya.

3. Menciptakan sebuah Virtual Machine dengan menggunakan Server Kioptrix.vmdk sebagai sistem Virtual Machine yang telah ada.

4. Konfigurasi jaringan untuk Virtual Machine Backtrack dan Kioptrix adalah NAT.

Adapun tahapan teknik yang dilakukan untuk dapat mengambil alih akses ke sistem target adalah sebagai berikut:

1. PENGUMPULAN INFORMASI 2. PENDETEKSIAN SERVICE 3. PENCARIAN KELEMAHAN

4. MELAKUKAN EKSPLOITASI 5. MENINGKATKAN HAK AKSES

6. MENCIPTAKAN PINTU BELAKANG 7. MENGHAPUS JEJAK

Page 4: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 4 dari 47

PENGUMPULAN INFORMASI

A. Mempersiapkan Backtrack

Melakukan cek koneksi Backtrack dengan cara mengecek konfigurasi jaringan, berikut adalah langkah-langkahnya: 1. Buka terminal Backtrack 2. Ketik ifconfig

Hasilnya adalah berikut:

Dari gambar diatas, dapat kita simbulkan bahwa IP Address dari Backtrack kita adalah: 192.168.36.163

Page 5: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 5 dari 47

B. Mencari dan memetakan semua host

Mencari dan memetakan semua host yang terkoneksi dengan jaringan yang sama

dengan jaringan Backtrack kita, berikut adalah langkah-langkahnya: 1. Buka terminal Backtrack

2. Ketik netdiscover –i eth3 –r 192.168.36.163, seperti pada gambar berikut:

Tunggu hingga proses pencarian selasai dilakukan.

Keterangan: tools netdiscover dipilih karena tools ini dapat mencari dan memetakan

semua host yang berada satu jaringan dengan jaringan Backtrack. Pilihan -i eth3 dipilih karena network interface yang aktif pada Backtrack adalah interface eth3.

Pilihan –r 192.168.36.163 dipilih agar dapat mencari semua host yang dapat dicapai oleh IP Backtrack itu sendiri.

Berikut adalah hasil pencarian bila selesai dilakukan:

Dari gambar diatas, dapat kita simpulkan bahwa jumlah host yang dapat dicapai oleh Backtrack adalah tiga host. Dikarenakan, 192.168.36.2 dan 192.168.36.254 adalah IP

Address yang diciptakan sendiri oleh aplikasi Virtual Machine, maka dapat dipastikan bahwa IP Address server target adalah: 192.168.36.209

Page 6: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 6 dari 47

C. Informasi seputar server target

Informasi sementara yang kita dapatkan mengenai server target adalah bahwa server

target memiliki IP Address 192.168.36.209. Berikut adalah tampilan server target:

Page 7: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 7 dari 47

PENDETEKSIAN SERVICE

A. Mencari tahu daftar service menggunakan nmap

Untuk mencari tahu daftar service yang berjalan pada server target, kita dapat menggunakan nmap, berikut adalah langkah-langkahnya:

1. Buka terminal Backtrack 2. Ketik nmap –sS –PN –A 192.168.36.209

Hasilnya adalah berikut:

Page 8: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 8 dari 47

B. Hasil kesimpulan dari pendeteksian service

Berikut adalah hasil kesimpulan dari pendeteksian service.

1. Pada service ssh (port 22)

Kesimpulan: 1. User default pada saat melakukan ssh adalah user: root.

2. Key fingerprint pada server adalah jenis RSA. Berdasarkan http://en.wikipedia.org/wiki/RSA_problem, key fingerprint RSA dapat dengan mudah diexploitasi meskipun tidak melakukan kalkulasi matematika secara kompleks.

2. Pada service http (port 80)

Kesimpulan:

1. Web server tidak mendukung layanan HTTPS.

Page 9: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 9 dari 47

PENCARIAN KELEMAHAN

A. Mencari celah keamanan menggunakan Mozilla Firefox Dikarenakan port 80 terbuka, maka ada baiknya kita coba menemukan celah keamanan

dari segi service HTTP (port 80). Berikut adalah langkah-langkahnya: 1. Buka browser Mozilla Firefox

2. Ketik di address bar: 192.168.36.209 => IP Address target 3. Cobalah login dengan informasi seperti gambar berikut:

- Username : admin - Password : admin

4. Klik tombol Login.

5. Dikarenakan username dan password adalah salah, maka muncul pesan seperti pada gambar berikut:

Page 10: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 10 dari 47

Dari gambar diatas, dapat kita simpulkan bahwa: 1. Method yang digunakan aplikasi adalah method POST. 2. Informasi untuk inputan username, disimpan pada variabel “myusername”. 3. Informasi untuk inputan password, disimpan pada variabel “mypassword”.

4. Semua inputan user akan dikirim ke file checklogin.php

6. Sekarang, kita coba lagi login dengan informasi seperti gambar berikut: - Username : admin

- Password : ‘

7. Ternyata, server memberi pesan kesalahan berikut:

Oppsss… Ternyata server memiliki celah keamanan dari segi SQL Injection.

Page 11: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 11 dari 47

8. Sekarang, kita coba lagi login dengan informasi seperti gambar berikut:

- Username : ‘ - Password : admin

9. Ternyata, server memberi pesan kesalahan berikut:

Dari hasil coba-coba tadi, dapat kita simpulkan bahwa ternyata inputan untuk username tidak dapat diexploitasi dengan menggunakan SQL Injection. Namun,

kabar baiknya, inputan untuk password tenyata dapat diexploitasi dengan menggunakan SQL Injection. Sehingga yang tadinya kita harus mengetahui username dan password yang valid untuk dapat login, kini kita hanya perlu mengetahui

username yang valid, dan kita tidak perlu mengetahui password yang valid.

Page 12: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 12 dari 47

B. Mencari celah keamanan menggunakan OWASP Dir Buster

Untuk menemukan informasi mengenai user yang valid dari sistem, kita dapat menggunakan tools yang disebut sebagai fuzzers. Fuzzers adalah tools yang dapat

menebak dan menyusun daftar struktur direktori dari sebuah server target.

Dikarenakan server memiliki aplikasi web server, maka kita harus menggunakan fuzzers yang dapat memiliki fitur sebagai Web Application Fuzzers, salah satunya adalah

OWASP Dir Buster. Berikut adalah langkah-langkah untuk menggunakan OWASP Dir Buster:

1. Klik Applications pada Taskbar. 2. Sorot BackTrack 3. Sorot Vulnerability Assessment 4. Sorot Web Application Assessment 5. Sorot Web Application Fuzzers 6. Klik dirbuster

7. Berikut adalah tampilan OWASP Dir Buster:

Page 13: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 13 dari 47

8. Settinglah konfigurasi OWASP Dir Buster, dengan informasi seperti pada gambar

berikut:

Keterangan: - Target URL : http://192.168.36.209:80/

Target URL adalah informasi mengenai URL target yang ingin di-bruteforce menggunakan fuzzers, dalam hal ini adalah server Kioptrix4.

- Work Method : Auto Switch (HEAD and GET)

Work Method adalah informasi mengenai jenis method yang ingin digunakan, dalam kasus ini kita gunakan yang Auto saja.

- Number of Threads : 10 Threads Number of Threads adalah informasi seberapa banyak threads yang akan

digunakan selama bekerja. Semakin banyak threads yang kita berikan, maka akan semakin cepat proses kerja, namun akan menyebabkan

Backtrack kita menjadi sedikit terasa melambat. - Select scanning type : Pure Brute Force

Select scanning type adalah informasi jenis pencarian yang akan dilakukan, apakah pencarian berdasarkan daftar yang telah dipersiapkan

(bruteforce based dictionary) ataukah benar-benar menggunakan bruteforce (pure bruteforce).

9. Lalu klik tombol Start, maka proses pencarian akan segera dimulai.

Page 14: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 14 dari 47

10. Berikut adalah laporan yang diberikan:

Dari laporan di atas, dapat kita simpulkan bahwa terdapat dua nama orang, yaitu

john dan robert. Kemungkinan besar mereka adalah user yang valid pada web server.

11. Untuk membuktikan apakah mereka adalah user yang valid atau tidak, maka kita kembali membuka browser Mozilla Firefox, lalu mengakses http://192.168.36.209:80/john, hasilnya adalah sebagai berikut:

Page 15: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 15 dari 47

12. Sekarang coba kita klik file john.php, namun hasilnya kita malah dialihkan ke

halaman depan web, yaitu: http://192.168.36.209.

Maka dapt kita simpulkan bahwa kita mengakses http://192.168.36.209/john/john.php namun belum login, maka kita akan segera

dialihkan ke http://192.168.36.209 dan dipaksa untuk login terlebih dahulu.

Untuk mencoba apakah user robert adalah valid pada server, kita dapat menggunakan langkah-langkah yang sama seperti untuk mencoba user john.

Sekarang coba kita mengakses http://192.168.36.209/robert/ robert.php ternyata kita juga akan segera dialihkan ke http://192.168.36.209 dan dipaksa untuk login terlebih dahulu. Dari sejumlah percobaan yang telah kita lakukan, dapat kita simpulkan bahwa terdapat dua user untuk server dari segi web aplikasinya, yaitu john dan robert.

Namun masalahnya, kita belum mengetahui password untuk mereka berdua

sehingga kita tidak dapat login ke dalam sistem. Namun beruntungnya, inputan untuk menerima password pada web aplikasi ternyata memiliki kelemahan SQL

Inject, sehingga kita dapat login ke dalam sistem cukup dengan mengetahui username yang valid saja.

Page 16: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 16 dari 47

MELAKUKAN EKSPLOITASI

A. Melakukan eksploitasi menggunakan SQL Inject Me

Ada banyak tools yang dapat melakukan eksploitasi terhadap celah keamanan dari segi SQL Injection, salah satunya adalah SQL Inject Me, salah satu add-ons bawaan browser

OWASP Mantra di Backtrack.

Berikut adalah langkah-langkah untuk menggunakan SQL Inject Me: 1. Buka terminal Backtrack

2. Ketik cd /pentest/web/mantra 3. Ketik ./mantra

4. Kemudian akan muncul sebuah browser dengan tampilan berikut:

5. Tekan tombol F10, untuk menampilkan menubar. 6. Klik menu Tools. 7. Sorot pada Application Auditing, 8. Sorot pada SQL Inject Me , 9. Klik Open SQL Inject Me Sidebar

Page 17: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 17 dari 47

Gambar untuk memanggil SQL Inject Me.

10. Maka akan muncul sebuah sidebar seperti gambar berikut:

Page 18: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 18 dari 47

11. Kemudian lengkapilah informasi yang diminta pada SQL Inject Me.

- Pada kolom myusername, silahkan ketik john.

- Pada kolom mypassword, silahkan berikan tanda centang. - Pada list kolom di sebelah tombol Execute, pilihlah Run all test.

12. Klik tombol Execute, dan tunggulah proses pencarian.

Page 19: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 19 dari 47

13. Berikut adalah laporan bila proses telah selesai:

Berikut adalah detail laporan:

Kesimpulan:

- Dari 14620 percobaan, ditemukan 3 percobaan yang kemungkinan memiliki celah.

- Ketiga percobaan itu adalah: o Tested value: %31%27%20%4F%52%20%27%31%27%3D%27%31 o Tested value: ' OR username IS NOT NULL OR username = ' o Tested value: 1' OR '1'='1

Ketiga value ini dapat berpotensi menciptakan efek SQL Injection untuk inputan

password pada variabel inputan mypassword.

Page 20: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 20 dari 47

14. Sekarang, kita akan coba melakukan login menggunakan sejumlah infomasi login.

PERCOBAAN 1

Sekarang mari kita coba login dengan informasi berikut: - Username : john

- Password : %31%27%20%4F%52%20%27%31%27%3D%27%31

Hasilnya adalah:

Wah,.. tenyata percobaan SQL Injection yang ini, tidak dapat mengekspolit server.

PERCOBAAN 2

Sekarang mari kita coba login dengan informasi berikut: - Username : john

- Password : ' OR username IS NOT NULL OR username = ' Hasilnya adalah:

Wow… Sistem telah menganggap kita telah login dengan user john walaupun

tanpa password.

PERCOBAAN 3 Sekarang mari kita coba login dengan informasi berikut:

- Username : john - Password : 1' OR '1'='1

Page 21: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 21 dari 47

Hasilnya adalah:

Sama seperti percobaan kedua, sistem telah menganggap kita telah login

menggunakan user dan password yang valid dari user john.

PERCOBAAN 4 Percobaan keempat ini adalah percobaan terakhir untuk mencoba login sebagai

john. Berdasarkan hasil dari percobaan pertama sampai percobaan ketiga, sekarang mari kita coba login dengan informasi berikut:

- Username : john - Password : MyNameIsJohn

Hasilnya adalah:

Yupp.. Ternyata memang akun yang valid untuk user john adalah:

- Username : john - Password : MyNameIsJohn

Page 22: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 22 dari 47

Percobaan kali ini adalah untuk mencoba login sebagai user robert.

PERCOBAAN 1 Sekarang mari kita coba login dengan informasi berikut:

- Username : robert - Password : %31%27%20%4F%52%20%27%31%27%3D%27%31

Hasilnya adalah:

Wah,.. tenyata percobaan SQL Injection yang ini, tidak dapat mengekspolit

server.

PERCOBAAN 2 Sekarang mari kita coba login dengan informasi berikut:

- Username : robert - Password : ' OR username IS NOT NULL OR username = '

Hasilnya adalah:

Wow… Sistem telah menganggap kita telah login dengan user robert walaupun tanpa password.

PERCOBAAN 3

Sekarang mari kita coba login dengan informasi berikut: - Username : robert - Password : 1' OR '1'='1

Page 23: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 23 dari 47

Hasilnya adalah:

Sama seperti percobaan kedua, sistem telah menganggap kita telah login menggunakan user dan password yang valid dari user robert.

PERCOBAAN 4 Percobaan keempat ini adalah percobaan terakhir untuk mencoba login sebagai

john. Berdasarkan hasil dari percobaan pertama sampai percobaan ketiga, sekarang mari kita coba login dengan informasi berikut:

- Username : robert - Password : ADGAdsafdfwt4gadfga==

Hasilnya adalah:

Yupp.. Ternyata memang akun yang valid untuk user robert adalah:

- Username : robert

- Password : ADGAdsafdfwt4gadfga==

Page 24: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 24 dari 47

B. Melakukan eksploitasi menggunakan SSH

Dikarenakan kita telah mendapatkan dua buah akun yang valid, dan juga karena service ssh (port 22) terbuka, maka tidak ada salahnya kita melakukan percobaan untuk login

menggunakan ssh.

Berikut adalah langkah-langkah untuk melakukan ssh. 1. Buka terminal Backtrack

2. Ketik ssh [email protected] 3. Lalu ketikkan MyNameIsJohn

4. Akan muncul tampilan berikut:

Selamat, ternyata kita dapat login ke sistem sebagai john menggunakan ssh.

Tambahan:

Kita juga dapat login ke sistem sebagai robert menggunakan ssh, dengan cara:

1. Buka terminal Backtrack 2. Ketik ssh [email protected]

3. Lalu ketikkan ADGAdsafdfwt4gadfga== 4. Akan muncul tampilan berikut:

5. Oke sekarang kita telah login. Namun ternyata user ini telah dibatasi hak-hak aksesnya, sehingga hanya dapat menjalankan beberapa perintah saja.

Page 25: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 25 dari 47

Untuk melihat perintah apa saja yang dapat dijalankan oleh user ini, maka cukup

ketikkan ? atau help, seperti pada gambar berikut:

Jadi, selain dari delapan (8) perintah tersebut, sistem tidak akan melaksanakan perintah tersebut. Sebagai contoh, bila user mengetikkan perintah passwd, whoami, dan pwd, akan muncul pesan sebagai berikut:

Sekarang, mari kita coba perintah untuk pindah ke direktori paling atas (/), dengan sintaks cd /, namun ternyata muncul pesan kesalahan berikut:

Gawat… Ternyata sintax untuk pergi ke direktori paling atas tersebut dianggap

terlarang oleh sistem, dan sayangnya user tidak akan diberi peringatan lagi, apabila user melakukan sintax terlarang lagi.

Pada saat kita mengetikkan sintax terlarang lagi (dalam hal ini adalah cd / lagi), user

langsung dikeluarkan dari sistem.

Page 26: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 26 dari 47

MENINGKATKAN HAK AKSES

A. Keluar dari limited shell

User john dan user robert telah terdaftar sebagai user biasa dan memiliki hak akses sebagai limited shell, sehingga hanya dapat menjalankan beberapa perintah saja. Salah satu cara agar dapat keluar dari pembatasan oleh limited shell adalah dengan cara mengetik perintah echo os.system('/bin/bash') pada terminal user yang sedang login (dalam contoh ini adalah: user john), seperti yang ditunjukkan pada gambar

berikut:

Hore…. Kini user john tidak berada dalam kondisi akses sebagai limited shell. Kini user

telah dapat menjalankan semua perintah pada sistem server.

Tabel perbedaan user tanpa limited shell (john) dengan user dengan limited shell (robert), adalah sebagai berikut:

Perintah User tanpa limited shell (john) User dengan limited shell (robert)

id

uname -a

whoami

Page 27: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 27 dari 47

B. Mencari proses yang dijalankan oleh root

Untuk menjadi root, kita harus menemukan proses-proses apa saja yang berjalan dengan akses sebagai root. Untuk menemukan proses tersebut, ketiklah perintah

ps –aux | grep root pada terminal ssh user john, sehingga hasilnya adalah berikut:

Mari kita fokuskan pada bagian yang ditunjukkan oleh gambar ini:

Pada gambar di atas terdapat tiga (3) line terminal yang ditandai. Ketiga perintah itu

dijalankan dengan hak akses sebagai root. Ketiga perintah itu adalah: 1. /bin/sh /usr/bin/mysqld_safe

2. /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=root --pid-

file=/var/run/mysqld/mysqld. 3. logger -p daemon.err -t mysqld_safe -i -t mysqld

Dari ketiga peririntah itu, kita simpulkan bahwa perintah untuk service (layanan)

mysqld, ternyata dijalankan dengan hak akses sebagai root.

Page 28: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 28 dari 47

C. Mengambil alih akun akses mysqld

Dikarenakan mysqld dijalankan dengan hak akses sebagai root, jadi jika kita mengambil alih akses mysqld, maka setiap perintah yang kita berikan kepada mysqld akan

dijalankan dan diproses dengan hak akses sebagai root juga.

Sebelumnya, tadi kita telah mengetahui bahwa setiap inputan user pada web aplikasi akan diproses oleh file checklogin.php. Oleh sebab itu, kita perlu melihat isi file

tersebut. Untuk melihat isi file tersebut, pada terminal user john, ketik cat /var/www/checklogin.php, sehingga akan menampilkan isi seperti pada gambar

berikut:

Page 29: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 29 dari 47

Dari gambar berikut, mari kita fokus pada dua baris terminal yang telah ditandai:

Hahaahh… Ternyata, akun untuk akses pada service mysqld adalah: - Username : root - Password :

Waduh, ternyata passwordnya adalah kosong

Page 30: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 30 dari 47

D. Login sebagai service mysqld

Seperti yang telah kita ketahui sebelunya bahwa service mysqld berjalan dengan akses sebagai root. Itu artinya, setiap perintah yang dijalankan oleh mysqld akan dijalankan

oleh sistem dengan hak akses root. Berikut adalah langkah-langkah untuk melakukan login ke sistem menggunakan akun service mysqld:

1. Pada terminal user john, ketik mysql -h localhost -u root, seperti gambar berikut:

2. Kini kita telah berhasil login sebagai service mysqld, tanpa meminta password, karena password untuk akun adalah kosong/tidak ada.

3. Unttuk mengetahui hak-hak apa saja yang dapat dilakukan oleh user yang sekarang sedang login (yaitu user mysqld), silahkan ketikkan: show grants

Dari gambar diatas, kita simpulkan bahwa hak akses kita adalah sebagai root pada server sistem (localhost).

Page 31: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 31 dari 47

E. Memodifikasi file /etc/passwd

Seluruh informasi akun pada server disimpan konfigurasinya pada file /etc/passwd. Oleh sebab itu kita akan mencoba melakukan pemodifiasian pada file tersebut, berikut

adalah langkah-langkahnya: 1. Pada terminal ketik perintah: ls –l /etc/passwd

2. Output dari perintah tersebut adalah berikut:

Kesimpulan:

- File tersebut diciptakan oleh username root, dan root punya hak akses untuk membaca dan menulis.

- File tersebut dapat diakses oleh usergroup root, dengan hak akses hanya untuk membaca saja.

- File tersebut dapat diakses oleh siapapun, selain username root dan

usergroup root, dengan hak akses hanya untuk membaca saja.

Sehingga bisa disimpulkan bahwa konfigurasi untuk chmod file tersebut adalah 644, dengan keterangan:

- 6 => (r)ead = 4 + (w)rite =2 => untuk username root - 4 => (r)ead = 4 => untuk usergroup root - 4 => (r)ead = 4 => untuk user selain username root dan

usergroup root

3. Ketik perintah cat /etc/passwd

Page 32: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 32 dari 47

4. Perhatikan baris ini lebih seksama:

Ini adalah baris untuk settingan user root:

Ini adalah baris untuk settingan user john dan robert:

Keterangan: - root : x : 0 : 0 : root : /root : /bin/bash

- john : x : 1001 : 1001 : ,,, : /home/john : /bin/kshell - robert : x : 1002 : 1002 : ,,, : /home/robert : /bin/kshell

(1) : (2) : (3) : (4) : (5) : (6) : (7) Informasi:

(1) adalah nama user yang telah terdaftar pada sistem

(2) adalah jenis password, tanda x artinyapassword disimpan di /etc/shadow (3) adalah nomor username pada sistem (UserID)

(4) adalah nomor usergroup pada sistem (GroupID) (5) adalah informasi tambahan/keterangan pelengkap terhadap nama user

(6) adalah lokasi home directory user tersebut (7) adalah lokasi shell yang digunakan

Nah, dari ketiga baris tersebut dapat kita simpulkan bahwa yang menjadikan user

root adalah spesial dan berbeda dari user john dan robert adalah informasi nomor (3), (4), dan (7). Oleh sebab itu, kita akan mencoba mengganti hak user john agar

dapat memiliki hak setara dengan root. Namun, masalahnya hanya user root yang memiliki hak untuk menulis. Bagaimana caranya agar user john dapat menulis file tersebut? Oppps,.. jangan lupa, kalau ternyata kita telah menguasai akun akses service mysqld, yang dapat menjalankan semua perintah setara dengan hak akses root. Jadi, kita dapat memerintahkan service mysqld untuk mengganti hak akses dari konfigurasi file ini, agar user john memiliki akses untuk menulis file tersebut.

5. Loginlah pada mysqld, dan ketiklah perintah berikut: select sys_exec(“ chmod 777 /etc/passwd”); . Perintah tersebut bertujuan untuk menge-set nilai hak akses untuk

file /etc/passwd agar menjadi 777.

Sehingga hasilnya adalah:

Page 33: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 33 dari 47

Berhasil. Dari gambar di atas, dapat kita simpulkan bahwa nilai hak akses untuk file

tersebut adalah 777.

6. Sekarang keluarlah dari mysqld, dan ketiklah kembali: ls –l /etc/passwd, sehingga hasilnya adalah:

Kini, semua user pada sistem (termasuk user john) memiliki hak akses penuh untuk

file itu.

7. Kemudian ketik perintah vim /etc/passwd, untuk mengedit isi file itu, dan ubahlah baris john:x:1001:1001:,,,:/home/john:/bin/kshell

menjadi john:x:0:0:,,,:/home/john:/bin/bash

menjadi

8. Kemudian, pada jendela kernel ssh user john, ketik perintah whoami.

Hasilnya adalah:

9. Kemudian, pada jendela kernel ssh user john, ketik perintah id.

10. Sepertinya, sistem masih belum menganggap bahwa user john memiliki hak akses sebagai root, oleh sebab itu, sebaiknya kita logout dulu dari jendela ssh user john.

Untuk keluar dari mode unlimited shell, ketik perintah exit, sehingga hasilnya adalah:

Kini user john telah masuk ke mode limited shell, dan untuk keluar dari jendela ssh,

silahkan ketik perintah exit.

Page 34: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 34 dari 47

11. Setelah kita menutup koneksi ssh kita, mari kita buka kembali koneksi ssh.

12. Loginlah menggunakan username john, dan password MyNameIsJohn, maka hasilnya adalah:

Violaa… Kita berhasil login sebagai root. Untuk membuktikan bahwa kita adalah root, kita ketik perintah whoami dan id, hasilnya adalah:

Haaa.. kini pada server ini telah terdapat dua user dengan usergroup sebagai root, user yang pertama bernama root, dan user yang kedua bernama john. Dengan kata

lain, sekarang user john sudah sebanding dengan root, dan memiliki hak penuh terhadap sistem.

Page 35: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 35 dari 47

F. Bukti bahwa kita adalah root

Dikarenakan server ini memang didesain untuk dijadikan bahan pembelajaran untuk para pemula (seperti saya) agar mendalami pengetahuan seputar keamanan sistem,

maka tim pengembang dari server ini telah menyiapkan sebuah ‘pesan wasiat’ bagi para attacker yang berhasil menjadi root. Untuk melihat pesannya, silahkan ketik perintah:

cat /root/congrats.txt

Page 36: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 36 dari 47

MENCIPTAKAN PINTU BELAKANG

A. Membuat user biasa sebagai pintu belakang

Karena kita tidak ingin user root mencurigai user john yang memiliki hak akses sebagai root, maka kita akan membuat sebuah user baru yang memiliki hak akses sebagai user biasa (setara dengan user robert). User biasa yang akan kita buat haruslah tidak menimbulkan kecurigaan. Dalam hal ini, kita akan menciptakan user alex, karena root akan menganggap bahwa user alex ini adalah pegawai yang valid yang bekerja pada

LigGoat Employee.

Langkah-langkah membuat user baru adalah: 1. Pada jendela ssh sebagai root, ketik useradd alex. Sintax itu untuk menciptakan

sebuah user baru dengan username alex, dengan password adalah kosong, seperti

pada gambar berikut:

2. Bukti bahwa user alex telah tercipta, silahkan ketik perintah cat /etc/passwd, sehingga hasilnya adalah:

3. Oke, user alex telah tercipta. Namun lokasi shell yang digunakan adalah di /bin/sh. Seharusnya, user dengan tingkat akses setara dengan john dan robert adalah memiliki lokasi shell yang digunakan berada di /bin/kshell. Oleh sebab itu kita akan mengubah isi file tersebut, dan mengganti lokasi shell untuk user alex, dengan cara mengetikkan perintah vim /etc/passwd.

Gambar:

menjadi

Page 37: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 37 dari 47

4. Kini user alex telah berada dalam kondisi akses sebagai limited shell, sehingga user

root tidak akan curiga pada user alex yang telah kita ciptakan barusan.

Bukti bahwa user alex berada dalam kondisi akses sebagai limited shell:

Page 38: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 38 dari 47

B. Membuat sebuah user dengan akses root sebagai pintu belakang

Sebenarnya, cukup dengan menambahkan user biasa saja (user alex), kita sudah bisa kembali mengambil alih akses root. Namun, untuk berjaga-jaga, apabila user alex telah

dihapus karena ketahuan, kita harus punya rencana cadangan untuk jalan masuk dari pintu belakang.

Tampilan saat user alex ingin mengambil hak akses sebagai root:

Dari gambar di atas, dapat kita simpulkan bahwa:

- User alex dapat keluar dari mode limited shell. - User alex tidak dapat melakukan switch user menjadi root, karena tidak

mengetahui password untuk user root. - User alex dapat melakukan switch user menjadi john (yang memiliki hak

setara root), karena telah mengetahui password untuk user john.

User setara root yang akan kita buat juga haruslah tidak menimbulkan kecurigaan. Dalam hal ini, kita akan menciptakan user syskioptrix, karena root akan menganggap bahwa user syskioptrix ini adalah sebuah service yang berjalan untuk melakukan penyimpanan file log pada server. Langkah-langkah membuat user baru adalah:

1. Pada jendela ssh sebagai root, ketik useradd syskioptrix. Sintax itu untuk menciptakan sebuah user baru dengan username syskioptrix, dengan password

adalah kosong, seperti pada gambar berikut:

2. Bukti bahwa user syskioptrix telah tercipta, silahkan ketik perintah cat /etc/passwd,

sehingga hasilnya adalah:

Page 39: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 39 dari 47

3. Oke, user syskioptrix telah tercipta. Namun lokasi shell yang digunakan adalah di

/bin/sh. Seharusnya, user dengan tingkat akses setara dengan root adalah memiliki lokasi shell yang digunakan berada di /bin/bash. Oleh sebab itu kita akan mengubah

isi file tersebut, dan mengganti lokasi shell untuk user syskioptrix, dengan cara mengetikkan perintah vim /etc/passwd. Dan agar mempersulit user root dalam

menemukan user syskioptrix ini, maka kita akan menjadikan informasi user syskioptrix berada pada baris kedua, tepat berada di bawah baris informasi untuk

user root.

Gambar:

menjadi

4. Selamat. Kini user syskioptrix telah berada dalam kondisi akses sebagai root. Tambahan: Sengaja user alex dan syskioptrix tidak diberikan password, agar tidak memberikan kecurigaan user root, dan untuk mempermudah kita login kembali ke dalam server tanpa melakukan autentikasi.

Page 40: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 40 dari 47

MENGHAPUS JEJAK

A. Mengembalikan hak akses user john Sekarang user john telah menjadi root. Namun, bila hal itu tetap kita biarkan

berkelanjutan, maka user root yang sebenarnya akan merasa curiga dan hal itu bisa jadi merupakan akhir dari karir kita dalam hal pengambilalihan server.

Berikut adalah langkah-langkah untuk mengembalikan hak akses user john:

1. Sebagai root, ubah kembali informasi konfigurasi user john pada /etc/passwd

menjadi

2. Sebagai root, ubah kembali hak akses file /etc/passwd.

menjadi

Page 41: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 41 dari 47

B. Menghapus seluruh file log service

Kita harus menghapus seluruh isi file log service agar semakin menhilangkan jejak kita, bahwa kita pernah masuk sebagai root. Seluruh file log berada pada direktori /var/log,

sehingga isinya adalah sebagai berikut:

Dari gambar di atas, kita dapat simpulkan betapa beruntungnya kita telah mendapatkan hak akses root, sehingga kita dapat dengan leluasa melakukan apa saja pada sistem.

Page 42: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 42 dari 47

Dalam hal ini, log service yang akan kita hapus adalah log service apache2, ssh, daemon,

dan syslog. 1. Menghapus log service apache2

Untuk menghapus log service apache2, berikut adalah langkah-langkahnya: 1. Masuk ke direktori apache2, sehingga isinya adalah:

Bukti bahwa hasil exploitasi kita melalui service apache2 telah tersimpan pada log service, silahkan ketik perintah untuk membaca isi file access.log.1, maka hasilnya adalah:

Pada baris yang telah saya tandai, dapat kita lihat bahwa itu adalah isi salah satu karakter yang dapat memicu teknik SQL Injection.

Ini adalah bukti bahwa kita telah melakukan SQL Injection secara bruteforce menggunakan SQL Injection Me:

Page 43: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 43 dari 47

Ini bukti bahwa kita telah melakukan tools nmap terhadap target:

Ini bukti bahwa IP Address kita tercatat pada log apache2:

2. Sebaiknya, kita jangan menghapus file tersebut. Kita cukup menimpa ulang

semua file dengan karakter kosong, dengan mengetikkan perintah echo> [nama file yang ingin kita timpa].

Sehingga, bila kita ketik ls -l, hasilnya adalah:

Ok. Seluruh file log untuk service apache2 telah berhasil kita amankan. Sekarang

kita akan mencoba hal yang sama untuk file log service yang lain.

Page 44: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 44 dari 47

2. Menghapus log service ssh

Untuk menghapus log service ssh, berikut adalah langkah-langkahnya: 1. File log ssh disimpan pada file /var/log/auth.log

Untuk melihat ada atau tidaknya IP Address kita tercatat pada log tersebut, silahkan ketik perintah: cat /var/log/auth.log | grep 192.168.36.163, sehingga

isinya adalah:

2. Kita akan menimpa file tersebut dengan karakter kosong, dengan perintah echo>/var/log/auth.log, sehingga hasilnya adalah:

Page 45: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 45 dari 47

3. Menghapus log service daemon

Untuk menghapus log service daemon, berikut adalah langkah-langkahnya: 1. File log daemon disimpan pada file /var/log/daemon.log

Untuk melihat ada atau tidaknya IP Address kita tercatat pada log tersebut, silahkan ketik perintah: cat /var/log/daemon.log | grep 192.168.36.163,

sehingga isinya adalah:

2. Kita akan menimpa file tersebut dengan karakter kosong, dengan perintah echo>/var/log/ daemon.log, sehingga hasilnya adalah:

Page 46: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 46 dari 47

4. Menghapus log service syslog

Untuk menghapus log service syslog, berikut adalah langkah-langkahnya: 1. File log syslog disimpan pada file /var/log/ syslog.log dan /var/log/ syslog.log.0

Untuk melihat ada atau tidaknya IP Address kita tercatat pada log tersebut, silahkan ketik perintah: cat /var/log/syslog.log | grep 192.168.36.163 juga cat

/var/log/syslog.log.0 | grep 192.168.36.163, sehingga isinya adalah:

2. Kita akan menimpa file tersebut dengan karakter kosong, dengan perintah echo>/var/log/syslog.log.0, sehingga hasilnya adalah:

Kesimpulan:

Dikarenakan kita telah menghapus seluruh log file yang kita temukan, hal tersebut dapat memperkecil kemungkinan bahwa root dapat menemukan jejak kita.

Tambahan:

Setelah semua kegiatan dalam tutorial ini telah kita lakukan, hal terakhir yang perlu kita lakukan adalah melakukan logout dari layanan ssh sebagai root.

Page 47: [Dca] Report Alex

SecurityVulnerabilityReport ALEX 18 Desember 2013 Del Cyber Army Club halaman: 47 dari 47

PENUTUP Demikianlah tutorial yang tak seberapa ini, saya susun. Trima kasih.