組み込みのアカウントとパスワードを使用してログインします
自分で構築した環境にはいくつか問題があるため、バージョンが高すぎるためかもしれません(奇妙な問題、ユーザーに権限がない)ので、現在は概念的な検証と脆弱性の原理の分析のみを行っています
ログインせずに/smartbi/vision/RMIServlet
インターフェース
対応する処理CheckIsLoggedFilter
クラスが
smartbi.freequery.filter.CheckIsLoggedFilter#doFilter
ここからはさらに詳細な分析が必要になる場合がありますが、まずリクエストのパスが「Yesの場合は/vision/RMIServlet
このブランチに入る」かどうかを判断し、次にwindowUnloading
リクエストボディに「で始まる文字列があるかどうか」を判断します。別のバイパス方法 関連します。ここでは分析しません
次に、POST メソッドまたは GET メソッドで取得したパラメータがあるかどうかを順に確認し、ないclassName
場合はmethodName
ここで判定があり、クラスやメソッドに対して認証操作を行い、trueであれば引き続きログインするかどうかの判定を行い、要件を満たしてfalseを返せばよいだけですFilterUtil.needToCheck
。
smartbi.util.FilterUtil#needToCheck
データベースからログインする操作も認証なしでアクセスできることに気づきました。
smartbi.usermanager.UserManagerModule
smartbi.usermanager.UserManagerModule#loginFromDB
smartbi.usermanager.SecurityServiceImpl#loginFromDB
ここでの直接比較はデータベースからクエリされたパスワードであるため、組み込みアカウントと MD5 パスワードを直接使用してログインできます。
サイバーセキュリティについて学ぶのに役立つ、完全な情報セットを無料で入手できます。
① サイバーセキュリティ学習成長パスのマインド マップ
② 60 以上の古典的なサイバーセキュリティ ツールキット
③ 100 以上の SRC 分析レポート
④ サイバーセキュリティの攻撃と防御技術に関する 150 以上の電子書籍
⑤ 最も権威のある CISSP 認定試験ガイド + クエスチョン バンク
⑥ 1800 ページを超える CTF 実践スキル マニュアル
⑦ ネットワーク セキュリティ企業の最新面接質問集 (解答含む)
⑧ APP クライアント セキュリティ テスト ガイド (Android+IOS)
管理者も正常にログインできます
元のログイン モードを使用してログインしないのはなぜですか? まず、元のログイン モードのログインでは、対応するアカウント番号とパスワードがわかりません。次に、元のログイン ロジックを簡単に分析します。
smartbi.usermanager.UserManagerModule#clickLogin
smartbi.usermanager.UserManagerModule#login
smartbi.usermanager.SecurityServiceImpl#login
主な処理ログイン ロジックはこの部分にあります
smartbi.usermanager.SecurityServiceImpl#loginDB
smartbi.usermanager.UserBO#isPasswordValidate
ここで比較する場合は、まずString passwordInLib = this.user.getPassword();
データベースからユーザーのパスワードを検索し、ユーザーのパスワードの先頭の最初の文字に従って処理および比較します。
データベース内の対応する値が であることはすでにわかっています0a
が、どの値にも対応する MD5 値がないa
ため、組み込みユーザーは正常にログインできません
バグの修正
http://192.168.222.133:18080/smartbi/vision/sysmonitor.jsp
同じPOCはもう正常に使用できません。修復されたコードの内容に注目してください