Pengujian penetrasi untuk situs WordPress
Diterbitkan: 2020-03-20WordPress mendukung banyak situs web di Internet. Jadi tidak mengherankan bahwa penyerang berpengalaman dan "script-kiddies" suka menargetkan situs WordPress. Baik Anda seorang webmaster, atau profesional keamanan, ketika ditugaskan untuk menilai postur keamanan situs web WordPress, ini cenderung membantu untuk menyadari jebakan keamanan umum yang biasanya dimanfaatkan oleh penyerang. Penting juga untuk menggunakan alat pengujian penetrasi yang tepat.
Pada artikel ini, saya akan membahas sejumlah lubang keamanan umum, malpraktik, dan informasi berguna yang mungkin dapat disalahgunakan oleh penyerang di banyak instalasi WordPress. Saya juga akan menyoroti sejumlah alat yang dapat Anda gunakan untuk membantu Anda mengotomatiskan pengujian penetrasi WordPress.
Perhatian — Hanya lakukan pengujian penetrasi keamanan pada sistem milik Anda, atau Anda telah diberi izin. Pahami batasan akses yang telah diberikan kepada Anda dan tetap dalam batasan tersebut.
Masalah & malpraktik keamanan WordPress yang umum
Versi kode WordPress yang kedaluwarsa
Menjalankan versi lama inti WordPress yang mengandung kerentanan keamanan bisa dibilang salah satu lubang keamanan paling umum yang berkaitan dengan WordPress. Meskipun versi WordPress yang lebih baru memudahkan untuk meningkatkan ke versi terbaru, tidak jarang situs WordPress yang lebih lama tertinggal.
Menjalankan WordPress versi lama di Internet adalah bom waktu. Banyak versi lama WordPress mengandung kerentanan keamanan. Banyak dari masalah keamanan ini biasanya dieksploitasi secara massal oleh penyerang.
Saat mengaudit situs WordPress untuk kerentanan keamanan, ini biasanya salah satu hal pertama yang ingin Anda periksa. Untungnya bagi penyerang, secara default, WordPress menambahkan tag meta HTML yang berisi versi WordPress yang digunakan.
<meta name=”generator” content=”WordPress 4.8.11″ />
Mengetahui instalasi WordPress menjalankan versi lama dapat memberi penyerang kesempatan untuk memanfaatkan kerentanan yang diketahui. Gunakan database kerentanan keamanan CVE untuk mencari masalah keamanan yang diketahui di inti WordPress.
Versi tema dan plugin WordPress yang ketinggalan zaman
Inti WordPress sangat aman. Jutaan pengguna, dan peretas jahat sama-sama menguji dan meninjau kode secara menyeluruh. Ini berarti bahwa sebagian besar waktu, masalah keamanan terlihat dan diperbaiki sebelum disalahgunakan oleh penyerang. Namun, itu tidak kebal terhadap kerentanan keamanan. Sayangnya, ini tidak berlaku untuk ribuan plugin dan tema WordPress.
Siapa pun dapat mengirimkan tema atau plugin dan membuatnya tersedia untuk diunduh dan digunakan oleh administrator WordPress mana pun. Tentu saja, ini tidak berarti bahwa setiap plugin WordPress memiliki kode yang buruk dan penuh dengan kerentanan — jauh dari itu. Namun, kerentanan yang diketahui mengekspos permukaan serangan besar-besaran ke WordPress yang harus Anda waspadai saat melakukan uji penetrasi WordPress.
Alat tercepat dan bisa dibilang, paling komprehensif untuk digunakan untuk sidik jari plugin dan tema WordPress yang rentan adalah dengan menggunakan WPScan. WPScan adalah pemindai keamanan WordPress kotak hitam sumber terbuka yang sering digunakan untuk memindai situs web WordPress untuk mengetahui kerentanan dalam inti, plugin, dan tema.
Saat menggunakan WPScan selama pentest, pastikan Anda mendaftar dan mengonfigurasinya untuk menggunakan kunci API Database Kerentanan WPScan . Basis Data Kerentanan WPScan adalah basis data yang dikelola oleh penulis WPScan dengan kerentanan terbaru yang diketahui dan versinya masing-masing.
Untuk informasi selengkapnya tentang WPScan dan cara menjalankan berbagai jenis pemindaian, lihat memulai dengan WPScan.
Versi lama PHP dan server web
WordPress adalah aplikasi web PHP dan oleh karena itu, semua praktik terbaik keamanan PHP juga berlaku untuk WordPress. Selama tes penetrasi WordPress, ini adalah salah satu hal pertama yang harus dicari. Instalasi WordPress yang menjalankan versi lama PHP atau perangkat lunak server web (mis. Nginx, Apache HTTP Server, IIS…) dapat membuat situs web terkena segala macam serangan yang berbeda.
Sangat mudah untuk mengetahui server web dan versi PHP apa yang digunakan situs web WordPress. Dalam banyak kasus, yang perlu dilakukan penyerang hanyalah memperhatikan header respons HTTP yang dikembalikan dari situs web. Anda dapat mengirim permintaan sendiri dengan curl:
$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i “Server\|X-Powered-By”
Cari header Server dan X-Powered-By HTTP dalam respons:
Server: Apache/2.4.29 (Ubuntu)
X-Powered-Oleh: PHP/5.5.9
Tergantung pada versi dan konfigurasi situs web, penyerang mungkin dapat menggunakan kerentanan yang diketahui (misalnya https://www.cvedetails.com/vendor/74/PHP.html) untuk mendapatkan informasi tambahan tentang target. Informasi tersebut dapat membantu meningkatkan serangan, atau bahkan menjalankan perintah langsung di server web.
enumerasi nama pengguna WordPress
Kecuali jika administrator sistem telah mengambil langkah-langkah untuk mencegahnya, secara default, WordPress rentan terhadap serangan enumerasi pengguna. Serangan enumerasi pengguna WordPress, cari perbedaan halus dalam cara WordPress merespons permintaan tertentu. Bergantung pada responsnya, penyerang dapat menentukan apakah pengguna ada atau tidak, memungkinkan penyerang untuk berpotensi menggunakan informasi ini sebagai bagian dari serangan yang lebih besar.
Berikut ini adalah tangkapan layar WPScan yang melakukan serangan enumerasi nama pengguna WordPress.
Kesalahan konfigurasi server web
Daftar direktori dan kesalahan konfigurasi server web lainnya
Selain perangkat lunak yang sudah ketinggalan zaman, seseorang harus selalu menilai kemungkinan kesalahan konfigurasi server web. Server web yang salah konfigurasi mungkin membuat situs web WordPress rentan terhadap eksploitasi. Ini dapat terjadi bahkan jika server web menjalankan perangkat lunak terbaru. Berikut adalah beberapa kesalahan konfigurasi server web yang khas:
Daftar direktori yang diaktifkan
Daftar direktori adalah kesalahan konfigurasi yang sangat umum. Server web Apache mengaktifkan ini secara default, dan itu tidak membantu. Daftar direktori hanya mencantumkan file dan direktori di server web dalam antarmuka grafis ketika tidak ada file indeks.
Meskipun ini sendiri tidak terlalu berbahaya, ini memberikan kemungkinan bagi penyerang untuk menelusuri konten direktori server web Anda. Ini mungkin memungkinkan dia untuk melihat semua file di situs web Anda, yang sebagian besar seharusnya tidak dapat diakses publik, seperti cadangan, kata sandi, dan file konfigurasi.
File cadangan
File cadangan adalah kesalahan konfigurasi server web yang terlalu umum. Biasanya ini terjadi ketika administrator sistem secara manual mengedit file pada sistem produksi.
Contoh umum file cadangan yang mengekspos informasi yang berpotensi sensitif dapat berupa salinan cadangan file PHP. Terkadang file PHP berisi data konfigurasi penting — seperti file wp-config.php WordPress.
Ambil skenario berikut — administrator WordPress perlu membuat perubahan pada file wp-config.php. Alih-alih mengikuti praktik terbaik dan menyimpan salinan file di tempat lain selain server web, mereka membuat salinan wp-config.php langsung, dengan menamai cadangan wp-config.php.bak. Sekarang mari kita asumsikan sysadmin lupa menghapus file ini, yang lebih sering terjadi daripada yang kita kira.
Penyerang sekarang dapat membaca file hanya dengan meminta http://www.example.com/wp-config.php.bak . Penyerang dapat membaca file tersebut karena ekstensinya bukan .php lagi. Jadi mesin PHP mengabaikannya dan server web menyajikannya sebagai file teks. Sekarang penyerang mengetahui kredensial database WordPress, token rahasia, dan informasi konfigurasi sensitif lainnya yang telah Anda simpan di file itu.
Berkas sementara
Mirip dengan file cadangan, file sementara di lokasi yang salah dapat mengekspos data yang berpotensi sensitif. Mengambil wp-config.php sebagai contoh sekali lagi. Jika administrator sistem harus mengedit file ini menggunakan editor teks, dan untuk beberapa alasan program tidak keluar dengan bersih, ada kemungkinan editor akan meninggalkan file sementara. Misalnya editor baris perintah populer Vim menyimpan file cadangan dengan ekstensi file *.ext~ bersama dengan file *.ext.swp. File swp digunakan sebagai file kunci. Mereka juga berisi semua riwayat undo/redo, dan informasi internal lainnya yang dibutuhkan Vim.
Oleh karena itu jika terjadi crash, Vim meninggalkan file wp-config.php.ext~ yang dapat diakses dalam teks biasa seperti file cadangan karena tidak diakhiri dengan ekstensi file *.php. File temporer semacam ini tidak eksklusif untuk Vim — Emacs (editor teks baris perintah populer lainnya) juga menyimpan file temporer serupa, dan banyak alat lain juga menyimpannya.
Perhatian — gunakan plugin pemantauan integritas file untuk situs web Anda untuk mendapatkan peringatan tentang semua perubahan file, termasuk file sementara dan cadangan. Jika Anda tidak terbiasa dengan teknologi ini, baca pengantar kami untuk pemantauan integritas file untuk WordPress.
MySQL terbuka
Sejauh ini, salah satu kesalahan konfigurasi paling menyedihkan yang mungkin dilakukan administrator sistem adalah membiarkan server database MySQL WordPress mereka terbuka ke Internet. Mengapa ini terdengar gila, ini mungkin terjadi lebih dari yang Anda pikirkan. Di bawah ini adalah tangkapan layar dari Shodan, mesin pencari untuk perangkat yang terhubung ke Internet.
Tentu saja, hanya karena MySQL terekspos melalui Internet tidak berarti seseorang dapat terhubung dan mengakses database WordPress. Namun, terutama jika digunakan dalam kombinasi dengan serangan lain, seperti kata sandi yang bocor melalui cadangan wp-config.php, atau menebak kata sandi yang lemah, itu dapat menyebabkan skenario bencana.
Setelah mengendalikan database WordPress, permainan selesai untuk instalasi WordPress. Yang perlu dilakukan penyerang hanyalah mengatur ulang kata sandi administrator. Kemudian mereka mengambil kendali penuh atas situs web WordPress Anda, dan bahkan mungkin server yang menjalankannya dengan sengaja memasang plugin berbahaya.
Menjalankan layanan yang tidak perlu
Masalah kesalahan konfigurasi server web umum lainnya adalah konfigurasi default. Banyak administrator menjalankan konfigurasi default dan tidak menonaktifkan layanan yang tidak mereka perlukan. Dalam kebanyakan kasus, instalasi default menjalankan banyak layanan yang tidak perlu, yang sebagian besar, jika tidak diamankan, membuat server web terkena serangan.
Alat pentesting untuk penguji penetrasi & profesional keamanan WordPress
Penguji penetrasi menggunakan berbagai alat untuk mengotomatisasi pekerjaan dan teknik mereka. Otomatisasi membantu mengurangi waktu yang diperlukan untuk melakukan penilaian keamanan / uji penetrasi.
Kali Linux
Alat yang digunakan seseorang sangat bervariasi. Itu tergantung pada preferensi pribadi dan masalah yang dihadapi. Namun, tempat yang baik untuk memulai adalah memiliki berbagai alat yang Anda inginkan, yang sudah diinstal sebelumnya.
Kali Linux, sebelumnya dikenal sebagai BackTrack, adalah pengujian penetrasi open source untuk distribusi Linux. Kali Linux hadir dibundel dengan seluruh host alat pra-instal dan pra-konfigurasi. Ini berguna baik untuk pengguna pemula yang ingin memulai dengan cepat, serta penguji penetrasi berpengalaman. Kali Linux tersedia secara gratis dan dapat dijalankan pada mesin virtual.
Nmap
Pemindai gratis ini adalah salah satu pemindai paling mendasar dan serbaguna di gudang senjata pentester mana pun. Nmap pada dasarnya adalah pemindai port. Namun, ini dapat diperluas untuk melakukan berbagai jenis pemindaian melalui bahasa skrip NSE-nya.
WPScan
WPScan (dibahas sebelumnya dalam artikel ini) adalah pemindai keamanan WordPress open source. Ini memindai kerentanan WordPress yang diketahui — baik di dalam inti WordPress, maupun di dalam plugin dan tema WordPress.
WPScan dapat melakukan serangkaian tes kotak hitam. Artinya, tanpa akses ke kode sumber. Akibatnya, WPScan sangat bagus untuk menemukan kerentanan WordPress yang menggantung rendah dengan cepat dan akurat.
OWASP ZAP
OWASP Zed Attack Proxy (ZAP) adalah alat pengujian penetrasi aplikasi web open-source gratis. Proyek Keamanan Aplikasi Web Terbuka (OWASP) memelihara alat ini. OWASP ZAP dirancang khusus untuk menguji aplikasi web untuk berbagai kerentanan seperti Cross-site Scripting (XSS) dan SQL Injection (SQLi). ZAP, pada intinya adalah proxy. Itu duduk di antara browser pentester dan situs web untuk mencegat dan memeriksa permintaan yang dikirim di antara keduanya.
Selain bertindak sebagai proxy, ZAP juga dapat secara otomatis menguji berbagai kerentanan, dan juga dapat mengaburkan berbagai input. Fuzzing adalah teknik pengujian keamanan di mana input yang tidak valid atau tidak terduga diberikan ke aplikasi dengan tujuan mengungkap kerentanan keamanan.
Pengujian penetrasi untuk WordPress – menilai postur keamanan situs web Anda
Keamanan WordPress bukanlah perbaikan satu kali. Ini adalah proses berkelanjutan berdasarkan empat prinsip: Harden > Monitor > Test > Improve. Dengan pengujian penetrasi, Anda membahas prinsip pengujian . Yaitu Anda memeriksa postur keamanan situs web Anda. Kemudian Anda dapat mengambil tindakan yang diperlukan untuk meningkatkan penyiapan berdasarkan temuan Anda.
Oleh karena itu, pengujian penetrasi situs web WordPress yang sering harus menjadi bagian dari program keamanan Anda. Anda menilai seberapa sering Anda harus melakukan tes penetrasi. Jika Anda sering melakukan perubahan pada situs web Anda, maka Anda harus sering melakukan pengujian. Namun, uji penetrasi triwulanan berhasil jika situs web Anda jarang mendapatkan pembaruan.