Как перенаправить запросы на другой хост, используя ZAP? - PullRequest
1 голос
/ 04 мая 2020

Я новичок в ZAP и мало что знаю о его сценариях js / ecma.

По сути, я пытался перенаправить запрос на другой хост. Скажем, приложение, которое подключено к прокси-серверу ZAP, делает запрос в URL:

http://www.somesite.com/path/to/a/file

, но я хочу изменить имя хоста в URL на: another.site.com

, поэтому он на самом деле запросит: http://www.anothersite.com/path/to/a/file

Вот код, который я пытался работать, но URL остается неизменным в запросе .

function proxyRequest(msg) {
    // Debugging can be done using println like this
    var uri = msg.getRequestHeader().getURI().toString()
    var host =  msg.getRequestHeader().getURI().getHost().toString()

    print('proxyResponse called for url=' + uri)

    if (host == 'download.qt.io') {
        uri = uri.replace('download.qt.io/online/', 'mirrors.ocf.berkeley.edu/qt/online/')
        msg.getRequestHeader().setHeader('Location', uri)
        print('proxyRequest changed to url=' + uri)
    }

    if (host == 'ftp.jaist.ac.jp') {
        uri = uri.replace('ftp.jaist.ac.jp/pub/qtproject/online/', 'mirrors.ocf.berkeley.edu/qt/online/')
        msg.getRequestHeader().setHeader('Location', uri)
        print('proxyRequest changed to url=' + uri)
    }

    if (host == 'qtproject.mirror.liquidtelecom.com') {
        uri = uri.replace('qtproject.mirror.liquidtelecom.com/online/', 'mirrors.ocf.berkeley.edu/qt/online/')
        msg.getRequestHeader().setHeader('Location', uri)
        print('proxyRequest changed to url=' + uri)
    }

    return true
}

1 Ответ

1 голос
/ 05 мая 2020

Вариант 1: Правило заменителя

Установите дополнение Replacer с рынка: ZAP toolbar marketplace button

  1. Перейти к инструментам и выберите «Параметры заменителя».
  2. Установите правило, как показано на следующем снимке экрана.
  3. При необходимости сохраните / окей.
  4. Теперь, когда вы просматриваете et c все ваши трафики c будут перенаправлены / переписаны.

Suggested Replacer rule details

Опция 2: HttpSender Script

  1. Создайте новый скрипт HttpSender, подобный следующему примеру:
function sendingRequest(msg, initiator, helper) {
  var host = msg.getRequestHeader().getURI().getHost();
  if (host.equals("www.somesite.com")) {
        uri = msg.getRequestHeader().getURI();
        uri.setEscapedAuthority("www.anothersite.com");
        msg.getRequestHeader().setURI(uri);
  }
  return msg;
}

function responseReceived(msg, initiator, helper) {}

Опция 3: запись в файл хостов

  1. Перейдите в командную строку и nslookup www.somesite.com, запишите IP-адрес (wxyz).
  2. Добавьте в файл hosts запись, связывающую отмеченный IP (wxyz) с www.anothersite.com.
    (вы можете чтобы изменения вступили в силу, необходимо перезапустить ZAP / браузеры. На linux вам, вероятно, понадобится sudo для редактирования файла, на Windows вам нужно будет отредактировать его как администратор.)

(Более подробная информация WRT редактирует ваш хост-файл: https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/)

...