Tuesday, January 28, 2014

Expoit Bug CMS Balitbang

Bugs ini mungkin sudah lama sekali tetapi tidak ada salahnya untuk membahas bagaimana bugs ini bisa terjadi, bugs ini terjadi dikarenakan kecerobohan dalam coding sehingga menimbulkan bugs yang sangat fatal sekali, kenapa saya sebut fatal sekali? ya karena bugs ini dapat langsung meng-upload file termasuk file eksensi .php sehingga para peretas pasti memanfaatkan bugs ini untuk mengupload sebuah php shell untuk mendapatkan access.

Mari kita bahas, kita lihat source code pada file functions/editfile.php sebelum di patch


<?php

 if ($_POST["save"]) { 
  $dwrite = fopen("../modul/".$_POST['nmfile']., "w");
  fwrite($dwrite, $_POST["nfile"]); 
  fclose ($dwrite);
  echo "File sudah disimpan....Silahkan tutup jendela ini";
  //header("Location: ../admin/admin.php?mode=konf&kd=berhasil");
 }
 else {
   $dread = file("../modul/tag_".$file.".php");
 for ($i=0; $i <= count($dread); $i++) {
  $output .= $dread[$i];
 }
 echo "<form action='editfile.php' method=post>File Name : <input type=text name=nmfile value='tag_".$file.".php'> Jarngan diganti<br><textarea name=nfile cols=80 rows=20>$output</textarea><br><input type=hidden name=file value='$file' >
 <input type=submit value='Simpan' ><input type=hidden name='save' value='simpan' ></form>";
 
 }
 ?>


Lalu apakah ada yang salah pada code tersebut? yap ada, file ini memungkinkan untuk meng-upload suatu file langsung bahkan file .php pun bisa langsung di upload tanpa harus login terlebih dahulu.

Nah untuk itu sisipkan code fungsi untuk memvalidasi session admin sebelum mengakses fungsi utama dari file ini. (sisipkan setelah <?php)

session_start();
if (!isset($_SESSION['Admin'])) {
    echo "patched!.";
    exit;
}

Dengan kode tersebut maka sekarang bugs tersebut sudah ter-amankan. Cara ini juga bisa dilakukan pada semua file yang tidak memiliki validasi, nanti kita bahas bugs selanjutnya pada CMS balitbang ini, see you!

No comments:

Post a Comment