Вы можете экспортировать отчет в XML и применить к нему любые преобразования XSL, которые вам могут понравиться.
Вы можете загрузить XML-отчет в Excel (или любую другую программу для работы с электронными таблицами) и манипулировать им.
Вы можете извлекать оповещения из веб-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:
Подробные шаги:
(Предполагается, что ZAP запущен и сеанс, для которого вы хотите получить информацию, открыт / загружен).
1. Перейдите в дерево скриптов (за деревом сайтов) [если вы его не видите
щелкните знак «плюс» рядом с вкладкой «Дерево сайтов» и добавьте «Сценарии»].
2. В дереве сценариев щелкните правой кнопкой мыши «Автономный» и выберите «Новый сценарий»:
дать ему имя и выбрать JavaScript Script Engine ("EcmaScript
: Oracle Nashorn ") [шаблон не требуется]. Нажмите" Сохранить "в окне" Новый "
Диалоговое окно скрипта.
3. В новом окне скрипта (в области запроса / ответа) вставьте скрипт
из ответа.
4. Запустите его (кнопка воспроизведения синего треугольника над сценарием
панель ввода).
5. Результаты отобразятся на панели вывода под
сценарий.
6. Скопируйте / вставьте вывод в Excel.