Terakhir Artikel kita bicara tentang Nemesida WAF Gratis - alat gratis untuk melindungi situs web dan API dari serangan peretas, dan kali ini kami memutuskan untuk meninjau pemindai kerentanan yang populer Rusa besar.
Memindai situs web untuk mencari kerentanan adalah tindakan yang diperlukan, yang, ditambah dengan analisis kode sumber, memungkinkan Anda menilai tingkat keamanannya terhadap ancaman penyusupan. Anda dapat memindai sumber daya web menggunakan alat khusus.
Nikto, W3af (ditulis dengan Python 2.7, yang tidak lagi didukung) atau Arachni (tidak lagi didukung sejak Februari) adalah solusi paling populer yang dihadirkan di segmen gratis. Tentu saja ada yang lain, misalnya Wapiti, yang kami putuskan untuk fokus.
Wapiti bekerja dengan jenis kerentanan berikut:
perluasan file (lokal dan jarak jauh, fopen, readfile);
suntikan (injeksi PHP/JSP/ASP/SQL dan injeksi XPath);
XSS (Cross Site Scripting) (reflektif dan persisten);
deteksi dan eksekusi perintah (eval(), system(), passru());
penggunaan file yang diketahui berpotensi berbahaya (berkat database Nikto);
konfigurasi .htaccess lemah yang dapat dilewati;
adanya file cadangan yang mengungkapkan informasi rahasia (pengungkapan kode sumber);
kejutan;
buka pengalihan;
metode HTTP non-standar yang dapat diselesaikan (PUT).
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
Dukungan proksi HTTP, HTTPS dan SOCKS5;
otentikasi menggunakan beberapa metode: Basic, Digest, Kerberos atau NTLM;
kemampuan untuk membatasi area pemindaian (domain, folder, halaman, URL);
penghapusan otomatis salah satu parameter di URL;
beberapa tindakan pencegahan terhadap loop pemindaian tanpa akhir (contoh: ifor, membatasi nilai suatu parameter);
kemampuan untuk menetapkan prioritas untuk memeriksa URL (meskipun URL tersebut tidak berada dalam area pemindaian);
kemampuan untuk mengecualikan beberapa URL dari pemindaian dan serangan (misalnya: logout URL);
impor cookie (dapatkan menggunakan alat wapiti-getcookie);
kemampuan untuk mengaktifkan/menonaktifkan verifikasi sertifikat SSL;
kemampuan untuk mengekstrak URL dari JavaScript (penerjemah JS yang sangat sederhana);
interaksi dengan HTML5;
beberapa opsi untuk mengelola perilaku dan batasan perayap;
mengatur waktu maksimum untuk proses pemindaian;
menambahkan beberapa header HTTP khusus atau menyiapkan Agen-Pengguna khusus.
Fitur tambahan:
membuat laporan kerentanan dalam berbagai format (HTML, XML, JSON, TXT);
menjeda dan melanjutkan pemindaian atau serangan (mekanisme sesi menggunakan database SQLite3);
lampu latar di terminal untuk menyoroti kerentanan;
tingkat penebangan yang berbeda-beda;
Cara cepat dan mudah untuk mengaktifkan/menonaktifkan modul serangan.
Instalasi
Versi Wapiti saat ini dapat diinstal dengan 2 cara:
unduh sumber dari resminya situs dan jalankan skrip instalasi, setelah sebelumnya menginstal Python3;
menggunakan perintah pip3 install wapiti3.
Setelah ini, Wapiti akan siap berangkat.
Bekerja dengan alat tersebut
Untuk mendemonstrasikan kerja Wapiti, kami akan menggunakan stand yang disiapkan khusus sites.vulns.pentestit.ru (sumber daya internal), yang berisi berbagai kerentanan (Injeksi, XSS, LFI/RFI) dan kekurangan aplikasi web lainnya.
Informasi ini disediakan untuk tujuan informasi saja. Jangan melanggar hukum!
Perintah dasar untuk meluncurkan pemindai:
# wapiti -u <target> <options>
Pada saat yang sama, ada bantuan yang cukup mendetail dengan sejumlah besar opsi peluncuran, misalnya:
--cakupan - area aplikasi
Jika Anda menentukan parameter cakupan bersama dengan URL perayapan, Anda dapat menyesuaikan area perayapan situs dengan menentukan satu halaman dan semua halaman yang dapat ditemukan di situs.
-s ΠΈ -x β opsi untuk menambah atau menghapus URL tertentu. Opsi ini berguna ketika Anda perlu menambah atau menghapus URL tertentu selama proses perayapan.
--melewati β parameter yang ditentukan dengan kunci ini akan dipindai, tetapi tidak akan diserang. Berguna jika ada parameter berbahaya yang sebaiknya dikecualikan selama pemindaian.
--verifikasi-ssl β mengaktifkan atau menonaktifkan verifikasi sertifikat.
Pemindai Wapiti bersifat modular. Namun, untuk meluncurkan modul tertentu, termasuk modul yang terhubung secara otomatis saat pemindai berjalan, Anda perlu menggunakan tombol -m dan mencantumkan modul yang Anda perlukan, dipisahkan dengan koma. Jika kuncinya tidak digunakan, maka semua modul akan bekerja secara default. Dalam versi paling sederhana akan terlihat seperti ini:
Contoh penggunaan ini berarti kita hanya akan menggunakan modul SQL, XSS dan XXE saat memindai target. Selain itu, Anda dapat memfilter pengoperasian modul tergantung pada metode yang diinginkan. Misalnya -m βxss: dapatkan, blindsql: posting, xxe: postingβ. Dalam hal ini, modul xss akan berlaku untuk permintaan yang dikirim menggunakan metode GET, dan modul blidsql - untuk permintaan POST, dll. Omong-omong, jika beberapa modul yang disertakan dalam daftar tidak diperlukan selama pemindaian atau memerlukan waktu yang sangat lama, maka dengan menekan kombinasi Ctrl+C Anda dapat melewati penggunaan modul saat ini dengan memilih item yang sesuai di menu interaktif.
Wapiti mendukung meneruskan permintaan melalui proxy menggunakan kunci -p dan otentikasi di situs target melalui parameter -a. Anda juga dapat menentukan jenis autentikasi: Dasar, intisari, Kerberos ΠΈ NTLM. Dua yang terakhir mungkin memerlukan instalasi modul tambahan. Selain itu, Anda dapat memasukkan header apa pun ke dalam permintaan (termasuk header arbitrer User-Agent) dan banyak lagi.
Untuk menggunakan otentikasi Anda dapat menggunakan alat ini wapiti-getcookie. Dengan bantuannya kami membentuk kue, yang akan digunakan Wapiti saat memindai. Pembentukan kue selesai dengan perintah:
Saat mempertimbangkan fungsi utama pemindai, permintaan terakhir untuk menguji aplikasi web dalam kasus kami adalah:
# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -Ρ cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128
dimana antara parameter lainnya:
-f ΠΈ -o β format dan jalur untuk menyimpan laporan;
-m β menghubungkan semua modul tidak disarankan, karena akan mempengaruhi waktu pengujian dan ukuran laporan;
--warna β menyoroti kerentanan yang ditemukan tergantung pada kekritisannya menurut Wapiti sendiri;
-c - menggunakan file dengan kue, dihasilkan menggunakan wapiti-getcookie;
--cakupan β memilih target untuk diserang. Memilih sebuah opsi map Setiap URL akan dirayapi dan diserang, dimulai dari URL dasar. URL dasar harus memiliki garis miring (tanpa nama file);
--sesi siram β memungkinkan pemindaian berulang, sehingga hasil sebelumnya tidak akan diperhitungkan;
-A - memiliki User-Agent;
-p β alamat server proxy, jika perlu.
Sedikit tentang laporannya
Hasil pemindaian disajikan dalam bentuk laporan detail seluruh kerentanan yang ditemukan dalam format halaman HTML, dalam bentuk yang jelas dan mudah dibaca. Laporan tersebut akan menunjukkan kategori dan jumlah kerentanan yang ditemukan, deskripsinya, permintaan, perintahnya keriting dan tip tentang cara menutupnya. Untuk kemudahan navigasi, tautan akan ditambahkan ke nama kategori, dengan mengklik di mana Anda dapat membukanya:
Kerugian signifikan dari laporan ini adalah tidak adanya peta aplikasi web, yang tanpanya tidak akan jelas apakah semua alamat dan parameter telah dianalisis. Ada juga kemungkinan hasil positif palsu. Dalam kasus kami, laporan tersebut mencakup βfile cadanganβ dan βfile yang berpotensi berbahayaβ. Jumlahnya tidak sesuai dengan kenyataan, karena tidak ada file seperti itu di server:
Mungkin modul yang tidak berfungsi dengan benar akan diperbaiki seiring waktu. Kelemahan lain dari laporan ini adalah kurangnya pewarnaan pada kerentanan yang ditemukan (tergantung pada kekritisannya), atau setidaknya membaginya ke dalam beberapa kategori. Satu-satunya cara agar kita secara tidak langsung dapat memahami pentingnya kerentanan yang ditemukan adalah dengan menggunakan parameter tersebut --warna selama pemindaian, dan kemudian kerentanan yang ditemukan akan diwarnai dengan warna berbeda:
Namun laporan itu sendiri tidak memberikan warna seperti itu.
Kerentanan
SQL
Pemindai mengatasi sebagian pencarian SQLi. Saat mencari kerentanan SQL di halaman yang tidak memerlukan otentikasi, tidak ada masalah yang muncul:
Tidak mungkin menemukan kerentanan pada halaman yang hanya dapat diakses setelah otentikasi, bahkan menggunakan valid kue, karena kemungkinan besar setelah otentikasi berhasil, sesi mereka akan "keluar" dan kue akan menjadi tidak valid. Jika fungsi pembatalan otorisasi diimplementasikan sebagai skrip terpisah yang bertanggung jawab untuk memproses prosedur ini, maka dimungkinkan untuk mengecualikannya sepenuhnya melalui parameter -x, dan dengan demikian mencegahnya terpicu. Jika tidak, pemrosesannya tidak dapat dikesampingkan. Ini bukan masalah dengan modul tertentu, tetapi dengan alat secara keseluruhan, tetapi karena nuansa ini, beberapa suntikan di area sumber daya tertutup tidak dapat dideteksi.
XSS
Pemindai mengatasi tugas ini dengan sempurna dan menemukan semua kerentanan yang telah disiapkan:
LFI/RFI
Pemindai menemukan semua kerentanan mendasar:
Secara umum, meskipun ada kesalahan positif dan kerentanan yang hilang, Wapiti, sebagai alat gratis, menunjukkan hasil kinerja yang cukup baik. Bagaimanapun, perlu diketahui bahwa pemindai ini cukup kuat, fleksibel, dan multifungsi, dan yang terpenting, gratis, sehingga berhak digunakan dalam membantu administrator dan pengembang memperoleh informasi dasar tentang status keamanan suatu web. aplikasi.