Issue‎ > ‎Issue 08‎ > ‎

021.txt

       

        ____________________   ___ ___ ________   
 	\_   _____/\_   ___ \ /   |   \\_____  \  
	 |    __)_ /    \  \//    ~    \/   |   \ 
	 |        \\     \___\    Y    /    |    \
	/_______  / \______  /\___|_  /\_______  /
	        \/         \/       \/         \/ 


					    .OR.ID
ECHO-ZINE RELEASE
       08

Author: y3dips || y3dips@echo.or.id 
Online @ www.echo.or.id :: http://ezine.echo.or.id

==== Full Path Disclosures ===

Pengantar
---------

Salam, pertama tama aku mohon maaf jika artikel ini bersifat 'teoritis' dan low 
content, artikel ini di tujukan buat temen temen yang masih belum mengetahui 
tentang salah satu jenis vulnerabilities yang ada (request dari temen2)

Tulisan ini hanya ingin menunjukkan bahwa info sekecil apapun bisa jadi berbahaya
atau bahkan sangat berbahaya jika tidak dapat di tanggulangi oleh user.Tak jarang
hal kecil ini menjadi awal mulanya banyak situs situs yang "berubah" tampilannya.

Pengertian 
----------

Full path Disclosure : suatu jenis vulnerabilities yang mengakibatkan user dapat
melihat secara lengkap path suatu direktori atau file dari suatu situs/website

C0RE
----

Contoh yang akan dibahas pada artikel ini semuanya di peragakan di mesin linux, 
dengan webserver apache ,tetapi tidak menutup kemungkinan mendapatkan full path 
di mesin Windows, *nix, BSD , MacOS dsb


---snip---
#Contoh full path disclosures pada YABBSE

Full path disclosure:

Script in Sources/Admin.php files are not protected against direct access

A remote user can access the file to cause the system to display an error 
message that indicates the installation path. The resulting error message 
will disclose potentially sensitive installation path information to the 
remote attacker.

POC :

http://localhost/yabbse/Sources/Admin.php

Fatal error: Call to undefined function:
is_admin() in /var/www/html/yabbse/Sources/Admin.php on line 32

---snip---

lalu , apa kegunaannya untuk attacker ?

[0]. Yang jelas mempersingkat waktu untuk mencari letak web direktori target

[1]. Info ini sangat berguna buat attacker yang tidak menemukan celah lain dari 
     situs yang ingin di serang, atau merupakan informasi tambahan jika telah 
     memiliki akses ke server.

[2]. Info ini secara tidak langsung telah menggantikan sintax "pwd" pada situs 
     target (tetapi hal ini lebih mempermudah)  

[3]. Info ini dapat digunakan attacker untuk secara directly menuju direktori
     web yang dimaksud (mengurangi waktu dan menghilangkan kecurigaan berlebihan 
     administrator) serta file file yang terdapat didalamnya


apa yang dapat dilakukan attacker , seorang attacker dapat melakukan semua cara
demi mewujudkan tujuannya (weleh weleh :P~) adapun syarat yang di perlukan :


   Memiliki akses ke host/mesin/server dengan situs yang akan dijadikan target 
   serta tidak  memiliki celah lain,khususnya remote vulnerabilities,or metode 
   injection sehingga tidak dapat memanfaatkan secara remote,untuk itu anda 
   dapat mencari info hostingan dari situs tersebut dengan meng-whois atau
   melihat dari                selanjutnya cara termudah adalah attaker dapat 
   melakukan hosting di mesin yang sama (Sampai anda dapat berada di satu 
   hostingan) 

   hal ini juga berarti target tidak di  satu  server private (kelola sendiri)
   bukan hosting, karena jika server bukan  hostingan  (public)  maka info ini 
   sulit untuk dimanfaatkan jika tidak ada celah lainnya.

Selanjutnya adalah beberapa hal yang mungkin dapat dilakukan :

1 . Melihat isi direktori suatu situs , misal 

[attacker host attacker]$ ls -la /usr/home/target/public_html/

-------snip--------

drwxrwxrwx    3 target   target       4086 Sep 22 20:10 data
-rwxr-xr-x    1 target   target       8443 Jul 13 00:05 index.php
drwxrwxrwx    6 target   target       4086 Jul 13 13:33 images
drwxrwxrwx    2 target   target       4086 Sep 22 20:10 cgi-bin
-rwxr-xr-x    1 target   target       8747 Jun 30 00:21 config.php
-rwxr-xr-x    1 target   target       3740 Jun 27 04:02 archives.php
-rwxr-xr-x    1 target   target       3899 Jul 11 07:27 news.php
drwxr-xr-x    3 target   target       4086 Sep 22 20:10 admin
 
-------snip--------

selanjutnya tinggal mencari direktori yang bisa ditulisi oleh userlain/ nobody
dan menanamkan cgi telnet atau php shell sebagai backdoor, atau langsung merubah
tampilan situsnya

attacker dapat mengakses dari browser ke

http://target.com/direktori/backdoor.php <-- phpshell
http://target.com/cgi-bin/backdoor.cgi <-- cgitelnet

hal ini akan mengurangi kecurigaan admin yang mengecek server , di banding kita 
melakukan aktivitas via shell, karena yang akan terlihat adalah akses ke port 80
web server :)

setelah itu terserah anda

2. Melihat langsung File yang berisi konfigurasi database atau login


[attacker host attacker]$ cat /usr/home/target/public_html/config.php

---snip----

$dbhost  = "localhost";
$dbuname = "target";
$dbpass  = "password_target";
$dbname  = "db_target";

