Forum Codernate
Patch Bug Di Website JASAKODING.ID - Printable Version

+- Forum Codernate (https://forum.codernate.org)
+-- Forum: Pemrograman (https://forum.codernate.org/forumdisplay.php?fid=3)
+--- Forum: Pemograman Web (https://forum.codernate.org/forumdisplay.php?fid=24)
+---- Forum: PHP (https://forum.codernate.org/forumdisplay.php?fid=4)
+---- Thread: Patch Bug Di Website JASAKODING.ID (/showthread.php?tid=74)



Patch Bug Di Website JASAKODING.ID - P4KyU - 08-23-2017

Tercyduc!!


Hi, kali ini gue mau share sedikit tentang celah-celah kecil yang bisa membuat fatal pada website anda dalam tanda kutip " 

kemarin sempat kontak sama adminnya melalui email, tapi gak ada respon.. oke fine mungkin adminya kira hanya masalah sepele. 
padahal ada celah kecil yang bisa membuat seseorang bisa mengupload file yang sangat berbahaya berupa virus atau backdoor. 

Celah yang dimaksud antara lain adalah 
1. BYPASS ADMIN LOGIN SQL INJECTION 

pada kesempatan ini mba Natasya atau sering di kenal dengan m0m0 bertanya, kok wordpress bisa bypass admin login.? 
slow down,  letak bugnya ada pada subfolder, dan pada subfolder tidak memakai cms wordpress akan tetapi memakai kodingan php sendiri. 

code bypass admin login 

Quote:username : ' or 1=1 limit 1 -- -+
password : ' or 1=1 limit 1 -- -+

[Image: S1wQfjHdRKSjqyAWgp5uDg.png] 

[Image: EX31ewTzR3KcUiyo3eC4YA.png]


timbul pertanyaan kok bisa ya.?
ayo kita lihat isi kodingan dulu kenapa sampai bisa tanpa harus login menggunakan username dan password admin. 
PHP Code:
<?php
$username
=trim(strip_tags($_POST['username']));
    
$password=md5($_POST['password']);
    
$act=$_GET['act'];
    if(
$act=='lgn'){
        
$cek=mysql_query("select * from tbadmin where username='$username' and password='$password'");
        if(
mysql_num_rows($cek)==1){//jika berhasil akan bernilai 1
        
$c mysql_fetch_array($cek);
        
$_SESSION['rahasia'] = md5($c['username']);
        echo 
"<meta http-equiv='Refresh' content='0; URL=?'>";    
        }else{
    
?>
    <script type="text/javascript">
    alert('Data Login Anda salah, silahkan coba lagi !!!');
    </script> 

perhatikan pada code ini dengan metode bypass admin.
Code:
if(mysql_num_rows($cek)==1){//jika berhasil akan bernilai 1

bypass code 
Code:
' or 1=1 limit 1 -- -+

kemudian perhatikan code ini
Code:
$username=trim(strip_tags($_POST['username']));
    $password=md5($_POST['password']);


fungsi yang digunakan adalah strip_tags  
Quote:Strip_tags() : digunakan untuk menghilangkan karakter2 html dari value yg diinputkan

dalam hal ini cluenya bisa dilihat bahwa strip_tags menghilangkan karakter2 html dengan inputan id yang berupa angka bahkan berbagai karakter lainnya. 
berarti bisa dibilang tidak ada filter pada bagian inputan login. 

bagaimana cara mengatasinya.?
sebenarnya ada banyak cara, tergantung selera anda saja. 
disini saya menutup celah tersebut dengan code yang sengat pendek dan sederhana. 

saya hanya menggantikan fungsi strip_tags 
Code:
$username=trim(strip_tags($_POST['username']));
    $password=md5($_POST['password']);

dengan fungsi addslashes  
Code:
$username=addslashes(trim($_POST[username]));
    $password=md5($_POST['password']);

full code 
PHP Code:
<?php
$username
=addslashes(trim($_POST[username]));
    
$password=md5($_POST['password']);
    
$act=$_GET['act'];
    if(
$act=='lgn'){
        
$cek=mysql_query("select * from tbadmin where username='$username' and password='$password'");
        if(
mysql_num_rows($cek)==1){//jika berhasil akan bernilai 1
        
$c mysql_fetch_array($cek);
        
$_SESSION['rahasia'] = md5($c['username']);
        echo 
"<meta http-equiv='Refresh' content='0; URL=?'>";    
        }else{
    
?>
    <script type="text/javascript">
    alert('bug closed by codernate.org !!!');
    </script> 

setelah diganti dengan fungsi addslashes  
dan dicoba dengan metode yang sama alias bypass admin
Code:
' or 1=1 limit 1 -- -+


dan celahnya berhasil di tutup dengan fungsi addslashes
[Image: wzQmV8tZROSPdKk8ManUaA.png]

semoga thread ini bisa menjadi acuan untuk memperhatikan fungsi-fungsi kecil yang sangat rentan dan bisa membuat website anda di susupi oleh seseorang.


saya juga memberikan notif kepada admin melalui sebuah file yang saya titip. 
https://www.jasakoding.id/notif.htm

Referensi : http://php.net/manual/en/function.addcslashes.php

sekian untuk thread kali ini.
jangan lupa like fanspage kami : https://www.facebook.com/loading.gov 
dan profil kami                       : https://3njhuteam.github.io


RE: Patch Bug Di Website JASAKODING.ID - XCodernate - 08-25-2017

Ini nih thread yang gua demen", bukannya merusak tapi memperbaiki, semoga orang kayak ente bertambah banyak.. Big Grin + send 3