なぜ私は突然、この非常に古い知識ポイントを要約しなければならないのですか? わかりません. もったいないかもしれません. 空き時間に何かを学ばなければなりません.
DNS 再バインド
0x01 攻撃の紹介
DNS リバインディングは、DNS リバインディング攻撃または DNS リダイレクション攻撃とも呼ばれます。この攻撃では、悪意のある Web ページによって、訪問者がクライアント側のスクリプトを実行し、ネットワーク上の別の場所にあるコンピューターを攻撃します。
DNS Rebinding 攻撃メカニズムを紹介する前に、まず Web 同一生成元ポリシーについて理解しましょう。
Web 同一オリジン ポリシー
同一オリジン ポリシー(英語: Same-origin policy) とは、2 つの Web ページの URL、ホスト名、およびポート番号が同じである必要がある場合に限り、Web ページ スクリプトが Web ブラウザーで別の Web ページのデータにアクセスできるようにすることを指します。 2 つの Web サイトが上記の条件を満たしている場合、2 つの Web サイトは同じ起源を持つと見なされます。XSS,XXE,SSRF
このポリシーは、Web ページ上の悪意のあるスクリプトに基づく攻撃など、ある Web ページ上の悪意のあるスクリプトが、そのページのドキュメント オブジェクト モデルを介して別の Web ページ上の機密データにアクセスするのを防ぎます。
同じオリジンの定義: 2 つの URL のプロトコル、ドメイン名、およびポートが同じ場合、2 つの URL は同じオリジンです。
同一生成元ポリシーは、Web アプリケーションにとって特別な意味を持ちます。Web アプリケーションは、ユーザー セッション (セッション) を維持するために HTTP Cookie に広く依存しているため、関連のない Web サイトは、データ漏洩の損失を防ぐために厳密に分離する必要があります。
同一生成元ポリシーはスクリプトにのみ適用されることに注意してください。つまり、Web サイトは、対応する HTML タグを介して、異なる生成元 Web サイトにある画像、CSS、動的に読み込まれたスクリプトなどのリソースにアクセスできます。また、クロスサイト リクエスト フォージェリ (CSRF) は、HTML タグに同一生成元ポリシーが適用されないという欠陥を利用するものです。
したがって、理論的には、同一生成元ポリシーは、クライアント側のスクリプトが、スクリプトにサービスを提供する同じホスト上のコンテンツにのみアクセスできることを効果的に保証できます。
これまでのところ、Web 同一生成元ポリシーを回避する方法は、多くのハッカーの研究分野になっています。
0x02 攻撃の原則:
使用される TTL は次のとおりです。
TTL は英語の Time-To-Live の略で、DNS サーバーでのドメイン名解決レコードの保持時間を意味します。世界中のDNSサーバーが解決要求を受信すると、ドメイン名で指定されたNSサーバーに解決要求を送信して解決記録を取得し、記録を取得した後、記録はDNSサーバーに一定期間保存されます。このドメイン名の解決要求を受信すると、DNS サーバーは NS サーバーに要求を送信するのではなく、今取得したレコードを直接返します; このレコードが DNS サーバーに保持されている時刻は、 TTL 値。
つまり、TTL の値が小さいほど、変更されたレコードへの影響がより早く反映されます。
ここで、DNS 再バインドのケースを構築できます。
たとえば、192.168.32.10 と 127.0.0.1 を切り替えるには、rbndr ツールを使用してそれらを dword としてエンコードできます。
7f000001.c0a8200a.rbndr.us
次に、テストしてみましょう。
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 192.168.32.10
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 192.168.32.10
# host 7f000001.c0a8200a.rbndr.us
7f000001.c0a8200a.rbndr.us has address 127.0.0.1
これにより、DNS 再バインドの効果が得られます。
0x03 攻撃メカニズム
攻撃者はネームサーバーのベアラーを制御できず、ホスト名 (または IP アドレス、まだ有効なホスト名) を解決するためのすべての要求は、攻撃者が制御および操作する別のネームサーバーにリダイレクトされます。たとえば、www.example-a.com に Web サイトがあり、その特定のプライベート IP アドレスを介してのみアクセスできるプライベートな内部ドメイン メール サーバーまたはその他のサービスにアクセスしたい場合、DNS 再バインド攻撃を使用して、これらのアドレスのいずれかを偽造します。
0x04 攻撃の例
-
1. 攻撃者は、www.evil.com などのドメイン名を IP アドレス 1.3.5.7 で登録し、それを独自の DNS サーバー (1.3.5.4) に委託し、フィッシング リンクまたは電子メールを使用して HTTP トラフィックを取得します。
-
2. 通常の TTL レコードを送信する代わりに、DNS サーバーは非常に短い TTL レコード (たとえば、1 秒) を送信し、エントリ [www.evil.com, 1.3.5.7] に対する DNS 応答がサーバーにキャッシュされるのを防ぎます。被害者の (192.168.1.10) ブラウザー。
-
3. 攻撃者のサーバーはまず、サーバーの IP アドレス (1.3.5.7) を含む
JavaScript
ような悪意のあるスクリプトで被害者に応答します。 -
4. 敵対者は
XMLHttpRequest (XHR)
、HTTP または HTTPS 要求を敵対者のサーバーに直接送信し、応答をロードします。 -
5. 悪意のあるスクリプトにより、攻撃者はホスト名をファイアウォールの背後にあるターゲット サーバーの IP アドレス (192.168.1.2) に再バインドできます。
-
6. 次に、サーバーは、被害者 (192.168.1.10) と同じドメイン内の内部ホスト IP (192.168.1.2) である対戦相手の実際のターゲットに応答します。
-
7. 同じ名前が両方の IP アドレスに解決されるため、ブラウザは 2 つの IP アドレス (1.3.5.7 と 192.168.1.2) を同じセキュリティ ゾーンに配置し、アドレス間で情報が流れるようにします。
-
8. さらに、攻撃者は有効期間が短い複数の IP アドレスを送信することで、被害者のローカル ネットワーク (192.168.XX) 内のすべての内部ホストをスキャンしてアクセスできます。
0x05 攻撃ハザード
DNS 再バインドは、被害者の Web ブラウザがプライベート IP アドレスでマシンにアクセスし、その結果を攻撃者に返すことで、プライベート ネットワークを混乱させる可能性があります。また、被害者のマシンを使用して、スパム、分散型サービス拒否攻撃 (DDOS)、またはその他の悪意のあるアクティビティを送信するために使用することもできます。これは、ミート マシンやゾンビ マシンについてよく耳にするものです。
0x04-1 DNS リバインディング攻撃によるネットワーク侵入テスト:
場合によっては、ユーザーがだまされて、これらのネット (プライベート メール サーバーなど) を使用してフィッシング サイトを作成することがあります。ハイジャックされた URL に送信されたすべてのトラフィックがオリジン サーバーに送り返されるため、完全に混乱し、ユーザーはフィッシング ページをインストールせざるを得なくなります。ユーザー情報やユーザー権限を取得する機能を実現するため。
0x06 DNS Rebinding を実際の脆弱性マイニングに適用
CVE-2022-4096
脆弱性の説明: 1.8.2 より前の GitHub リポジトリ appsmithorg/appsmith の Server Side Request Forgery (SSRF)
再発リンク: https://infosecwriteups.com/ssrf-via-dns-rebinding-cve-2022-4096-b7bf75928bb2
CVE-2023-26492
脆弱性の説明: Directus は、SQL データベースのコンテンツを管理するためのリアルタイム API およびアプリケーション ダッシュボードです。Directus は、リモート Web サーバーからファイルをインポートする
/files/import
とき (POST から へ)、サーバー サイド リクエスト フォージェリ (SSRF) に対して脆弱です。攻撃者は、DNS 再バインド攻撃を実行したり、内部サーバーから機密データを表示したり、ローカル ポート スキャンを実行したりすることで、セキュリティ制御を回避できます。攻撃者はこの脆弱性を悪用して、機密性の高い内部サーバーにアクセスし、機密情報を盗む可能性があります。この問題は、バージョン 9.23.0 で修正されています。CVE リンク: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-26492
CVE-2022-43548
脆弱性の説明: IsAllowedHost チェックが不十分なため、Node.js バージョン <14.21.1、<16.18.1、<18.12.1、<19.0.1 には、オペレーティング システム コマンド インジェクションの脆弱性があります。この脆弱性は、IsIPAddress のため、簡単に回避できます。 DBS リクエストを発行する前に IP アドレスが適切にチェックされず、リバインド攻撃が可能になります。https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32212 のこの問題の修正は不完全です。この新しい CVE は修正を完了する予定です。
CVE リンク: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-43548
CVE-2022-43548
と続きにCVE-2023-26492
、完全再現過程記事がありますので、お楽しみに~
0x07 参照リンク
[Web 同一オリジン ポリシー] https://zh.wikipedia.org/wiki/%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5)
[DNS リバインディング] (https://en.wikipedia.org/wiki/DNS_rebinding)
[CVE-2022-4096] (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4096)
【DNSリバインディング攻撃解説】(https://danielmiessler.com/blog/dns-rebinding-explained/)