LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
ローカルファイルインクルージョンを見つけた場合、セッションがない場合でも、session.auto_start
がOff
であっても、session.upload_progress.enabled
がOn
であり、multipart POSTデータにPHP_SESSION_UPLOAD_PROGRESS
を提供すると、PHPはセッションを有効にします。
注意してください、**PHP_SESSION_UPLOAD_PROGRESS
**を使用すると、セッション内のデータを制御できます。したがって、セッションファイルを含めると、制御できる部分(例えば、phpシェルコード)を含めることができます。
インターネット上のほとんどのチュートリアルは、デバッグ目的でsession.upload_progress.cleanup
をOff
に設定することを推奨しています。しかし、PHPのデフォルトのsession.upload_progress.cleanup
は依然としてOn
です。これは、セッション内のアップロード進行状況ができるだけ早くクリーンアップされることを意味します。したがって、これはレースコンディションになります。
この技術がコメントされた元の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/にあります。
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)