Сценарии ZAP ведут себя несостоятельно - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь настроить аутентификацию и скрипт отправителя http для проекта сканирования Open API.

В какой-то момент я достиг состояния, когда скрипт аутентификации для oauth2 работает правильно (выдает действительный токен, полученный изудаленная конечная точка) и http_sender добавляет заголовок авторизации для запросов.Позже выяснилось, что я неправильно набрал требуемый заголовок, поэтому я изменил его имя, сохранил сценарий и повторно запустил сценарий (с помощью сканирования).Выяснилось, что оба заголовка добавляются к исходящим http-запросам: опечатка и правильная версия.Поведение не изменяется после перезапуска ZAP и перезагрузки сеанса, но неправильно напечатанный заголовок исчезает при создании нового сеанса, я не могу найти, где его можно почистить, и не выглядит правильным воссоздать сеанс, когда требуется одно незначительное изменение вscript.

Вторая проблема, с которой я столкнулся, заключается в том, что скрипт аутентификации просто перестал работать без каких-либо изменений.Я иногда переключаюсь между средами, но код остается тем же.Я даже переместил жестко закодированные значения из контекста в сценарий, и он все еще не работает.Я установил параллельный скрипт в Python для получения токена, и он работает (все параметры одинаковы), но в ZAP я получаю ошибку аутентификации (воссоздание сеанса не помогает).У меня нет конечной точки oauth, поэтому я не могу взглянуть на нее напрямую, но подозреваю, что обе проблемы имеют что-то общее.Похоже, некоторые данные находятся в тени и влияют на работу сценариев.

Первая версия сценария отправителя:

function sendingRequest(msg, initiator, helper) {
    var loginToken = org.zaproxy.zap.extension.script.ScriptVars.getGlobalVar("logintoken");
    msg.getRequestHeader().setHeader("Autentication", "Bearer " + loginToken);
}

Вторая версия сценария отправителя:

function sendingRequest(msg, initiator, helper) {
    var loginToken = org.zaproxy.zap.extension.script.ScriptVars.getGlobalVar("logintoken");
    msg.getRequestHeader().setHeader("Authorization", "Bearer " + loginToken);
}```

Authentication function is just tuned version of the zap template to send oauth2 parameters in the body of the POST request and actually worked for some time. It would really help to have some troubleshooting capabilities during scripting.

1 Ответ

2 голосов
/ 27 июня 2019

Что касается первой проблемы, все зависит от того, как используется скрипт. Сеанс ZAP - это запись всех запросов и ответов. Для некоторых старых ответов вы использовали неправильный заголовок. Это случилось, вы не можете забрать его обратно. Если вы повторно используете эти запросы, ZAP отправит неправильный заголовок, если вы его не удалите. Если вы создаете новые запросы, которые не основаны на исторических, заголовок не должен присутствовать.

Что касается второй проблемы, то аутентификация трудна и может провалиться из-за незначительных различий :( Один хороший вариант - прокси-сценарий Python через ZAP. Надеюсь, он все равно будет работать, а затем вы сможете сравнить рабочий запрос с неудачник.

...