Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Wapiti - menyemak tapak untuk mencari kelemahan sendiri
Pada masa lalu artikel kami berbincang Nemesida WAF Percuma - alat percuma untuk melindungi tapak web dan API daripada serangan penggodam, dan dalam satu ini kami memutuskan untuk menyemak pengimbas kerentanan yang popular Elk.

Mengimbas tapak web untuk mencari kelemahan ialah langkah yang perlu, yang, ditambah dengan analisis kod sumber, membolehkan anda menilai tahap keselamatannya terhadap ancaman kompromi. Anda boleh mengimbas sumber web menggunakan alat khusus.

Nikto, W3af (ditulis dalam Python 2.7, yang tidak lagi disokong) atau Arachni (tidak lagi disokong sejak Februari) ialah penyelesaian paling popular yang dibentangkan dalam segmen percuma. Sudah tentu, terdapat yang lain, sebagai contoh, Wapiti, yang kami memutuskan untuk memberi tumpuan.

Wapiti berfungsi dengan jenis kelemahan berikut:

  • pengembangan fail (tempatan dan jauh, fopen, readfile);
  • suntikan (suntikan PHP / JSP / ASP / SQL dan suntikan XPath);
  • XSS (Skrip Merentas Tapak) (reflektif dan berterusan);
  • pengesanan dan pelaksanaan arahan (eval(), system(), passtru());
  • Suntikan CRLF (pemisahan tindak balas HTTP, penetapan sesi);
  • pembenaman XXE (entiti luaran XML);
  • SSRF (Pemalsuan Permintaan Sisi Pelayan);
  • penggunaan fail yang diketahui berpotensi berbahaya (terima kasih kepada pangkalan data Nikto);
  • konfigurasi .htaccess yang lemah yang boleh dipintas;
  • kehadiran fail sandaran yang mendedahkan maklumat sulit (pendedahan kod sumber);
  • Shellshock;
  • ubah hala terbuka;
  • kaedah HTTP bukan standard yang boleh diselesaikan (PUT).

ВозмоТности:

  • Sokongan proksi HTTP, HTTPS dan SOCKS5;
  • pengesahan menggunakan beberapa kaedah: Asas, Digest, Kerberos atau NTLM;
  • keupayaan untuk mengehadkan kawasan pengimbasan (domain, folder, halaman, URL);
  • penyingkiran automatik salah satu parameter dalam URL;
  • pelbagai langkah berjaga-jaga terhadap gelung imbasan yang tidak berkesudahan (contoh: jika, mengehadkan nilai untuk parameter);
  • keupayaan untuk menetapkan keutamaan untuk memeriksa URL (walaupun mereka tidak berada dalam kawasan pengimbasan);
  • keupayaan untuk mengecualikan beberapa URL daripada pengimbasan dan serangan (contohnya: log keluar URL);
  • import kuki (dapatkannya menggunakan alat wapiti-getcookie);
  • keupayaan untuk mengaktifkan/menyahaktifkan pengesahan sijil SSL;
  • keupayaan untuk mengekstrak URL daripada JavaScript (jurubahasa JS yang sangat mudah);
  • interaksi dengan HTML5;
  • beberapa pilihan untuk mengurus tingkah laku dan sekatan perangkak;
  • menetapkan masa maksimum untuk proses pengimbasan;
  • menambahkan beberapa pengepala HTTP tersuai atau menyediakan Ejen Pengguna tersuai.

Ciri-ciri tambahan:

  • mencipta laporan kelemahan dalam pelbagai format (HTML, XML, JSON, TXT);
  • menjeda dan menyambung semula imbasan atau serangan (mekanisme sesi menggunakan pangkalan data SQLite3);
  • lampu latar di terminal untuk menyerlahkan kelemahan;
  • tahap pembalakan yang berbeza;
  • Cara cepat dan mudah untuk mengaktifkan/menyahaktifkan modul serangan.

Pemasangan

Versi semasa Wapiti boleh dipasang dalam 2 cara:

  • muat turun sumber daripada rasmi laman web ini dan jalankan skrip pemasangan, setelah memasang Python3 sebelum ini;
  • menggunakan perintah pip3 install wapiti3.

Selepas ini, Wapiti akan bersedia untuk pergi.

Bekerja dengan alat

