Mr_k0py0r
<?php Security
Bagi anak IT dan Mahasiswa IT Pasti sudah tidak asing dengan Bahasa Pemrograman ini, bahasa pemrograman ini cukup populer karena cukup mudah
dan umumnya digunakan dalam sebuah website,
bahkan di kalangan mahasiswa, Php seringkali di jadikan TA atau sebuah project tugas mereka, (seperti di kampus saya, php sangat berguna di mata kuliah Pemrograman Berbasis Internet, Pemrograman Berbasis Objek, dan Testing Implementasi),
dalam pembuatan web sendiri, php bisa digunakan dengan 2 cara yaitu dengan menggunakan Php Native dan banyak juga yang menggunakan Framework atau kerangka kerja,
framework php yang cukup populer saat ini adalah:
-Laravel
-Yii
-CodeIgniter
dan lain lain
namun, saat ini seringkali aplikasi berbasis php lebih banyak ter exploitasi karena penggunanya bukan hanya seorang developers.
disisi lain. mahasiswa kadang kurang awarness terhadap security di aplikasi php tersebut, mengapa? karena anggapan mereka "Pokoknya jalan tugas aman"
dan akhirnya terbawa sampai kapanpun.
bagi yang menggunakan Framework mungkin sudah secure by default. yang artinya keamanannya sudah baik selama mengikuti Rule dari framework tersebut.
nah yang seringkali menggunakan native?, apakah sudah aman? cek kodingan kalian lagi deh.
kesalahan terbesar mindset seorang programmer/developers/Mahasiswa IT saat ini adalah:
"Ah yang penting jalan"
"Itu kan jobnya hacker/Pentester, kita mah apa atuh"
"ngapain ngurusin securitynya orang ini cuman tugas doang kok penting dapat nilai A"
"Kan aku pakai framework ngapain ngurusin begituan"
"di stack overflow ketemunya gitu kok yaudah ikut aja"
"kan tinggal di polisikan aja"
untuk mindset pertama :
sangat salah besar ketika aplikasi jadi dan tidak apakah aplikasi itu aman atau tidaknya,
nah kalo sampek dijebol trus webnya dirusak(deface/drop database atau bahkan sampai diformat)?
mau nyalahin siapa? salah hackernya?, akhirnya reputasi kalian sendiri yang hancur kan?
untuk mindset kedua :
memang itu jobnya hacker atau pentester, namun apakah developers gak wajib tau? sangat wajib sekali
mengapa? karena ketika sudah di pentest kalo mau ngepatch apakah gak butuh di test ulang oleh developersnya
untuk mengetes hasil patchnya?
untuk mindset ketiga :
ini nih mahasiswa jaman now, pokok nilai A, pokoknya lulus, bukan bidang kita, aku nggak nekunin security.
disini saya sebagai mahasiswa cukup prihatin dengan mindset ini. karena anggapan bos kalian pada saat sudah lulus adalah
ketika dapat Nilai A maka anda dianggap sudah suangat puaham dengan web sama securitynya. nah kalo udah proyekan trus
dapat web native trus kalian gapaham dengan securitynya? kebobolan? mau nyalahin siapa? okelah kalian pakai Framework
tapi apakah selamanya kalian pakai framework?? kalo bos kalian minta native mau yaapa?
untuk mindset keempat:
okelah pakai framework ini itu, tapi kalo terpaksa harus keluar rule dari framework gimana? kalo gak paham trus kebobolan nyalahin tutorial?
untuk mindset kelima :
iya memang semua berasal dari stack overflow, tapi usahakan jangan asal copas dong, dipelajari lagi kenapa pakai ini dan itu ntar
kalo kebobolan nyalahin yang jawab di forum itu?
untuk mindset keenam :
iya memang sudah diatur dalam undang undang tentang pembobolan, sama aja reputasi kalian kan akan turun?
jawaban dari semua mindset di atas intinya adalah "mulailah pelajari tentang securitynya jangan hanya mbangun tapi pelajari cara merusaknya
agar tau bagaimana menangani atau menghindari dari kerusakan tersebut"
oke baiklah cukup intermezzo dari saya sekarang back to topic
setiap Pemrograman pasti memiliki kelebihan dan kekurangan masing masing
dan pastinya memiliki celah keamanan
namun kita yang membangun sebaiknya membuat pengamannya sendiri
sebelum itu kenali dulu php vulnerability yang ada celah celah yang umum adalah:
Php strcpy => yaitu fungsi yang menyamakan antar kedua variable yang bernilai int/double, bypassnya adalah dengan mengubah request pada salah satu parameter/variable dengan array misalnya (awalnya : /login.php?username=123&password=123 cukup di rubah dengan /login.php?username[]=123&password=123)
solusi:hindari penggunaan fungsi ini untuk login maupun register
Sql Injections => serangan yang menargetkan database dari parameter dalam sebuah website, bisa juga melalui form login register maupun search, intinya yang berhubungan langsung dengan database dan dimanipulasi dengan
fungsi fungsi dari SQL
jenisnya sangat banyak yaitu : Blind SQL Injections,Boolean Based Blind SQL Injections Time Based SQL Injections dan SQL Injections biasa
-Blind SQL Injections => tekniknya menebak nebak nama database/table/column
-Boolean Based SQL Injections => Tekniknya membandingkan dengan nilai yang bernilai true
-Time Based SQL Injections => berbasis pada waktu.
-Standart SQL Injections => Standart dari SQL Injections dengan menggunakan fungsi fungsi dari sql(basic SQLI);
bagaimana Preventionsnya?
1. gunakan fungsi bindParam();
2. hindari menulis query seperti ini dalam program
$q = "select * from taskquery where id=$_GET[id]";
Cross Site Scripting(Xss) => serangan XSS merupakan salah satu jenis serangan injeksi code (code injection attack).
XSS dilakukan oleh penyerang dengan cara memasukkan kode HTML atau client script code lainnya ke suatu situs.
Serangan ini akan seolah-olah datang dari situs tersebut.
Akibat serangan ini antara lain penyerang dapat mem-bypass keamanan di sisi klien, mendapatkan informasi sensitif, atau menyimpan aplikasi berbahaya. (en.wikipedia.org)
Jenis Jenis Dari XSS adalah :
2. XSS Stored => Stored XSS lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah serangan stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali. Contohnya adalah pada message board, buku tamu, dll. Penyerang memasukkan kode HTML atau client script code lainnya pada posting mereka.
3. XSS Reflected => Reflected XSS merupakan tipe XSS yang paling umum dan yang paling mudah dilakukan oleh penyerang. Penyerang menggunakan social engineering agar tautan dengan kode berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang bisa mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak session pengguna.
Bagaimana Preventionsnya? :
gunakan fungsi fungsi berikut :
1. htmlentities();
2. htmlspecialchar();
3. sanitize();
dan jangan pernah melakukan echo tanpa filterisasi
Cross Site Request Forgery(CSRF) => merupakan rekayasa request dari seorang penyerang kepada server dari sebuah input username dan password yang tidak di filerisasi dengan adanya token pada form tersebut, intinya adalah serangan ini dapat menyebabkan user admin dapat terbypass dengan cara pemalsuan
request itu sendiri
Bagaimana Preventionsnya?:
gunakan token pada form yang digunakan di dalam form tersebut,
File Upload => baik, untuk file upload sendiri sudah jelas digunakan untuk mengupload sebuah berkas ke dalam server baik itu dalam bentuk gambar/file/dokumen/dan lain lain
hal yang paling risk dari file upload adalah dilakukannya upload sebuah backdoor ke dalam file upload tersebut tanpa adanya filtrasi
jadi dalam kasus ini ada beberapa hal yang dapat dijadikan Preventions yaitu :
gunakan filter pada file format
contoh :
$valid_ext = array('jpg','jpeg','png','gif','bmp');
if(isset($_POST['upload']) && $_FILES['file']['size']>0){
$ext = strtolower(end(explode('.', $_FILES['file']['name'])));
if(in_array($ext, $valid_array)){
move_uploaded_file($_FILES['file']['tmp_name'], 'upload/'.$_FILES['file']['name']);
}else{
echo "Maaf... file yang ada pilih bukan file gambar. Hanya file JPG, PNG, GIF atau BMP yang boleh diupload..!";
}
}
?>
juga di limitasi dengan cara dicheck ukurannya jika kurang dari 50 kb dan diatas 1 mb maka file di tolak
contoh
<?php
$maxsize = 1024 * 200; // maksimal 200 KB (1KB = 1024 Byte)
$minsize = 12*12;
$valid_ext = array('jpg','jpeg','png','gif','bmp');
if(isset($_POST['upload']) && $_FILES['file']['size']<=$maxsize || $_FILES['file']['size'] <= $minsize){
$ext = strtolower(end(explode('.', $_FILES['file']['name'])));
if(in_array($ext, $valid_array)){
move_uploaded_file($_FILES['file']['tmp_name'], 'upload/'.$_FILES['file']['name']);
}else{
echo "Maaf... file yang ada pilih terlalu besar, maksimal 200 KB..!";
}
}
?>
Local File Inclusions => merupakan teknik serangan yang dapat mengambil sebuah file dari server tersebut melalui url yang menginclude file tersebut
contoh serangannya adalah
index.php?page=test.php lalu di jadikan index.php?page=/etc/passwd
dimana masalah coding yang cukup berbahaya?
<?php
include($_GET[‘halaman’]);
?>
bagaimana Preventionsnya?
gunakan contoh seperti ini
<?php
include("/halaman" $_GET['halaman'] .php);
?>
Remote File Inclusions => Hampir sama dengan LFI namun Serangan ini menggunakan file include tersebut untuk meload file dari luar website/server tersebut
Paling risk dari serangan ini adalah dapat mengupload backdoor dari server lain yang tersimpan ke server tersebut
untuk risk dan Preventionsnya sama dengan LFI sendiri
dari celah celah di atas yang paling umum di lakukan dan celah yang paling umum dijumpai adalah
SQLI, dan File upload
saya pernah menjumpai web kampus yaitu sk*.f*s*p.*n**r.**.** yang sempat vulnerable terhadap beberapa celah yaitu SQL Injections ,File Upload, dan XSS Reflected melalui user biasa
sedikit cerita dari pengalaman meng exploitasi website itu:
saya lihat web tersebut tidak menggunakan standart dari kampus U*** yang rata rata menggunakan wordpress
lalu saya lihat disitu menggunakan php murni tanpa framework
lalu terdapat url yang menurut saya agak kurang bagus
lalu saya coba melakukan SQLI ke web tersebut
eh ternyata sudah ada waf nya
lalu saya coba bypass atas saran dari temen temen akhirnya tembus
lalu saya coba masuk ke user dan melakukan file upload
lah file uploadnya di filter langsung di die();
saya coba bypass dengan menggunakan shell wso dengan sedikit bumbu yaitu tambah file signature jpg
eh tembus
,
hal itu sudah saya laporkan ke pihak Kampus tersebut dan sudah diperbaiki meskipun agak lama (dengan di suspendnya sub tersebut)
Dari sini tidak dapat disimpulkan php itu gak secure
semua pemrograman memiliki celah keamanan sendiri sendiri
pun di java,python,ruby dkk juga memiliki sql injections dan celah celah lainnya
tinggal bagaimana cara kita mengamankannya
Oke Sekian dari saya
jika ada kurangnya mohon ditambahkan
jika ada lebihnya mohon diambil saja saya ikhlas ?
GREAT THANKS For:
Surabaya Hacker Link Beserta Seluruh Staff Member dan Sesepuh ✌
Mas Ryan fabella , makasih banyak mas pokoknya :v
si.fst.unair.ac.id -> terima kasih atas ilmu coding yang telah diajarkan ke saya :v khususon pak kartono, pak faried , pak eto', pak lukman, bu endah, pak indra,pak hendra dan pak taufik :v
Airlangga IT Community -> Makasih banyak mas mas dan mbak mbak (Mas Ade Firman,bendot,ali,gondrong,muh,dkk) yang telah berbagi ilmu disini Semoga Di umur nya AITC yang sudah 1 tahun lebih sangar dan sukses selalu :v
Janda Liar (ICOL,TATAK,Najer) -> Forgive Me gatau kumpul nak sekolah :v _/_ Sukses buat kalian para perusak wifi sekolahan All Hail Janda Liar :v :v
Hungz Cyber Team & Malang Cyber Crew -> makasih dan sukses buat kalian :v
?>