=====================
最新のプレゼンテーション:
最新のブログ記事:
この古いツールを試す前に、@bitquark の Go で書かれた新しいツールを試すことをお勧めします: https://github.com/bitquark/shortscan
チルダ (~) 文字を利用した IIS ショートファイル名(8.3)開示脆弱性のためのスキャナーの最新バージョンです。この問題は 2010 年に発見されましたが、その後数回にわたって進化してきました。
これは古いツールでコードはスパゲッティ状態ですが、最新の IIS(この文書の執筆時点では Windows Server 2022 上の IIS 10)にも対応できます!最近更新され、Java でのリフレクションハックなしでカスタム HTTP メソッドを送信できるようになりました。ただし、素晴らしい研究者の方々が Go などの他の技術を使ってこのツールを再実装しようとしており、それらが成熟すればおそらくこちらのツールよりもうまく動作するでしょう。
Microsoft IIS には、チルダ文字 (~) を含むリクエストの解析中にトリガーされる、不正な情報開示につながる欠陥が存在します。これにより、リモートの攻撃者がファイルやフォルダ名の情報にアクセスできる可能性があります。
このスキャナーは、より良いサポートのために https://code.google.com/p/iis-shortname-scanner-poc/ から GitHub に移行されました。
元の研究資料: http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
いくつかの Microsoft IIS のバージョンにおいて、特定のベクターを使用することで、Windows 上で 8.3 相当の名前を持つファイルやディレクトリのショートネームを検出することが可能です。たとえば、拡張子が 4 文字である ".aspx" ファイルのすべてのショートネームを検出できます。
注意: このスキャナーの最新バージョンには新しい手法が導入されており、脆弱な状態の IIS10 をスキャンできるようになりました。
ショートネームから元のファイル名やフォルダ名を特定するのは簡単ではありません。ただし、以下の方法が例として推奨されます:
最新版は Open JDK 18 を使用してコンパイルされています(他の JDK 用の古い jar ファイルは削除されましたが、Git 履歴に残っています)。
この古いアプリケーションを使用するには、/release ディレクトリのファイルをダウンロードする必要があります!
また、自分でこのアプリケーションをコンパイルすることもできます。さらなる調査のため、GitHub で問題を報告してください。
使い方 1(デフォルト設定ファイルで対象が脆弱かどうかを確認する):
java -jar iis_shortname_scanner.jar [URL]
使い方 2(デフォルト設定ファイルで 8.3 ファイル名を検索する):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
使い方 3(新しい設定ファイルで対象が脆弱かどうかを確認する):
java -jar iis_shortname_scanner.jar [URL] [configFile]
使い方 4(新しい設定ファイルで 8.3 ファイル名を検索する):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
使い方 5(Linux ボックスで複数のターゲットをスキャンする):
./multi_targets.sh <scope file> <is_default_https (1=https)>
詳細:
[ShowProgress]: 0= 最終結果のみ表示 - 1= 最終結果を段階的に表示 - 2= 進捗を表示
[ThreadNumbers]: 0= スレッドなし - 整数= 同時スレッド数 [IIS のサービス拒否に注意]
[URL]: 完全な URL - http/https プロトコルで始まる
[configFile]: config.xml を基にした新しい設定ファイルへのパス
例:
- 例 0(対象が脆弱かどうかを確認する):
java -jar iis_shortname_scanner.jar http://example.com/folder/
- 例 1(スレッドなし - 非常に遅い):
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- 例 2(20 スレッド使用 - 推奨):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- 例 3(出力をテキストファイルに保存):
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- 例 4(IIS 基本認証をバイパス):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- 例 5(新しい設定ファイルを使用):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- 例 6(Linux ボックスで複数ターゲットをスキャン):
./multi_targets.sh scope.txt 1
注意 1: config.xml ファイルを編集してスキャナーの設定を変更し、追加のヘッダーを設定できます。 注意 2: 初回は動作しないことがあり、再試行が必要な場合があります。
以下の例では、ファイルが存在する場合に IIS が異なるメッセージで応答します:
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
ただし、IIS サーバーによって応答が異なる場合があり、たとえば以下のようなパターンで動作するものもあります:
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
GET、POST、OPTIONS、DEBUG などのリクエスト送信方法も重要です。
プロキシを使用してリクエストを監視することが、この問題とスキャナーを理解する最良の方法だと考えています。
Microsoft はこのセキュリティ問題にパッチを提供しません。彼らの最後の回答は以下の通りです:
Thank you for contacting the Microsoft Security Response Center.
We appreciate your bringing this to our attention. Our previous guidance stands: deploy IIS with 8.3 names disabled.
したがって、Windows オペレーティングシステムで以下のレジストリキーを作成して、8.3 名を無効にして IIS を展開することを推奨します:
キー: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
名前: NtfsDisable8dot3NameCreation
値: 1
注意: Web フォルダを再作成する必要があります。NtfsDisable8dot3NameCreation レジストリエントリの変更は、変更後に作成されたファイルとディレクトリにのみ影響するため、既存のファイルは影響を受けません。
イメージをビルド:
docker build . -t shortname
ファイルモード:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
シングルモード:
docker run shortname 2 20 http://example.com
設定ファイルの上書き:
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://example.com
研究リンク:
Web サイト参照:
動画リンク:
その他のリンク: