Назад | Перейти на главную страницу

iptables вызывает бесконечный цикл запроса GET

Я пытаюсь перенаправить HTTP-трафик с 80 на 8080 для использования Burp Suite.

Используя iptables, моя команда была:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

Таким образом, трафик был перенаправлен на порт 8080 и отображен в Burp. Однако запрос GET продолжает загружаться, и если я отключу перехват, запросы заполняют историю Burp, пока она не заполнится.

Я выполнил полную очистку и сброс iptables безрезультатно.

РЕДАКТИРОВАТЬ: после дальнейшего исследования я подозреваю, что тот же запрос продолжает возвращаться в Burp Suite после пересылки. Вместо этого это может быть проблемой с Burp. Помогите?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: я делаю это на виртуальной машине ubuntu 13 и тестирую это в браузере эмулятора Android (работающего на виртуальной машине) без прокси.

Поправьте меня, если я ошибаюсь, но Burp Suite - это прокси-сервер, поэтому для каждого подключения будет другое подключение обратно. Ваше первое соединение правильно перенаправляется на Burp, а затем перенаправляются и собственные исходящие соединения Burp. Вы можете исключить Burp, изменив правило iptables следующим образом:

   iptables -t nat -A OUTPUT -p tcp --dport 80 ! --uid-owner <UID OF BURP PROCESS> -j DNAT --to 127.0.0.1:8080

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

Удачи.

РЕДАКТИРОВАТЬ: правильная команда, которая сработала, была

iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner 0 -j DNAT --to 127.0.0.1:8080

после запуска Burp Suite от имени root.

Мое решение заключалось в том, чтобы просто указать источник HTTP-запроса и ограничить всю маршрутизацию только теми, которые идут с этого IP-адреса.

sudo iptables -t nat -A OUTPUT -p tcp -s 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080

после того, как запрос пройдет через отрыжку, он больше не будет маршрутизирован.

Однако это работает только для браузеров (я использую firefox).

Когда я попробовал это с эмулятором Android и изменил правило iptable на разные источники, такие как 10.0.2.1 (адрес шлюза эмулятора), 10.0.2.2, 10.0.2.15, запросы не маршрутизируются.