ホームページ >PHPフレームワーク >ThinkPHP >thinkphp6に任意ファイル作成の脆弱性が再発
01 背景
QiAnXin は最近、ThinkPHP 6.0 の「任意の」ファイル作成の脆弱性に関するセキュリティ リスク通知をリリースしました。これに応じて、DYSRC は直ちに脆弱性を分析し、脆弱性を再現することに成功しました。
脆弱性の範囲: top-think/framework 6.x
02 場所の問題
ベース任意のファイルの作成と最近のコミット履歴から、1bbe75019 がこの問題に対するパッチであると推測できます。このパッチでは、セッション ID が文字と数字のみで構成されるように制限されており、問題がより明確になっていることがわかります。
03 原理分析
上記の問題をまず脇に置き、thinkphp がセッションをどのように保存するかを見てみましょう。
システムはインターフェース thinkcontractSessionHandlerInterface を定義します
SessionHandlerInterface::write メソッドはセッション データのローカライズ時に実行され、システムはセッション データのローカライズの最後に自動的に実行します。各リクエストを実装します。
thinksessiondriverFile クラスがどのように実装されるかを見てみましょう。
まず getFileName を通じて $sessID に基づいてファイル名を生成し、次に writeFile を使用してファイルを書き込みます。
getFileName を実行し、受信した $sessID をファイル名として直接連結します。 $sessIDは制御可能であるため、ファイル名も制御可能です。
04 デモ
分析のこの時点で、脆弱性プロセス全体は基本的に明らかです。現地での実証結果は以下の通りです。
php 中国語 Web サイト、多数の無料の thinkphp 入門チュートリアル 、オンライン学習へようこそ!
以上がthinkphp6に任意ファイル作成の脆弱性が再発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。