Copy Link
Add to Bookmark
Report
Echo Magazine Issue 08 Phile 0x021
____________________ ___ ___ ________
\_ _____/\_ ___ \ / | \\_____ \
| __)_ / \ \// ~ \/ | \
| \\ \___\ 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