如何在OWASP ZAP中列出与扫描规则关联的警报?

时间:2018-05-05 08:00:32

标签: owasp zap

我想以表格形式获取警报列表,如下所示。我复制警报中的URL并自己手动准备这样的表格表。但是,我需要自动或半自动(至少)

Alert Name URL             Scan Type Scan_Name WASCID CWEID 
---------- --------------- --------- ---------  ----- ------

1 个答案:

答案 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

在Excel中粘贴得很好:
Script tab separated output pasted in excel Script tab separated output pasted in excel

详细步骤:
(这假定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中。