Untuk menunjukkan kerja Wapiti, kami akan menggunakan tapak tapak berdiri yang disediakan khas.vulns.pentestit.ru (sumber dalaman), yang mengandungi pelbagai kelemahan (Suntikan, XSS, LFI/RFI) dan kelemahan lain aplikasi web.

Maklumat disediakan untuk tujuan maklumat sahaja. Jangan langgar undang-undang!

Perintah asas untuk melancarkan pengimbas:

# wapiti -u <target> <options>

Pada masa yang sama, terdapat bantuan yang agak terperinci dengan sejumlah besar pilihan pelancaran, sebagai contoh:

--skop - kawasan permohonan
Jika anda menentukan parameter skop bersama-sama dengan URL rangkak, anda boleh melaraskan kawasan rangkak tapak dengan menentukan kedua-dua halaman tunggal dan semua halaman yang boleh ditemui di tapak.

-s ΠΈ -x β€” pilihan untuk menambah atau mengalih keluar URL tertentu. Pilihan ini berguna apabila anda perlu menambah atau mengalih keluar URL tertentu semasa proses rangkak.

--langkau β€” parameter yang ditentukan dengan kunci ini akan diimbas, tetapi tidak akan diserang. Berguna jika terdapat sebarang parameter berbahaya yang paling baik dikecualikan semasa pengimbasan.

--sahkan-ssl β€” dayakan atau lumpuhkan pengesahan sijil.
Pengimbas Wapiti adalah modular. Walau bagaimanapun, untuk melancarkan modul tertentu, termasuk modul yang disambungkan secara automatik semasa pengimbas sedang berjalan, anda perlu menggunakan suis -m dan senaraikan modul yang anda perlukan, dipisahkan dengan koma. Jika kunci tidak digunakan, maka semua modul akan berfungsi secara lalai. Dalam versi paling mudah ia akan kelihatan seperti ini:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Contoh penggunaan ini bermakna kami hanya akan menggunakan modul SQL, XSS dan XXE apabila mengimbas sasaran. Di samping itu, anda boleh menapis operasi modul bergantung pada kaedah yang dikehendaki. Sebagai contoh -m "xss: dapatkan, blindsql: post, xxe: post". Dalam kes ini, modul xss akan digunakan untuk permintaan yang dihantar menggunakan kaedah GET, dan modul blibdsql - untuk POST permintaan, dsb. Ngomong-ngomong, jika beberapa modul yang disertakan dalam senarai tidak diperlukan semasa pengimbasan atau mengambil masa yang sangat lama, maka dengan menekan kombinasi Ctrl+C anda boleh melangkau menggunakan modul semasa dengan memilih item yang sepadan dalam menu interaktif.

Wapiti menyokong menghantar permintaan melalui proksi menggunakan kunci -p dan pengesahan pada tapak sasaran melalui parameter -a. Anda juga boleh menentukan jenis pengesahan: asas, Digest, Kerberos ΠΈ NTLM. Dua yang terakhir mungkin memerlukan pemasangan modul tambahan. Selain itu, anda boleh memasukkan sebarang pengepala ke dalam permintaan (termasuk arbitrary Ejen Pengguna) dan banyak lagi.

Untuk menggunakan pengesahan anda boleh menggunakan alat tersebut wapiti-getcookie. Dengan bantuannya kami membentuk cookie, yang Wapiti akan gunakan semasa mengimbas. Pembentukan cookie dilakukan dengan arahan:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Semasa bekerja secara interaktif, kami menjawab soalan dan menunjukkan maklumat yang diperlukan seperti log masuk, kata laluan, dsb.:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Outputnya ialah fail dalam format JSON. Pilihan lain ialah menambah semua maklumat yang diperlukan melalui parameter -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Hasilnya akan serupa:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Apabila mempertimbangkan fungsi utama pengimbas, permintaan terakhir untuk menguji aplikasi web dalam kes kami ialah:

# 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

di mana antara parameter lain:

-f ΠΈ -o β€” format dan laluan untuk menyimpan laporan;

-m β€” menyambung semua modul tidak disyorkan, kerana akan menjejaskan masa ujian dan saiz laporan;

--warna β€” menyerlahkan kelemahan yang ditemui bergantung pada kritikalnya mengikut Wapiti sendiri;

-c - menggunakan fail dengan cookie, dijana menggunakan wapiti-getcookie;

--skop β€” memilih sasaran untuk diserang. Memilih pilihan folder Setiap URL akan dirangkak dan diserang, bermula dengan yang asas. URL asas mesti mempunyai garis miring ke hadapan (tiada nama fail);

--sesi-siram β€” membenarkan pengimbasan berulang, di mana keputusan sebelumnya tidak akan diambil kira;

-A - sendiri Ejen Pengguna;

-p β€” alamat pelayan proksi, jika perlu.

Sedikit mengenai laporan tersebut

Hasil imbasan dibentangkan dalam bentuk laporan terperinci tentang semua kelemahan yang ditemui dalam format halaman HTML, dalam bentuk yang jelas dan mudah dibaca. Laporan itu akan menunjukkan kategori dan bilangan kelemahan yang ditemui, penerangannya, permintaan, arahan untuk curl dan petua tentang cara menutupnya. Untuk memudahkan navigasi, pautan akan ditambahkan pada nama kategori, dengan mengklik pada mana anda boleh pergi kepadanya:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Kelemahan penting laporan adalah ketiadaan peta aplikasi web seperti itu, tanpanya ia tidak akan jelas sama ada semua alamat dan parameter telah dianalisis. Terdapat juga kemungkinan positif palsu. Dalam kes kami, laporan itu termasuk "fail sandaran" dan "fail yang berpotensi berbahaya." Nombor mereka tidak sepadan dengan realiti, kerana tidak ada fail sedemikian pada pelayan:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Mungkin modul yang berfungsi dengan tidak betul akan diperbaiki dari semasa ke semasa. Satu lagi kelemahan laporan ini ialah kekurangan pewarnaan kelemahan yang ditemui (bergantung pada kritikalnya), atau sekurang-kurangnya membahagikannya ke dalam kategori. Satu-satunya cara kita secara tidak langsung dapat memahami kritikal kelemahan yang ditemui adalah dengan menggunakan parameter --warna semasa pengimbasan, dan kemudian kelemahan yang ditemui akan diwarnakan dalam warna yang berbeza:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Tetapi laporan itu sendiri tidak memberikan pewarnaan sedemikian.

Kelemahan

SQLi

Pengimbas sebahagiannya mengatasi carian SQLi. Apabila mencari kelemahan SQL pada halaman yang pengesahan tidak diperlukan, tiada masalah timbul:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Tidak mustahil untuk mencari kelemahan pada halaman yang boleh diakses hanya selepas pengesahan, walaupun menggunakan yang sah cookie, kerana kemungkinan besar selepas pengesahan berjaya, sesi mereka akan "log keluar" dan cookie akan menjadi tidak sah. Jika fungsi penyahkebenaran dilaksanakan sebagai skrip berasingan yang bertanggungjawab untuk memproses prosedur ini, maka adalah mungkin untuk mengecualikan sepenuhnya melalui parameter -x, dan dengan itu menghalangnya daripada mencetuskan. Jika tidak, ia tidak mungkin untuk mengecualikan pemprosesannya. Ini bukan masalah dengan modul tertentu, tetapi dengan alat secara keseluruhan, tetapi kerana nuansa ini, tidak mungkin untuk mengesan beberapa suntikan di kawasan sumber tertutup.

XSS

Pengimbas mengatasi tugas yang diberikan dengan sempurna dan mendapati semua kelemahan yang disediakan:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

LFI/RFI

Pengimbas menemui semua kelemahan yang mendasari:

Wapiti - menyemak tapak untuk mencari kelemahan sendiri

Secara umum, walaupun terdapat positif palsu dan kelemahan yang hilang, Wapiti, sebagai alat percuma, menunjukkan hasil prestasi yang cukup baik. Walau apa pun, adalah wajar untuk menyedari bahawa pengimbas adalah agak berkuasa, fleksibel dan pelbagai fungsi, dan yang paling penting, ia adalah percuma, jadi ia mempunyai hak untuk digunakan dalam membantu pentadbir dan pembangun mendapatkan maklumat asas tentang status keselamatan web. permohonan.

Kekal sihat dan dilindungi!

Sumber: www.habr.com

Tambah komen