1。はじめに
Spring HeapdumpがShiro Keyを漏らし、したがってRCEを漏らし、脆弱な環境を構築しました。 GitHubアドレス:https://Github.com/p4r4d1se/heapdump_shiro_vuln
脆弱性の悪用条件:
Spring Shiro環境にはHeapdumpファイルの漏れと搾取可能なチェーンがあります。
2。脆弱性の原則
多くの大物は、シロ関連の脆弱性の原則とデバッグ分析を共有しています。ここでは詳しく説明しません。私は主にこの脆弱性環境を説明します:
(1)Springには実際にSpring Securityと呼ばれる独自のデフォルトのセキュリティフレームワークがありますが、Shiroの使用にはいくつかの開発が使用され、Spring SecuriyをShiroに置き換えます。この状況は珍しいことではありません。たとえば、RuoyiはSpring Shiroです。
(2)キーがある場合、シロの最新バージョンでさえ依然として脆弱性があり、多くの場合、開発、展開、その他の問題によりシロのキーが漏れます。
(3)Shiroが1.2.4を超えるバージョンでは、開発者の手動介入なしにキーがランダム生成に変更されます。このランダム生成は、Web環境が開始されるたびに再起動する前にキーが変更されないことです。 JVM仮想マシンメモリにあります。
(4)SpringのHeapdumpファイルは、JVM仮想マシンメモリからエクスポートされます。
要約すると、この組み合わせの脆弱性が作成されました。
3。脆弱性の実証
脆弱な環境を読み込んだ後、シロバージョンが1.8.0であることがわかります。
ポート8080で /アクチュエータ /heapdumpにアクセスして、heapdumpファイルを取得します。
シロのキーを取得するためによく使用する方法は2つあります。
(1)jdumpspider:https://github.com/whwlsfb/jdumpspider
このウィジェットは、Heapdumpの変動情報を自動的にクロールすることができますが、これはより便利です。欠点は、クロールリストにない情報を見逃す可能性があることです。
:javaを直接実行します-jar jdumpspider.jar heapdump変数情報を自動的に取得します。ここでは、Shirokeyを入手してください:(2)jvisualvm.exe:Java独自のツール、デフォルトパスはJDKディレクトリ/bin/jvisualvm.exeです。
このツールは、必要な情報を手動で見つけて、フィルターにorg.apache.shiro.web.mgt.cookieremembermemanagerを入力する必要があります。
Pythonスクリプトを使用して、Base64エンコードのShiroキーに変換します。Pythonスクリプトを使用して、Base64エンコードされたShiroキーに変換します。
base64をインポートします
インポート構造
print(base64.b64encode(struct.pack( 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)-115,33,59,24,112,44,124,56,110、-15,59,1、-41)))
サーバーを再起動して、shiroキーをもう一度取得します。キーが変更されたことがわかります。脆弱性の原則の3番目のポイントが検証されます。開始するたびに、ランダムキーが生成されます。
新しいキーに切り替えることは、引き続き使用できます。
元のリンクから転載:https://xz.aliyun.com/t/11908