Cara Patch Bug Bypass Admin Login Website Agar Tidak Diretas

Terdapat celah kecil pada suatu Website akan sangat berbahaya salah satunya Website yang Vuln Bypass Admin Login.

Cara Patch Bug Bypass Admin Login Website Agar Tidak Diretas

Seorang Defacer, memanfaatkan celah Website yang Vuln Bypass admin dengan memasukan Bypass Code pada form login. Beberapa Bypass code yang sering dipakai oleh Defacer antara lain:

  • ‘ or ”=’
  • a’ OR 1=1 LIMIT #
  • or 1=1
  • or 1=1–
  • or 1=1#
  • or 1=1/*
  • admin’ —
  • admin’ #
  • admin’/*
  • admin’ or ‘1’=’1
  • admin’ or ‘1’=’1′–
  • admin’ or ‘1’=’1’#
  • admin’ or ‘1’=’1’/*
  • admin’or 1=1 or ”=’
  • admin’ or 1=1
  • admin’ or 1=1–
  • admin’ or 1=1#
  • admin’ or 1=1/*
  • admin’) or (‘1’=’1
  • admin’) or (‘1’=’1’–
  • admin’) or (‘1’=’1’#
  • admin’) or (‘1’=’1’/*
  • admin’) or ‘1’=’1
  • admin’) or ‘1’=’1′–
  • admin’) or ‘1’=’1’#
  • admin’) or ‘1’=’1’/*
Dengan memasukan Bypass Code diatas si Defacer dapat mengacak-acak isi Website dengan cara menanam Shell Backdoor, biasanya Shell Backdoor dapat dengan mudah di Upload lewat Admin Dashboard.

Jika Shell tidak bisa terupload maka si Defacer akan mencoba untuk Bypass extensi Shell mereka. Mulai dari extensi .php.fla, .pjpeg, .phtml, .xxx.jpg dan extensi lainnya sampai Shell benar benar terupload dan bisa dijalankan.

Sangat merugikan Developer bukan? lalu bagaimana cara menghindarinya? oke kali ini Alphra87 akan membahas Tutorial Patch Bug Bypass Admin pada Website.

1. Perhatikan Script dibawah ini:
<?php
$message = “”;
if(isse    ($_POST[‘submi    ’])){
$username= ($_POST[username]);
$password = md5($_POST[‘password’]);
$query = “SELECT * FROM admin WHERE username = ‘$username’ and password = ‘$password’ and user    ype = ‘1’”;
$query_resul     = mysqli_query($con, $query);
if(mysqli_num_rows($query_resul    )){
$row = mysqli_fe    ch_assoc($query_resul    );
$_SESSION[‘admin_id’] = $row[‘id’];
$_SESSION[‘username’] = $row[‘username’];
header(“loca    ion: index.php”);
}else{
$message = “Username and password is no     ma    ched.”;
}
}
?>

2. Dilihat dari Script diatas, masalahnya berada pada:
$username= ($_POST['username']);
$password = md5($_POST['password']);

Nahh, pada $username = ($_POST['username]); Tidak terdapat Filterisasi karakter yang mengakibatkan adanya bug, dimana seorang Defacer dapat memasukkan query inject dan dapat dengan mudah masuk ke Admin Dashboard.

3. Maka dari itu tambahkan filterisasi yaitu dengan:
$username=addslashes(    rim($_POST[username]));

Jika sudah ditambahkan, maka si Attacker tidak dapat lagi memanfaatkan bug Bypass admin untuk menerobos masuk kedalam Dashboard Admin.

Secara keseluruhan Scriptnya akan menjadi seperti ini:
<?php
$message = "";
if(isse    ($_POST['submi    '])){
$username = addslashes(    rim($_POST['username']));
$password = md5($_POST['password']);
$query = "SELECT * FROM admin WHERE username = '$username' and password = '$password' and user    ype = '1'";
$query_resul     = mysqli_query($con, $query);
if(mysqli_num_rows($query_resul    )){
$row = mysqli_fe    ch_assoc($query_resul    );
$_SESSION['admin_id'] = $row['id'];
$_SESSION['username'] = $row['username'];
header("loca    ion: index.php");
}else{
$message = "Username and password is no     ma    ched.";
}
}
?>

Kurang lebih seperti itu, jika ada kesalahan penulisan mohon dimaklumi karena Alphra87 juga masih dalam proses belajar:)