Вопрос или проблема
Вопрос
Прокси-сервер, который ограничивает доступ конкретных IP-адресов к определённым доменам. Я могу обойти эти заблокированные сайты, настроив свой собственный локальный прокси-сервер, используя вышеуказанный прокси-сервер в качестве вышестоящего. Что происходит? Почему это сработало?
Контекст:
- В нашей компании мы используем внутреннюю сеть для работы, существуют определённые политики безопасности, такие как блокировка облачного внешнего хранилища, сообщений, платформы социальных медиа и т. д.
- У нас статический IP, DNS. Для подключения к внешнему интернету мы должны проходить через прокси-сервер, назовём его прокси X. Прокси X контролировал наши соединения.
- Я хочу получить доступ к этим ограниченным сайтам.
Что я сделал
Я установил Squid в качестве своего локального прокси-сервера и использую прокси X в качестве вышестоящего прокси. Назовём мой локальный прокси прокси Y, так что все запросы, проходящие через прокси Y, будут проходить через прокси X. Это единственная конфигурация, которую я сделал.
Что происходит
- при использовании прокси Y я могу получить доступ к этим заблокированным сайтам.
- Из того, что я видел на своём компьютере, если я указал имя хоста (при использовании локального прокси, как
http://<имя-хоста>:3128
) в виде адреса обратной связиlocalhost(::1)
,0.0.0.0
,127.0.0.1
илимой-компьютер(10.0.0.x)
(другой адаптер), в основном всё, кроме имени хоста, разрешенного на мой статический IP, например:10.60.100.x
, сможет получить доступ к этим заблокированным сайтам. - статический IP, как сказано выше, можно обобщить для IP, принадлежащих подсети
10.60.100.0/x
Мой предположение
- Я подумал, может быть, они настроили ACL для этой подсети и запретили доступ к этим заблокированным доменам.
- Используя, возможно, другой заголовок при отправке запроса к этим заблокированным сайтам через прокси X через прокси Y, я могу получить к ним доступ без ограничений. Если это так, каков мог бы выглядеть заголовок? Могу ли я использовать другой метод без настройки прокси Y.
Моё лучшее предположение также связано с модификациями заголовков, как вы и сказали. Например, заголовок via
является вероятным кандидатом.
Если прокси Y пересылает ваш запрос на прокси X и изменяет или удаляет заголовок Via
, прокси X может не понять, что запрос был передан через ваш прокси.
Это может привести к тому, что прокси X применит другие правила, потому что он может предположить, что запрос поступает от прямого клиента, а не от вашей “цепочки прокси”.
Если это правда, тогда было бы гораздо проще модифицировать эти заголовки самостоятельно и избежать всей этой времязатратной прокси-ретрансляции.
Некоторые рекомендации по тестированию, является ли это тем, что обходит прокси X:
-
вручную изменять заголовки с помощью
curl
,wget
или расширений браузера. Затем проверьте, сможете ли вы всё ещё получить доступ к заблокированным сайтам. -
На самом деле проверьте, изменяются ли заголовки, используя прокси между вашим прокси и прокси X, например Burpsuite. Это сложно и иногда невозможно, но это определённо самый эффективный и быстрый метод, если вы можете это сделать.
И тогда, очевидно, если это сработает и вы поймёте, какой заголовок является волшебным, вы могли бы просто продолжить использовать расширения браузера с этим конкретным заголовком для доступа к заблокированным сайтам.
Ответ или решение
Ответ на ваш вопрос заключается в понимании того, как работает proxy-сервер и какие механизмы могут быть использованы для обхода ограничений, установленных вашим корпоративным proxy X.
Почему работает локальный proxy Y?
Когда вы устанавливаете локальный proxy (в данном случае Squid) и настраиваете его на использование proxy X в качестве upstream, ваши запросы фактически проходят через два уровня прокси:
- Proxy Y (локальный): Принимает ваши запросы.
- Proxy X (корпоративный): Обрабатывает запросы, поступающие от Proxy Y.
Таким образом, когда вы делаете запрос к заблокированному сайту через Proxy Y, он сначала проходит через локальный сервер, который, возможно, модифицирует определённые заголовки HTTP или IP-адреса, прежде чем отправить запрос на Proxy X.
Что происходит?
-
Изменения заголовков: Как вы правильно заметили, заголовок
Via
может быть одним из заголовков, который изменяется или удаляется при прохождении запросов через Proxy Y. Proxy X может не распознавать, что запрос идёт через другой прокси, и, следовательно, применять к этому запросу свои правила доступа, основываясь на том, что он исходит от "обычного" клиента. -
IP-адреса: Когда вы используете localhost или другие адреса, не относящиеся к подсети вашей корпоративной сети (например, 10.60.100.x), Proxy Y отправляет запрос, который, вероятно, не попадает под правила доступа Proxy X, поэтому такие запросы проходят успешно.
-
Сетевые настройки: Вы также упомянули разницу в адресах. Это может означать, что сеть вашего предприятия использует списки контроля доступа (ACL), которые ограничивают доступ для определенных IP-адресов. Proxy Y, обрабатывая ваши запросы, может изменять способ, которым Proxy X интерпретирует эти IP-адреса.
Возможные пути обхода
Если вы хотите избежать установки Proxy Y, для начала, вы можете попробовать вручную изменять заголовки с помощью инструментов вроде curl
, wget
или браузеров с соответствующими расширениями:
-
Проверка заголовков: Убедитесь, что вы проверяете, какие заголовки отправляет ваш запрос. Модифицируйте их, чтобы увидеть, изменится ли ваше взаимодействие с Proxy X.
-
Использование инструментов анализа трафика: Такие как Burpsuite, могут помочь вам увидеть, как проходит ваш трафик, и выяснить, какие заголовки могут быть изменены или удалены.
Резюме
Ваши догадки о том, что проблема кроется в заголовках, в значительной степени оправданы. Применение таких тестов поможет определить, какие именно параметры имеют значение. Если вы выявите ключевые заголовки, вы сможете обойти ограничения, просто модифицируя запросы напрямую, без необходимости использования локального прокси.
Следует помнить, что обход корпоративных ограничений может нарушать корпоративную политику и может иметь последствия. Будьте осторожны и убедитесь, что ваши действия соответствуют внутренним правилам вашей компании.