Uji Coba File Upload Vulnerability di PHP


Uji Coba File Upload Vulnerability di PHP
Uji Coba File Upload Vulnerability di PHP
Sumber : root93

ROOT93 - Disini saya akan melakukan sebuah uji coba file upload vulnebr. Jadi ceritanya disini saya akan melakukan bypass atau intercept yang akan membuat server terkelabui dan menganggap file yang di upload ke server adalah file yang sesuai.

Ada dua file PHP yang akan saya uji coba, file tersebut akan bertugas untuk memfilter file yang di upload serta mencegah terjadinya intercept. Penulisan kode file pertama dan kedua akan dibuat berbeda, dan selanjutnya dibandingkan mana yang lebih baik dari segi penulisannya.

Contoh 1:

<?php

/*
ROOT93.CO.ID
COMPUTER | NETWORKING | WEB PROGRAMMING

*/

if(isset($_POST['submit'])){

 $Direktori = 'gambar/';
 $Penempatan = $Direktori. basename($_FILES['foto']['name']);
 $Filter = array('image/jpeg','image/png');
 $Ext = pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION);

 if(in_array($_FILES['foto']['type'], $Filter))
 {
  if($Ext=='php' || $Ext == 'php5'){
   die("Hacking Terdeteksi");
  }

 $uploadSukses=false;
 if(move_uploaded_file($_FILES['foto']['tmp_name'], $Penempatan))
 {
  $uploadSukses = true;
 }else{
  die("Gagal Upload");
 }
 }else{

  die("Ektensinya tidak sesuai");
 }
}

?>

<html>
<head>
<title>Upload test : Root93</title>
</head>
<body>
<?php
 if(!empty($uploadSukses)){
  echo "Berhasil di Upload<br/>";
  echo "<img src='{$Penempatan}' />";
 }

?>

<form action="" method="POST" enctype="multipart/form-data">
 <br/>
 <label>Pilih Foto :</label>
 <input type="file" name="foto" accept="image/*" />
 <br/>
 <br/>
 <input type="submit" name="submit" value="Submit Data" />
</form>

</body>
</html>


Contoh 2 :

<?php

/*
ROOT93.CO.ID
COMPUTER | NETWORKING | WEB PROGRAMMING

*/

if(isset($_POST['submit'])){

 $Direktori = 'gambar/';
 $FotoName = $_FILES['foto']['name'];
 $FotoTmp = $_FILES['foto']['tmp_name'];
 $Filter = array('jpeg','png','gif');
 $Ext = pathinfo($FotoName, PATHINFO_EXTENSION);

 if(in_array($Ext, $Filter))
 {
  
 $uploadSukses=false;
 if(move_uploaded_file($FotoTmp, $Direktori.$FotoName))
 {
  $uploadSukses = true;
 }else{
  die("Gagal Upload");
 }
 }else{

  die("Ektensinya tidak sesuai");
 }
}

?>

<html>
<head>
<title>Upload test : Root93</title>
</head>
<body>
<?php
 if(!empty($uploadSukses)){
  echo "Berhasil di Upload<br/>";
  echo "<img src='$Direktori$FotoName' />";
 }

?>

<form action="" method="POST" enctype="multipart/form-data">
 <br/>
 <label>Pilih Foto :</label>
 <input type="file" name="foto" accept="image/*" />
 <br/>
 <br/>
 <input type="submit" name="submit" value="Submit Data" />
</form>

</body>
</html>


Penjelasan :
Pada script pertama didalam in_arraymenggunakan FILES[type] untuk mendapatkan informasi tipe gambar, sehingga tidak heran hal ini justru bisa di intercept dan memerlukan script tambahan untuk mengecek ektensi $Ext=='php' bila mana terjadi usaha intecept.

Sedangkan pada contoh script yang kedua didalam in_array berisi pathinfo dari file secara langsung yang disimpan dalam variabel Ext. 
 
Sehingga menurut analisa saya, jika kita menggunakan $_FILES['type'] didalam in_array untuk mendapatkan informasi tipe gambar, maka kemungkinan hal tersebut bisa intercept. Sedangkan ketika didalam in_array di taruh variabel yang mengandung pathinfo, PATHINFO_EXTENSION dalam uji coba kita bisa melihat bahwa hal tersebut tidak bisa di intercept / bypass atau dimanipulasi nilinya

Video Uji Coba File Upload Vulnerability di PHP


(Ahmad Zaelani)

0 Response to "Uji Coba File Upload Vulnerability di PHP"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin