-
-
Notifications
You must be signed in to change notification settings - Fork 2
HelpUiDialogsBeanshell
BeanShell adalah shell Java interaktif yang dapat digunakan untuk mengeksekusi skrip BeanShell. Skrip ini adalah bentuk sederhana dari Java yang menggunakan berbagai elemen dari sintaks Java, tapi dalam format skrip yang lebih sederhana. Semua kode Java adalah kode BeanShell yang valid. Integrasi BeanShell dalam OWASP ZAP memungkinkan Anda untuk menulis skrip menggunakan fungsi-fungsi ZAP dan kumpulan data. Ini akan menjadi fitur yang sangat mumpuni untuk menganalisa aplikasi web.
Konsol dimulai dari menu Perkakas, dan berisi layar belah di mana setengah di atas adalah konsol BeanShell interaktif dan setengah di bawah adalah penyunting teks sederhana. Untuk skrip yang rumit, Anda disarankan untuk menggunakan penyunting Java. Skrip dapat dimuat, disimpan, dan dievaluasi dari penyunting.
Ketika BeanShell mulai maka tersedia sejumlah obyek dari ZAP untuk digunakan, yaitu:
- singleton Model, melalui obyek bernama model
- pohon SiteTree dari situs saat ini melalui obyek sites
- contoh HttpSender melalui obyek sender
Perhatikan bahwa BeanShell adalah jenis loosely typed. Oleh karena itu, tidak perlu untuk menyatakan variabel sebelum menggunakannya - hal ini membuat skrip sedikit lebih ringkas dari Java biasa. Tapi tentu saja, Anda diperbolehkan jika Anda tidak ingin menentukan jenisnya.
Mari kita mulai dengan sesuatu yang berguna dan khas: Iterate melalui semua node situs dan periksa keberadaan berkas. Skrip yang sudah dibuat yang menyelesaikan skrip ini, pilih Load dan pilih berkas example.tree.bsh.
import org.apache.commons.httpclient.URI;
import org.parosproxy.paros.network.HttpMessage;
import org.parosproxy.paros.model.*;
Pohon () {
find (SiteNode node, String resource) {
if (node == null) return;
ref = node.getHistoryReference();
if ((ref != null) && (!node.isLeaf())) {
checkExists(ref, resource);
}
for (i=0;i<node.getChildCount();i++) {
try {
find (node.getChildAt(i), resource);
} catch (Exception e) {
e.printStackTrace();
}
}
}
checkExists(ref, resource) {
u = ref.getHttpMessage().getRequestHeader().getURI().toString() + "/" +
sumber;
msg = ref.getHttpMessage();
msg.getRequestHeader().setURI(new URI(u));
sender.sendAndReceive(msg, true);
if (msg.getResponseHeader().getStatusCode() == 200) {
print("Found: "+msg.getRequestHeader().getURI().toString());
}
}
kembalikan ini;
}
Sebelum mengeklik Evaluasi, terlebih dahulu ramban ke situs melalui ZAP untuk mengisi pohon:
Sekarang klik pada evaluasi untuk mengeksekusi skrip yang ada di penyunting. Jika tidak ada kesalahan, maka sekarang Anda dapat mulai mengunakan obyek yang ditentukan dalam skrip dengan cara menjalankan perintah-perintah ini:
t = Tree();
Ini akan membuat obyek Pohon baru dan menetapkan referensi ke t.
t.find(sites.getRoot(), "index.html");
Panggil metode find pada t, yang akan mengambil SiteNode sebagai argumen pertama dan sumber sebagai kedua. Dalam hal ini, metode tersebut akan iterate melalui semua node dalam pohon, karena kita mulai dari akar, dan akan menemukan berkas index.html.
Alih-alih iterasi melalui semua node, kita juga bisa memilih untuk memulai suatu node khusus dengan menggunakan metode findChild.
Hal ini akan memberikan Anda gambaran mengenai kemampuan BeanShell dalam ZAP. Tapi untuk memanfaatkan sepenuhnya, Anda perlu mengenal API internal dan fitur-fitur BeanShell. BeanShell telah dibuat sedemikian rupa untuk memungkinkan akses penuh terhadap semua obyek dan metode internal - bahkan yang pribadi sekalipun.
Pada contoh berikut, kita membuat dan mengirim permintaan HTTP langsung di konsol interaktif:
TBD
Untuk menggunakan sepenuhnya kemampuan BeanShell, Anda perlu mengenal fitur-fitur ZAP. Obyek sender adalah contoh yang sama seperti yang digunakan oleh Manual Request Editor dan karenanya akan otomatis menggunakan pengaturan proksi yang ditetapkan dalam konfigurasi ZAP.
TBD
Gunakan perintah unset(String) untuk menghapus variabel, metode, atau obyek yang dinyatakan. Hal ini berguna jika Anda ingin mengganti metode pernyataan dalam namespace saat ini. Perhatikan bahwa perintah menggunakan argumen String, bukan Obyek, jadi untuk menghapus obyek t yang kita pakai di atas, harusnya: unset("t"); dan bukan unset(t);
Menu Perkakas tingkat atas | Menu 'Konsol BeanShell' |
Ikhtisar UI | untuk ikhtisar antarmuka pengguna | |
Dialog | untuk rincian dialog dan sembulan |
-
ZAP Panduan Pengguna
- Perkenalan
-
Memulai
- Konfigurasi proxy
-
Fitur
- Scan Aktif
- Add-ons
- Peringatan
- Token Anti Anti CSRF
- API
- Otentikasi
- Poin-poin Break
- Konteks
- Filter
- Filter
- URL Dilarang Secara Global
- Sesi HTTP
- Man-in-the-middle Proxy
- Mode
- Catatan
- Scan Pasif
- Kebijakan Memindai
- Ruang lingkup
- Sesi Manajemen
- Laba-laba
- Statistik
- Struktural Pengubah
- Parameter Struktural
- Tag
- Pengguna
- Scanner Aturan
- Sederhanakan Penetrasi Tes
-
Antarmuka pengguna
- Ikhtisar
- Menu tingkat atas
- Tingkat atas Toolbar
- Tab
-
Dialog
- Scan Aktif
- Tambah Peringatan
- Add Break Point
- Tambahkan Catatan
- Konsol BeanShell
- Filter
- Menemukan
- Cari
- Penyunting Editor Manual
- Mengelola Add-ons
- Penyunting Editor Manual
-
Pilihan
- Scan Aktif
- Active Scan Input Vectors
- Peringatan
- Anti CSRF Tokens
- API
- Breakpoints
- Callback Address
- Certificate
- Periksa pembaruan
- Koneksi
- Database
- Tampilan
- Sertifikat SSL Dinamis
- Eksistensi
- Global Exclude URL
- HTTP Sessions
- JVM
- Keyboard
- Bahasa
- Local Proxies
- Passive Scan Rules
- Pasif Memindai Tag
- Pemindai Pasif
- Rule Configuration
- Skrip
- Pencarian
- Laba-laba
- Statistik
- Tangani Tag
- Kirim ulang
- Kirim ulang
- Scan Progress
- Session
- Laba-laba
- The Footer
- Command Line
- Add Ons
- Releases
- Paros Proxy
- Kredit