0x01 攻击简介
DNS Rebinding也叫做DNS重绑定攻击或者DNS重定向攻击。在这种攻击中,恶意网页会导致访问者运行客户端脚本,攻击网络上其他地方的计算机。
在介绍DNS Rebinding攻击机制之前我们先了解一下Web同源策略,
Web同源策略
同源策略(英语:Same-origin policy)是指在Web浏览器中,允许某个网页脚本访问另一个网页的数据,但前提是这两个网页必须有相同的URL、主机名和端口号,一旦两个网站满足上述条件,这两个网站就被认定为具有相同来源。此策略可防止某个网页上的恶意脚本通过该页面的文档对象模型访问另一网页上的敏感数据,比如XSS,XXE,SSRF
等基于网页上的恶意脚本攻击。
**同源的定义:**如果两个 URL 的 协议、域名、端口都相同的话,则这两个 URL 是同源。
同源策略对Web应用程序具有特殊意义,因为Web应用程序广泛依赖于HTTP cookie来维持用户会话(session),所以必须将不相关网站严格分隔,以防止丢失数据泄露。
值得注意的是同源策略仅适用于脚本,这意味着某网站可以通过相应的HTML标签访问不同来源网站上的图像、CSS和动态加载 脚本等资源。而跨站请求伪造(CSRF)就是利用同源策略不适用于HTML标签的缺陷。
所以从理论上来讲,同源策略是能够有效的保证:客户端脚本只能访问为脚本提供服务的同一主机上的内容。
至此如何绕过Web同源策略也成了众多hacker研究的地方。
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 再バインドの効果が得られます。
サイバーセキュリティの学習に役立つ完全な情報セットを無料で受け取ることができます。
① サイバーセキュリティの学習と成長経路のマインド マップ
② 60 以上の古典的なサイバーセキュリティ ツールキット
③ 100 以上の SRC 分析レポート
④ サイバーセキュリティの攻撃と防御技術に関する 150 以上の電子ブック
⑤ 最も権威のある CISSP 認定試験ガイド + 問題バンク
⑥ 1800 ページを超える CTF 実践スキル マニュアル
⑦ ネットワーク セキュリティ企業からの最新のインタビューの質問のコレクション (回答を含む)
⑧ APP クライアント セキュリティ テスト ガイド (Android+IOS)
0x03 攻撃メカニズム
攻撃者はネームサーバーのベアラーを制御できず、ホスト名 (または IP アドレス、まだ有効なホスト名) を解決するためのすべての要求は、攻撃者が制御および操作する別のネームサーバーにリダイレクトされます。たとえば、www.example-a.com に Web サイトがあり、その特定のプライベート IP アドレスを介してのみアクセスできるプライベートな内部ドメイン メール サーバーまたはその他のサービスにアクセスしたい場合、DNS 再バインド攻撃を使用して、これらのアドレスのいずれかを偽造します。
0x04 攻撃の例
- 攻撃者は、www.evil.com などのドメイン名を IP アドレス 1.3.5.7 で登録し、それを独自の DNS サーバー (1.3.5.4) に委任し、フィッシング リンクまたは電子メールを使用して HTTP トラフィックを取得します。
- 通常の TTL レコードを送信する代わりに、DNS サーバーは非常に短い TTL レコード (1 秒など) を送信し、エントリ [www.evil.com, 1.3.5.7] に対する DNS 応答が被害者の (192.168 .1.10) ブラウザ。
- 攻撃者のサーバーはまず、サーバーの IP アドレス (1.3.5.7) を含むよう
JavaScript
な悪意のあるスクリプトで被害者に応答します。 - 敵対者は、HTTP または HTTPS 要求を敵対者のサーバーに直接送信し、応答をロードする
XMLHttpRequest (XHR)
ために。 - 悪意のあるスクリプトにより、攻撃者はホスト名をファイアウォールの背後にあるターゲット サーバーの IP アドレス (192.168.1.2) に再バインドできます。
- 次に、サーバーは、被害者 (192.168.1.10) と同じドメイン内の内部ホスト IP (192.168.1.2) である、敵対者の実際のターゲットに応答します。
- 同じ名前が両方の IP アドレスに解決されるため、ブラウザは 2 つの IP アドレス (1.3.5.7 と 192.168.1.2) を同じセキュリティ ゾーンに配置し、アドレス間で情報が流れるようにします。
- さらに、攻撃者は、存続期間の短い複数の 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
、完全再現過程記事がありますので、お楽しみに~