5.5 KiB
LFI2RCEをPHP_SESSION_UPLOAD_PROGRESSを介して実行
{% hint style="success" %}
AWSハッキングの学習と練習:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングの学習と練習: HackTricks Training GCP Red Team Expert (GRTE)
HackTricksのサポート
- 購読プランをチェック!
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
セッションがなく、session.auto_start
がOff
であっても、ローカルファイルインクルージョンを見つけた場合、session.upload_progress.enabled
がOn
であり、PHP_SESSION_UPLOAD_PROGRESS
をマルチパートPOSTデータで提供すると、PHPはセッションを有効にします。
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -d 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -F 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah' -F 'file=@/etc/passwd'
$ ls -a /var/lib/php/sessions/
. .. sess_iamorange
In the last example the session will contain the string blahblahblah
**PHP_SESSION_UPLOAD_PROGRESS
**を使用すると、セッション内のデータを制御できます。したがって、セッションファイルを含めると、制御可能な部分(たとえば、PHPシェルコード)を含めることができます。
{% hint style="info" %}
インターネット上のほとんどのチュートリアルは、デバッグ目的でsession.upload_progress.cleanup
をOff
に設定することをお勧めしています。ただし、PHPのデフォルトのsession.upload_progress.cleanup
はまだOn
です。つまり、セッション内のアップロード進行状況はできるだけ早くクリーンアップされます。したがって、これは競合状態になります。
{% endhint %}
CTF
このテクニックがコメントされているオリジナルCTFでは、競合状態を悪用するだけでは不十分で、読み込まれるコンテンツは@<?php
で始まる必要がありました。
session.upload_progress.prefix
のデフォルト設定により、SESSIONファイルは厄介な接頭辞 upload_progress_
で始まります。例:upload_progress_controlledcontentbyattacker
初期接頭辞を削除するトリックは、ペイロードを3回base64エンコードし、その後convert.base64-decode
フィルターを介してデコードすることでした。これは、base64デコード時にPHPが奇妙な文字を削除するためです。そのため、3回後には、攻撃者が送信した ペイロードだけが 残り(そして攻撃者が初期部分を制御できるようになります)。
詳細はオリジナルの解説https://blog.orange.tw/2018/10/および最終的なエクスプロイトhttps://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py
別の解説はhttps://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/
{% hint style="success" %}
AWSハッキングの学習と実践:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングの学習と実践:HackTricks Training GCP Red Team Expert (GRTE)
HackTricksのサポート
- サブスクリプションプランをチェック!
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- ハッキングトリックを共有するには、HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してください。