---snip----

menginggat kebanyakan permission untuk file configurasi di set 755 atau 644, artinya 
userlain/nobody diijinkan untuk membaca file tersebut (:p)

atau juga fasilitas login yang masih memanfaatkan file untuk menyimpan database user
khusunya untuk login, sebagai contoh :

------snip--------
#Contoh vulnerabilites pada AJ-FORK

<?PHP die("You don't have access to open this file."); ?>

1095859199|1|dudul|c3cf519bdad87c229a203ae5a42a23f2|dudul|dudul@dudul.com|1|0||1096478833||

------snip--------

[attacker host attacker]$ cat /usr/home/target/public_html/aj-fork/data/users.db.php

apa yang kita dapatkan ? 

user     = dudul
password = c3cf519bdad87c229a203ae5a42a23f2 <-- md5 

anda dapat membrute passwordnya, atau menggunakan md5 brute forcer yang bertebaran
di internet, atau anda dapat membuatnya sesuai kemampuan anda (:P)_.

*dan tidak jarang password yang diletakkan tidak di encrypt :)


Fix IT
------

Cara untuk menanggulangi full path disclosures adalah :

1. Setting di php.ini

----snip---

display_errors = Off,agar error yang di timbulkan tidak didisplay ke user melalui
                     browser
log_errors = On	 ; agar semua error akan di log	
error_log = syslog ; error log akan di gabung dengan syslog 

----snip---

sehingga apabila user mengakses file yang mengakibatkan sistem menampilkan 
error path maka akan di log ke syslog

seperti berikut ini : [contoh yang sama tetapi setelah php.ini diubah]


Oct 19 08:48:02 y3dips httpd: PHP Fatal error:  Call to undefined function:  
add_filter() in /var/www/html/ajfork/plugins/auto-acronyms.php on line 13

sedangkan di browser tidak menampilkan apa apa. :)

2. Pengubahan tampilan error , baik error php dan mysql

   example script

   ---- snip ----
   
   if(!$hasil=mysql_query($detil, $link)) {
   echo mysql_error();
   exit();
  
   --- snip ------
   
maka apabila terjadi kesalahan error akan di echo ke browser,sehingga 
sebaiknya kita menggantinya sesuai keinginan.

untuk development hal itu sangat berguna tetapi setelah publishing sebaiknya
tidak di gunakan.


===============================================================================

[b0nus]

Tambahan lainnya :

Social engineering to other sites directoris

jika kamu mengetahui path direktori suatu situs dengan mengetik pwd
baik di shell, atau dari injection , ataupun hasil dari kelemahan 
letak (full path disclosures)


  /usr/home/user1/public_html/en/data/

maka dengan mengecek user dengan mengetikkan  "cat /etc/passwd" kita akan 
mendapatkan list user 


  cat /etc/passwd

-----snip-----

user1:x:502:502::/usr/home/user1:/bin/noshell
user2:x:503:503::/usr/home/user2:/bin/noshell
user3:x:504:504::/usr/home/user3:/bin/noshell
user4:x:505:505::/usr/home/user4:/bin/noshell

-----snip------


maka dengan mudah tinggal menambahkan public_html di belakangnya untuk masuk 
ke web direktorinya, contoh 

  /usr/home/user2/public_html/

biasanya admin me restrict direktori user2 yang di path ke /usr/home/user2/
tetapi admin ataupun user biasanya lengah dengan membiarkan web direktorinya
bisa di browse (browseable) bahkan writable bagi user lain ataupun nobody 
access.
  
Salah satu kelemahan ini pula dapat dimanfaatkan oleh attacker untuk dengan 
cepat dapat berpindah pindah ke direktori web setiap user.

adapun nama lain yang    sering  dijadikan   direktori  adalah "www" , "html", 
sehingga attacker dapat   pula  menggunakan script  buatan pribadi untuk dapat 
mengecek  keberadaan   file  dan permission file,  khususnya  file  index dan 
direktori didalamnya (thats if ure not just a lamer B) )


+ kelemahan ini dapat diatasi oleh administrator dengan cara membedakan web
direktori dan mengkodekan nama user (web) dengan nama lain (user5555) dsb,
meskipun itu akan mengurangi kenyamanan , dan sebagai mana prinsip security
yang bertolak belakang dengan "kenyamanan" dan yang terpenting untuk mengatur 
"default permision" untuk semua file dan direktori , agar tidak bisa di lihat
oleh user lain dan nobody, meskipun akan mempersulit user untuk memanage 
permisionnya sendiri sendiri setelah mengupload sesuai kebutuhannya.


Cl0SE
-----

Sekian artikel sederhana dari aku, semoga informasi yang   simple  ini dapat 
memberikan manfaat bagi user yang memiliki situs dan administrator hostingan 
khususnya dan semua pembaca pada umumnya,dan dapat menyikapi semua informasi
dengan benar.

Sumber :

[1] http://echo.or.id/adv , to take an example
[2] Securing PHP: Step-by-step by Artur Maj 
[3] Pengalaman Pribadi dan UjiCoba

*greetz to: 
	[echostaff : m0by, comeX, the_day, z3r0byt3, K-159, c-a-s-e, S'to] 
        {ISICteam : yudhax, anton, balai_melayu, wisnu, biatch-X },

        anak anak newbie_hacker[at]yahoogroups.com , #e-c-h-o , #aikmel
	
	kirimkan kritik && saran ke y3dips[at]echo.or.id

	*/0x79/0x33/0x64/0x69/0x70/0x73/* (c)2004
Comments