Проблема:

Я не могу перехватить HTTPS-трафик для некоторых веб-сайтов, использующих OWASP ZAP.

У меня есть разрешение от операторов сайтов, о которых идет речь, на «очистку» этих сайтов с целью загрузки данных с порталов заказа и обмена информацией.

Для целей разработки / отладки я ранее использовал OWASP ZAP в качестве прокси-сервера отладки, но я подозреваю, что обновления TLS на этих сайтах мешают мне сделать это сейчас.


Пример URL:

Примером URL-адреса HTTPS, который я ранее мог загрузить через ZAP, но больше не могу загрузить, является клиентский портал NBN Co.

(Это не предназначено для широкой публики, но вам не нужно входить в систему, чтобы воспроизвести проблему, поэтому я чувствую себя нормально, сообщая об этом здесь.)

Чтобы было ясно, мой очищающий код все еще может нормально подключаться к сайтам, но браузер (такой как firefox) через OWASP ZAP не может этого сделать.


Сообщение об ошибке:

ZAP Error [javax.net.ssl.SSLException]: Received fatal alert: close_notify

Stack Trace:
javax.net.ssl.SSLException: Received fatal alert: close_notify
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2011)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1113)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375)
    at org.parosproxy.paros.network.SSLConnector.createSocket(Unknown Source)
    at org.apache.commons.httpclient.HttpConnection.open(Unknown Source)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Unknown Source)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(Unknown Source)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at org.parosproxy.paros.network.HttpSender.executeMethod(Unknown Source)
    at org.parosproxy.paros.network.HttpSender.runMethod(Unknown Source)
    at org.parosproxy.paros.network.HttpSender.send(Unknown Source)
    at org.parosproxy.paros.network.HttpSender.sendAuthenticated(Unknown Source)
    at org.parosproxy.paros.network.HttpSender.sendAndReceive(Unknown Source)
    at org.parosproxy.paros.network.HttpSender.sendAndReceive(Unknown Source)
    at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(Unknown Source)
    at org.parosproxy.paros.core.proxy.ProxyThread.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)

Ошибка для примера сайта, который я привел выше, упоминается в нескольких местах в Интернете и проявляется как ответ 502 Bad Gateway с веб-сайта, но возвращается как ответ 200 Ok текстового / простого текста от ZAP в браузер. Однако в самом сообщении упоминается ZAP, так что это явно не тот сайт, который генерирует 502.

При поиске ошибки в большинстве статей предлагается настроить протоколы и шифры Java или ZAP TLS и / или обновить Java или OWAZP ZAP.

На некоторых других сайтах мне ранее удавалось настроить параметры прокси-сервера TLS для прокси-настройки некоторых более современных конфигураций сайта TLS (например: в ZAP: отключить старые протоколы через Tools > Option > Local proxy)

Мне не повезло с моим примером сайта выше.


Действия по воспроизведению:

  1. Создать и запустить новый пустой профиль Firefox

firefox --no-remote -ProfileManager

Создайте новый пустой профиль с именем "proxy", повторно выберите профиль по умолчанию (для следующего запуска) и затем выйдите.

firefox --no-remote -P proxy &

  1. Установите последнюю версию OWASP ZAP с Java 8

Я буду использовать Docker, чтобы помочь в воспроизведении проблемы.

Dockerfile:

FROM java:8

ENV ZAP_VERSION 2.5.0
RUN apt-get update && apt-get clean
RUN apt-get install -q -y wget && apt-get clean
RUN mkdir /zap
RUN cd /zap && wget https://github.com/zaproxy/zaproxy/releases/download/${ZAP_VERSION}/ZAP_${ZAP_VERSION}_Linux.tar.gz
RUN cd /zap && tar zxvf ZAP_${ZAP_VERSION}_Linux.tar.gz
RUN apt-get install -q -y sudo xauth libxrender1 libxtst6 libxi6 net-tools less && apt-get clean

RUN export uid=1000 gid=1000 && \
    mkdir -p /home/developer && \
    echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
    echo "developer:x:${uid}:" >> /etc/group && \
    echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
    chmod 0440 /etc/sudoers.d/developer && \
    chown ${uid}:${gid} -R /home/developer && \
    chown -R 1000 /home/developer/ && \
    chmod -R u+rw /home/developer/

USER developer
ENV JAVA_HOME /opt/java
ENV PATH $JAVA_HOME/bin:/zap/ZAP_${ZAP_VERSION}/:$PATH
ENV HOME /home/developer

EXPOSE 8080
CMD /zap/ZAP_${ZAP_VERSION}/zap.sh -host 0.0.0.0 -port 8080 -newsession `date --iso-8601=s`

Построить как:

docker build -t zaproxy:2.5.0 .

Беги как:

mkdir -p $HOME/.ZAP
docker run \
  --rm \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v $HOME/.ZAP:/home/developer/.ZAP \
  -p 8080:8080 \
zaproxy:2.5.0 &
  1. Создать и сохранить OWASP корневой CA

В zaproxy Tools > Options > Dynamic SSL Certificates

Generate (если он еще не создан), скопировать в текстовый файл, доступный для Firefox.

  1. Установите сохраненный корневой CA OWASP в Firefox

Preferences > Advanced > Cerfificates > View Certificates > Authorities

Import > Выберите сохраненный сертификат> Open

  1. Прокси все сетевые протоколы Firefox через OWASP ZAP

Preferences > Advanced > Network > Settings > Manual proxy configuration

Настроить как:

  • HTTP Proxy: 127.0.0.1
  • Port: 8080
  • Use this proxy server for all protocols

Затем нажмите Ok

  1. Посетите https://google.com чтобы проверить, что прокси работает

Вы должны увидеть перехваченные HTTPS-запросы в нижней панели OWASP ZAP.

  1. Посетите неработающий URL, чтобы продемонстрировать ошибку.

1 ответ1

0

Список рассылки пользователей zaproxy:

  • удаленный веб-сервер не принимает соединение TLS
  • изменение настроек "Local proxy" не поможет, но настройки "Connection" могут

Я отключил TLS 1.1 и 1.2 на вкладке "Подключения" (исходящие) и смог проксировать этот домен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .