web-dev-qa-db-ja.com

登録済みドメイン名“ localtest.me”が127.0.0.1に解決されるのはなぜですか?

私は Server-Side Request Forgery についての記事 を読んでいました。その記事の中で、攻撃者は127.0.0.1がインターネットに公開されていることを発見しました。犠牲者は127.0.0.1をブロックしました、しかし謎のlocaltest.meを含む他の多くのIPと明らかにいくつかのドメインもそれに解決されているので、彼は弱いテキストベースのフィルタをバイパスすることができました。

  1. localtest.meについて特別なことは何ですか?

  2. 他に人はいますか?(そしてそれらをどのように見つけますか?)


UPDATE

私が見つけた: http://readme.localtest.me/

テスト目的で、誰かがそのドメインを面白い方法で登録することを決めたようです。

その仕組みは次のとおりです。ドメイン名localtest.me全体、およびすべてのワイルドカードエントリは、127.0.0.1を指しています。そのため、Hostファイルを変更しなくても、すぐにローカル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

スタックオーバーフローに関する 似たようなの質問

28
not2qubit

ただし、外部ドメインをローカルドメインに登録する方法はまだわかりません。これは紛らわしいです。tracertlocaltest.meはマシンを離れることもありません。これは低レベルでどのように処理されますか?

あなたが想像する方法でドメインをアドレスに「バインド」するものは何もありません。電話帳と同じように、DNSは単にwhatアドレスが–であることを伝えるだけですが、それがその関与の終わりです。 (電話で「ピザハット」をダイヤルするのではなく、電話番号を調べて番号をダイヤルします。)

そのため、誰かがドメイン名を登録すると、それらは能力を取得して電話帳レコードを編集するだけです。しかし実際にどこかでドメイン名を「指す」ために-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データは多くのシステムに分散しているため(動的に生成されることもある)、本当にcannotそれらをすべて見つけるか、数秒後に結果が正確に保たれることを期待します。

ただし、セキュリティ上の理由から、すべてを見つけるためにneedを使用しないでください。一部のDNSリゾルバは、実際にそのようなエントリに対して一種のフィルタリング(「DNS再バインド保護」と呼ばれる)を既に備えており、特定の質問を探しません-answerのみを探します。保護機能は、ローカルアドレスを指す回答をブロックするだけです。

ただし、質問する前に、これをグローバルに禁止することはできません。ドメイン名をプライベートアドレスにポイントすることは、完全に正当なDNSの使用であり、多くのネットワークで実際に使用されています。

69
grawity

他にも詳細な回答がありますが、この質問の核心部分は簡単に答えることができます。

「ただし、外部ドメインをローカルドメインにどのように登録できるかはまだわかりません」

ドメイン名の登録とIPアドレスの割り当ては、まったく異なる2つの独立したものです。

だれでもは何らかの理由でanyドメイン名を登録できます。宛先IPアドレスを設定しなくてもドメイン名を登録できます。仮想の「事務処理」を経てドメイン登録事業者に支払うだけで、魔法のようにドメイン名がわかります。ドメイン名を登録するときに支払っているのは、ドメイン名自体と、IPアドレスをドメイン名に割り当てる機能(下記を参照)だけです。

しかしその場合、そのドメイン名にIPアドレスを割り当てるのはまったく別のプロセスです。だれでもがドメイン名の制御権を持っていれば、anyIPアドレスをドメイン名に割り当てることができます。ドメイン名レジストラは、あなたがどのような生アドレスをあなたがドメイン名に割り当てるのかについて、気にする必要はありません。

すべてのドメイン名は単に生活を楽にするポインタです。人々が数字の山(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を使用することで、その特定のアプリケーションがそれ自身のlocalhostネットワークを探査し、その情報を伝えることができました。 Webブラウザだけでツールにアクセスしている人に。

提示されたリスクは、すべての127.0.0.1がインターネットに公開されているということではなく、むしろone toolonone site上のずさんなコーディングがこれを可能にしました。

16
JakeGould

localtest.meについて特別なことは何ですか?

それは 127.0.0.1 (localhost)を指します。このアドレスは常にローカルコンピュータ用に予約されています。

他にありますか? (そしてそれらをどのように見つけますか?)

はい。グーグルとスーパーユーザーはあなたが(あなたが見つけたように)あなたの友達です。

どうやって外部ドメインをローカルの[IP]に登録することができるのかよくわかりません。 tracert localtest.meがマシンから出ることすらないので、これは混乱を招きます。これは低レベルでどのように処理されますか?

最初の(外部) DNS リクエストがありません。 tracertは、パケットがたどるパスを表示しますが、パケットがどこにも行けるようになるには、コンピュータは送信先のIPを知っている必要があります。注意してください、locatest.meを一度も訪れたことがない場合は、127.0.0.1にマッピングされていることを発見するために外部のリゾルバにDNS要求が出されます。返されたデータはローカルで使用されます(tracertやWebコンテンツの表示など)。また、DNSは任意のホスト名を任意のIPにマッピングできることを忘れないでください。IPがローカルかどうかを「認識」することはありません。

8
Anaksunaman