Blog

Home   /   blog   /   Serangan DOS di .htaccess dan Solusinya

Serangan DOS di .htaccess dan Solusinya

Jika Anda memiliki akses lokal dan diperbolehkan menulis .htaccess sendiri, ada berbagai hal menarik yang bisa dicoba. .htaccess merupakan perpanjangan dari httpd.conf, yaitu konfigurasi Apache di tiap tingkat direktori.

Misalkan file-file situsku.com ditaruh sebagai milik user situsku di /home/situsku/www.

Apache tidak membatasi ukuran .htaccess, sehingga Anda dapat meluncurkan DOS dengan membuat file .htaccess yang besar.

$cd /home/situsku/www$perl -e'print "# allow from all\n" x 200_000' > .htaccess

Baris di atas akan menulis sebuah file akses berukuran sekitar 3MB. Cobalah mengakses halaman depan situsku.com dari jaringan lokal. Jika respon menjadi lambat, maka permainan kita bisa berlanjut. Jika tidak, maka server telah dikonfigurasi untuk mengabaikan .htaccess.

Kita dapat melipatgandakan efek ini dengan membuat banyak tingkat direktori, atau loop direktori. Apache pun memperbolehkan .htaccess berupa symlink, sehingga kita dapat melakukan seperti ini:

$cd/home/situsku/www$mkdir www2$cd www2$ln -s ../.htaccess .htaccess

Akses ke www2 akan semakin lambat karena Apache memroses dulu .htaccess di www/, baru ke www2. Demikian seterusnya.

Apache sebelum 1.2.5 belum mengecek tipe file .htaccess. Sehingga dapat diserang dengan DOS seperti berikut (contoh di bawah untuk .htpasswd):

AuthType Basic
AuthName DoS Attack
AuthUserFile /dev/zero
require valid-user

Ketika mencoba membaca file password dan mencari tanda titik dua pembatas username dan password, Apache akan tersesat di rimba nol selamanya, dan menghabiskan CPU dan RAM.

Apache setelah 1.2.5 mengecek hal ini, namun belum mengecek fifo atau pipa bernama. Kita dapat membuat .htaccess sebagai file pipa bernama:

$mknod.htaccess p

Dan saat Apache mencoba membaca file akses ini, ia akan menunggu selamanya, karena tidak ada yang menulis ke pipa kita tadi. Masukkan URL ke direktori yang berisi pipa ini di browser berulang kali, maka proses Apache lama-lama akan habis karena masing-masing tergantung membaca .htaccess.

Berbagai kelemahan konfigurasi lain juga dapat dimanfaatkan melalui .htaccess. Misalnya, jika AllowOverride FileInfo aktif dan webserver memiliki mod_status, maka berikan.htaccess berikut untuk melihat halaman status Apache:

<Files /server-status>
SetHandler server-status
</Files>

Halaman status ini berguna untuk mengetahui tingkat kesibukan Apache Anda, dan juga bisa digunakan oleh penyerang agar lebih efektif dalam melakukan tugasnya.

Atau, jika Options FollowSymlinks hidup, Anda dapat melihat source code CGI/PHP user lain. Misalnya, user yang ingin diintip adalah korban. Perintah berikut dimasukkan oleh user penjahat.

$cd/home/penjahat/www$mkdir korban; cd korban$ln -s /home/korban/www www$echo -e " directoryindex none sethandler default-handler forcetype text/plain" > .htaccess

Akses direktori /home/penjahat/www/korban/www dari browser. Maka Anda akan melihat seluruh file www milik korban sebagai source. Anda dapat mencuri program yang berharga, password database, dsb.

Ada beberapa kombinasi menarik lainnya dalam bermain-main dengan .htaccess. Silakan cari dan temukan sendiri.

Solusi 5

Nomor satu, apakah Anda membutuhkan .htaccess? Jika tidak, matikan. AllowOverride None. Semua masalah beres. Bukan hanya sistem lebih aman dari user, kinerja Apache juga akan meningkat. Lanjut ke Cara 6.

Jika Anda perlu memberikan akses membuat .htaccess bagi user, maka terapkan patch ini: limit_htaccess.patch. Patch tersebut dapat membatasi kenakalan user dengan memperkenalkan tiga direktif baru.

  • LimitAccessFileSize, untuk membatasi ukuran maksimum .htaccess. Perhatikan bahwa nilai standarnya adalah 8k. Untuk mematikan pembatasan ukuran, berikan nilai 0.
  • LimitAccessFileType, untuk membatasi jenis file yang diperbolehkan. Misalnya, kita hanya mengizinkan file biasa dan tidak pipe, soket, device, atau bahkan symlink. Maka tambahkan baris LimitAccessFileType regular ke httpd.conf Anda.
  • LimitAccessFileToRoot, untuk mewajibkan .htaccess dimiliki root. Ini berarti, Apache tetap dapat menjalankan .htaccess, tapi si user tidak diperbolehkan membuatnya sendiri. Anda dapat membuat antarmuka Web semacam control panel misalnya, agar user dapat membuat .htaccess, tapi hanya perintah-perintah tertentu saja dalam jumlah terbatas.

Berikan juga direktif Options -FollowSymlinks jika Anda ingin mencegah orang agar tidak dapat membuat loop direktori.

Seleksi perintah-perintah yang boleh diberikan di .htaccess melalui direktif AllowOverride. Misalnya, jika Anda menggunakan mod_perl, sangat tidak dianjurkan menghidupkanAllowOverride FileInfo, karena si user dapat membuat .htaccess untuk menjalankan handler Perl sendiri, yang berjalan sebagai user Apache dan memiliki akses ke isi perut webserver.

Leave a Reply

Your email address will not be published.