OWASP ZAP - неправильный порядок вызова NTLM - Непоследовательное ответное сообщение NTLM

Мне нужна помощь с настройкой аутентификации NTLM.

В настоящее время я тестирую веб-приложение AJAX с использованием OWASP ZAP. Приложение доступно через HTTPS и имеет включенную аутентификацию NTLM. Когда я запускаю сканирование, ZAP не сохраняет правильную последовательность согласования NTLM.Ожидаемый способ подключения NTLM:

  1. Клиент отправляет GET для получения сайта
  2. Сервер отправляет WWW-аутентификацию: согласование и WWW-аутентификацию: NTLM с кодом 401
  3. Клиент отправляет информацию об авторизации с авторизацией: переговоры
  4. Сервер отвечает WWW-Authenticate: согласовать и отвечает запрашиваемой страницей и кодом 200.

Этот сценарий происходит во время сканирования, но только первые 2 шага - после получения запроса Negotiate/NTLM ZAP просто запускает следующий тест.Однако каждые несколько тестов ZAP пытается выполнить тест, пропуская шаг 3:

  1. ZAP отправляет авторизацию: согласование с NTLM, закодированным с base64,
  2. Сервер отправляет WWW-аутентификацию: согласование и WWW-аутентификацию: NTLM с кодом 401

После этого ZAP просто пропускает тест и сохраняет запись в zap.log:

"2018-07-16 18: 07: 57,969 [ZAP-ActiveScanner-1] ОШИБКА HttpMethodDirector - Ответное сообщение NTLM вне последовательности org.apache.commons.httpclient.auth.MalformedChallengeException: Ответное сообщение NTLM вне последовательности".

Вы знаете, в чем может быть проблема здесь? Ниже я отправлю вам, что я сделал с конфигурацией, каковы мои параметры ведения журнала и какие ошибки я получил.

Шаги для воспроизведения поведения:

  1. Откройте веб-браузер с прокси-сервером, настроенным для ZAP, и просмотрите все веб-приложение по https://example.com:9443/service (это служба AJAX). Я не использовал паук AJAX, потому что он часто не обеспечивает корректный ввод данных, подтвержденных данными.
  2. Свойства сеансов. Создайте новый контекст с помощью https://example.com:9443/service. *
  3. Свойства сеансов: Аутентификация: HTTP/NTLM Аутентификация

Имя хоста: https://example.com/

Порт: 8443

Область: оставлено пустым (пробовал также с {AD Domain} и {AD Domain}.local)

Шаблон регулярного выражения, идентифицированный в ответе на запрос: {string_from_logged_in_response}

  1. Свойства сеансов: Пользователи: добавьте действительного пользователя из домена (пробовал оба "{username}" и "{AD Domain} {username}")

4. Принудительный пользователь: имя пользователя, установленное на шаге 3

  1. Управление сессиями: HTTP-аутентификация Session Management

  2. Авторизация: HTTP Код состояния: 401

Тело содержит регулярное выражение: "доступ ограничен" (строка, размещенная на странице 401 веб-приложения). По крайней мере одно из указанных выше условий должно соответствовать.

После настройки запустите сканирование:

  1. В дереве сайтов щелкните правой кнопкой мыши https://example.com:9443/service -> Attack -> Active Scan.

  2. На вкладке Область активного сканирования:

Начальная точка: https://example.com:9443/service

Политика: по умолчанию

Контекст: настроенный выше (шаг 1)

Пользователь: настроенный выше (шаг 3)

  1. Начать сканирование.

Журналы, с которыми я сталкиваюсь - есть также одна ошибка при разборе тела запроса:

2018-07-16 18:07:57,414 [Thread-607] INFO HostProcess - Scanning 90 node(s) from https://example.com:9443/service as {user}
2018-07-16 18:07:57,418 [Thread-607] INFO HostProcess - start host https://example.com:9443/service | TestRemoteFileInclude strength MEDIUM threshold MEDIUM
2018-07-16 18:07:57,442 [Thread-607] ERROR HttpMethodDirector - Out of sequence NTLM response message
org.apache.commons.httpclient.auth.MalformedChallengeException: Out of sequence NTLM response message
at org.zaproxy.zap.network.ZapNTLMScheme.processChallenge(ZapNTLMScheme.java:131)
at org.apache.commons.httpclient.auth.AuthChallengeProcessor.processChallenge(AuthChallengeProcessor.java:162)
at org.apache.commons.httpclient.HttpMethodDirector.processWWWAuthChallenge(HttpMethodDirector.java:773)
at org.apache.commons.httpclient.HttpMethodDirector.processAuthenticationResponse(HttpMethodDirector.java:747)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:221)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.parosproxy.paros.network.HttpSender.executeMethod(HttpSender.java:333)
at org.parosproxy.paros.network.HttpSender.runMethod(HttpSender.java:562)
at org.parosproxy.paros.network.HttpSender.send(HttpSender.java:523)
at org.parosproxy.paros.network.HttpSender.sendAuthenticated(HttpSender.java:501)
at org.parosproxy.paros.network.HttpSender.sendAuthenticated(HttpSender.java:490)
at org.parosproxy.paros.network.HttpSender.sendAndReceive(HttpSender.java:405)
at org.parosproxy.paros.network.HttpSender.sendAndReceive(HttpSender.java:362)
at org.parosproxy.paros.core.scanner.HostProcess.obtainResponse(HostProcess.java:507)
at org.parosproxy.paros.core.scanner.HostProcess.scanMessage(HostProcess.java:460)
at org.parosproxy.paros.core.scanner.HostProcess.processPlugin(HostProcess.java:371)
at org.parosproxy.paros.core.scanner.HostProcess.run(HostProcess.java:302)
at java.lang.Thread.run(Unknown Source)
2018-07-16 18:50:03,583 [ZAP-ActiveScanner-0] WARN VariantJSONQuery - Failed to parse the request body: Input is invalid JSON; does not start with '{' or '[', c=-1
java.lang.IllegalArgumentException: Input is invalid JSON; does not start with '{' or '[', c=-1
at org.parosproxy.paros.core.scanner.VariantJSONQuery.parseObject(VariantJSONQuery.java:117)
at org.parosproxy.paros.core.scanner.VariantJSONQuery.parseContent(VariantJSONQuery.java:61)
at org.parosproxy.paros.core.scanner.VariantAbstractRPCQuery.setRequestContent(VariantAbstractRPCQuery.java:167)
at org.parosproxy.paros.core.scanner.VariantAbstractRPCQuery.setMessage(VariantAbstractRPCQuery.java:51)
at org.parosproxy.paros.core.scanner.AbstractAppParamPlugin.scan(AbstractAppParamPlugin.java:161)
at org.parosproxy.paros.core.scanner.AbstractPlugin.run(AbstractPlugin.java:380)
at java.lang.Thread.run(Unknown Source)

Настройки ведения журнала:

log4j.logger.org.parosproxy.paros=DEBUG
log4j.logger.org.zaproxy.zap=DEBUG
log4j.logger.org.apache.commons.httpclient=DEBUG
log4j.logger.httpclient.wire.header=DEBUG
log4j.logger.net.htmlparser.jericho=ERROR

Конфигурация установки:

ZAP: 2.7.0
Add-on: Set of default Add-ons. 
OS: Windows 10 17134
Java: Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Browser: clicking through the application was done with Chrome, version 67.0.3396.99

0 ответов

Другие вопросы по тегам