我想以表格形式获取警报列表,如下所示。我复制警报中的URL并自己手动准备这样的表格表。但是,我需要自动或半自动(至少)
Alert Name URL Scan Type Scan_Name WASCID CWEID
---------- --------------- --------- --------- ----- ------
答案 0 :(得分:1)
您可以使用XML导出报表,并将任何类型的XSL转换应用于您可能喜欢的内容。
您可以将XML报告拉入Excel(或任何电子表格程序)并进行操作。
您可以从Web API中提取警报,并将它们放在XML或json中,然后以编程方式处理它们。
您可以编写独立脚本(在ZAP中)以遍历警报树并输出脚本控制台窗格中分隔的详细信息选项卡。例如:
extAlert = org.parosproxy.paros.control.Control.getSingleton().
getExtensionLoader().getExtension(
org.zaproxy.zap.extension.alert.ExtensionAlert.NAME)
extPscan = org.parosproxy.paros.control.Control.getSingleton().
getExtensionLoader().getExtension(
org.zaproxy.zap.extension.pscan.ExtensionPassiveScan.NAME);
var pf = Java.type("org.parosproxy.paros.core.scanner.PluginFactory");
printHeaders();
if (extAlert != null) {
var Alert = org.parosproxy.paros.core.scanner.Alert;
var alerts = extAlert.getAllAlerts();
for (var i = 0; i < alerts.length; i++) {
var alert = alerts[i]
printAlert(alert);
}
}
function printHeaders() {
print('AlertName\tSource:PluginName\tWASC\tCWE');
}
function printAlert(alert) {
var scanner = '';
// If the session is loaded in ZAP and one of the extensions that provided a plugin for the
// existing alerts is missing (ex. uninstalled) then plugin (below) will be null, and hence scanner will end-up being empty
if (alert.getSource() == Alert.Source.ACTIVE) {
plugin = pf.getLoadedPlugin(alert.getPluginId());
if (plugin != null) {
scanner = plugin.getName();
}
}
if (alert.getSource() == Alert.Source.PASSIVE && extPscan != null) {
plugin = extPscan.getPluginPassiveScanner(alert.getPluginId());
if (plugin != null) {
scanner = plugin.getName();
}
}
print(alert.getName() + '\t' + alert.getSource() + ':' + scanner + '\t' + alert.getWascId() + '\t' + alert.getCweId());
// For more alert properties see https://static.javadoc.io/org.zaproxy/zap/2.7.0/org/parosproxy/paros/core/scanner/Alert.html
}
生成脚本控制台输出(注意特定警报名称与常规扫描程序名称不同的第2行,第6行和第7行):
Alert_Name Source:PluginName WASC CWE
Cross Site Scripting (DOM Based) ACTIVE:Cross Site Scripting (DOM Based) 8 79
Non-Storable Content PASSIVE:Content Cacheability 13 524
Content Security Policy (CSP) Header Not Set PASSIVE:Content Security Policy (CSP) Header Not Set 15 16
Server Leaks Version Information via "Server" HTTP Response Header Field PASSIVE:HTTP Server Response Header Scanner 13 200
Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) PASSIVE:Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) 13 200
Non-Storable Content PASSIVE:Content Cacheability 13 524
Timestamp Disclosure - Unix PASSIVE:Timestamp Disclosure 13 200
详细步骤:
(这假定ZAP正在运行,并且您想要信息的会话是打开/加载的)。
1.转到脚本树(站点树后面)[如果你看不到它
单击“站点树”选项卡附近的加号,然后添加“#34; Scripts&#34;]
2.在Scripts树中,右键单击&#34; Standalone&#34;并选择&#34;新脚本&#34;:
给它命名并选择JavaScript脚本引擎(&#34; EcmaScript
:Oracle Nashorn&#34;)[不需要模板]。点击&#34;保存&#34;在新的
脚本对话框。
3.在新脚本窗口(在请求/响应区域中)粘贴脚本
从答案。
4.运行它(脚本上方的蓝色三角形播放按钮
条目窗格)
5.结果将显示在下面的输出窗格中
脚本。
6.将输出复制/粘贴到Excel中。