ホームページ >PHPフレームワーク >ThinkPHP >thinkphp6に任意ファイル作成の脆弱性が再発

thinkphp6に任意ファイル作成の脆弱性が再発

藏色散人
藏色散人転載
2020-01-20 14:06:365391ブラウズ

01 背景

QiAnXin は最近、ThinkPHP 6.0 の「任意の」ファイル作成の脆弱性に関するセキュリティ リスク通知をリリースしました。これに応じて、DYSRC は直ちに脆弱性を分析し、脆弱性を再現することに成功しました。

脆弱性の範囲: top-think/framework 6.x

02 場所の問題

ベース任意のファイルの作成と最近のコミット履歴から、1bbe75019 がこの問題に対するパッチであると推測できます。このパッチでは、セッション ID が文字と数字のみで構成されるように制限されており、問題がより明確になっていることがわかります。

thinkphp6に任意ファイル作成の脆弱性が再発

03 原理分析

上記の問題をまず脇に置き、thinkphp がセッションをどのように保存するかを見てみましょう。

システムはインターフェース thinkcontractSessionHandlerInterface を定義します

thinkphp6に任意ファイル作成の脆弱性が再発

SessionHandlerInterface::write メソッドはセッション データのローカライズ時に実行され、システムはセッション データのローカライズの最後に自動的に実行します。各リクエストを実装します。

thinksessiondriverFile クラスがどのように実装されるかを見てみましょう。

thinkphp6に任意ファイル作成の脆弱性が再発

まず getFileName を通じて $sessID に基づいてファイル名を生成し、次に writeFile を使用してファイルを書き込みます。

getFileName を実行し、受信した $sessID をファイル名として直接連結します。 $sessIDは制御可能であるため、ファイル名も制御可能です。

thinkphp6に任意ファイル作成の脆弱性が再発

04 デモ

分析のこの時点で、脆弱性プロセス全体は基本的に明らかです。現地での実証結果は以下の通りです。

thinkphp6に任意ファイル作成の脆弱性が再発

php 中国語 Web サイト、多数の無料の thinkphp 入門チュートリアル 、オンライン学習へようこそ!

以上がthinkphp6に任意ファイル作成の脆弱性が再発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は斗鱼安全应急响应中心で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。