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