26

Я читал статью о подделке запросов на стороне сервера. В этой статье злоумышленник обнаружил, что 127.0.0.1 был открыт для интернета. Затем жертва заблокировала 127.0.0.1 , но, поскольку многие другие IP-адреса и, по-видимому, также некоторые домены также были разрешены, включая загадочный localtest.me , он смог обойти слабый текстовый фильтр.

  1. Что такого особенного в localtest.me?

  2. Есть ли другие? (А как их найти?)


ОБНОВИТЬ

Я нашел: http://readme.localtest.me/

Видимо, кто-то решил забавно зарегистрировать этот домен для тестирования:

Вот как это работает. Полное доменное имя localtest.me и все подстановочные знаки указывают на 127.0.0.1. Таким образом, без каких-либо изменений в вашем хост-файле вы можете немедленно начать тестирование с локальным URL.

Тем не менее, я все еще не уверен, как вы можете зарегистрировать внешний домен на локальный. Это сбивает с толку, так как tracert localtest.me никогда даже не покидает машину. Как это обрабатывается на низком уровне?

Затем я нашел еще несколько в этих комментариях и в других местах:

lvh.me 
vcap.me
fuf.me - IPv4 and IPv6
ulh.us
127-0-0-1.org.uk
ratchetlocal.com
smackaho.st
42foo.com
beweb.com
yoogle.com
ortkut.com
feacebook.com

И в похожих вопросах по переполнению стека.

3 ответа3

65

Тем не менее, я все еще не уверен, как вы можете зарегистрировать внешний домен на локальный. Это сбивает с толку, так как tracert localtest.me никогда даже не покидает машину. Как это обрабатывается на низком уровне?

Ничто так не "привязывает" домен к его адресу, как вы себе представляете. DNS, как и телефонная книга, просто сообщает вам, что это за адрес, но на этом его участие заканчивается. (Вы не набираете "Pizza Hut" на телефоне; вы ищите их номер и набираете номер.)

Таким образом, когда кто-то регистрирует доменное имя, он просто получает возможность редактировать эти записи телефонной книги. Но чтобы фактически "указать" имя домена где-нибудь - скажем, 127.0.0.1 - они добавляют эту строку в его базу данных:

localtest.me.   A   127.0.0.1

Вот и все. Тот, кто спрашивает о localtest.me теперь получает ответ «О, это на 127.0.0.1 ».

Поэтому, когда вы tracert localtest.me. сначала запрашивает DNS о соответствующем адресе; получает ответ 127.0.0.1; и затем ведет себя точно так же, как если бы вы запустили tracert 127.0.0.1 вместо этого. Никакой магии.

Есть ли другие? (А как их найти?)

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

Но в целях безопасности вам не нужно искать их все. Некоторые распознаватели DNS на самом деле уже имеют своего рода фильтрацию для таких записей (называемую "защита повторного связывания DNS"), и они не ищут конкретные вопросы - они только смотрят на ответ. Функция защиты просто блокирует ответы, которые указывают на любой локальный адрес.

Однако, прежде чем вы спросите, это нельзя запретить глобально - указание доменных имен на частные адреса все еще является совершенно законным использованием DNS и используется на практике во многих сетях.

16

Есть и другие ответы, которые углубляются в детали, но суть этого вопроса очень проста:

«Тем не менее, я все еще не уверен, как вы можете зарегистрировать внешний домен на локальный».

Регистрация доменного имени и назначение IP-адреса - это две совершенно разные и независимые вещи.

Любой может зарегистрировать любое доменное имя по любой причине; Вы даже можете зарегистрировать доменное имя без указания IP-адреса назначения. Нужно просто заплатить регистратору домена, пройдя через виртуальную «бумажную работу», и тогда, как по волшебству, у вас будет доменное имя. Все, за что вы платите при регистрации доменного имени, - это само имя домена, а также возможность - см. Ниже - назначить IP-адрес для имени домена.

Но тогда присвоение IP-адреса этому доменному имени - это совсем другой процесс. Любой может назначить любой IP-адрес доменному имени, если он контролирует это доменное имя. Регистратор доменных имен не заботится и не заботится о том, какую кучу необработанных адресов вы назначаете доменному имени.

Все доменное имя - это просто указатель, который облегчает жизнь. Думайте об этом как о псевдониме, чтобы людям не приходилось запоминать стопки цифр (IPv4) или цифр и букв (IPv6).

Это оно!

Но то, что произошло - как объясняется на той странице, которую вы посетили, - было не «взломом» каждой системы с локальным адресом «127.0.0.1» в мире, а скорее недостатком самой этой конкретной системы.

Но для дальнейшего разъяснения этого - и это сбило меня с толку так, как вы это сформулировали, - когда вы заявляете:

Я читал статью о подделке запросов на стороне сервера. В этой статье злоумышленник обнаружил, что 127.0.0.1 был открыт для интернета.

Я также прочитал эту статью , и вот что произошло: кто-то использовал онлайн-инструмент, который позволял вам указывать этот инструмент на любой IP-адрес / имя хоста. Когда они указали этот инструмент на 127.0.0.1 это не значит, что IP-адрес 127.0.0.1 был открыт для Интернета. Скорее, в самом инструменте был недостаток, который позволял кому-либо проверять внутренний сервер, на котором работал инструмент, с использованием 127.0.0.1 . И поскольку этот инструмент был явно хакерским инструментом, который использовался для обнаружения открытых портов и т.д., С помощью 127.0.0.1 это конкретное приложение смогло проверить свою собственную локальную сеть и - здесь ключ - передать эту информацию кому-то, получающему доступ к инструменту, просто веб-браузер.

Риск был не в том, что все 127.0.0.1 были открыты для Интернета, а в том, что небрежное кодирование на одном инструменте на одном сайте позволяло этому случиться.

8

Что такого особенного в localtest.me?

Это указывает на 127.0.0.1 (localhost). Этот адрес всегда зарезервирован для локального компьютера.

Есть ли другие? (А как их найти?)

Да. Google и Super User - ваши друзья (как вы узнали).

Я до сих пор не уверен, как вы можете зарегистрировать внешний домен на локальный [IP]. Это сбивает с толку, так как tracert localtest.me никогда даже не покидает машину. Как это обрабатывается на низком уровне?

Вы пропускаете начальный (внешний) запрос DNS . tracert отображает путь, по которому идет пакет, но перед тем, как пакет может куда-либо отправиться, компьютер должен знать IP-адрес, по которому его нужно отправить. С предостережениями, если вы никогда не посещали locatest.me прежде, внешний DNS-запрос отправляется запрос на обнаружение, что он соответствует 127.0.0.1. Возвращенные данные затем используются локально (например, для tracert или отображения веб-контента). И помните, что DNS может сопоставить любое имя хоста любому IP - он не "знает", является ли IP локальным или нет.

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