本日は、安全でない1C:Enterprise 8.データベースを介してMS Windows Server 2016のローカル管理者権限を取得する方法を説明します。 最後に、ボーナスがあなたを待っています。
内部侵入テスト中、非常にまれな状況に直面しました。自動化された脆弱性スキャナーを使用して、お客様のネットワークで脆弱性は検出されませんでした。 お客様のDIB(情報セキュリティ部門)は、すべての資産を慎重に「バキューム」し、それによりほとんどの標準攻撃ベクトルを閉鎖しました。 いくつかのシナリオを実装し、最も興味深いものについて話すことができました。
MS SQL Serverの資格情報の取得
ネットワーク上のリソースをスキャンすると、サーバーのクラスター1C:Enterprise 8:が見つかりました。
このクラスターはパスワードで保護されておらず、Enterprise 1Cサーバーを管理するための標準コンソールを使用してクラスターに接続できました。
1Cサーバー管理コンソールの機能を使用すると、1Cサーバーを構成し、サーバー上で作成されたすべてのデータベースを表示するなど、インフォベースを操作できます。 したがって、このサーバーにあるインフォベースのリストが取得されました。
すべてのデータベースを分析した結果、perfデータベースはパスワードで保護されていないことがわかりました。
パスワードなしでperfデータベースにログインできます;デフォルトでは、ユーザーは管理者権限を持っています。 データベースを入力すると、1Cサーバーのパフォーマンスをテストするために設計された「TPC-1C負荷テスト」構成が含まれていることがわかります。
パフォーマンステストの構成では、データベースサーバーに接続するための資格情報を指定する必要があります。 資格情報はインフォベースに保存されます。 この場合、システム管理者はパフォーマンステストの実行後に資格情報を削除しませんでした。
問題が発生しました。パスワードは非表示です。 より良い解決策を考え出すことなく、「SQLパスワード」フィールドの「パスワードモード」プロパティを単純に無効にすることにしました。 これを行うには、コンフィギュレーターのモードで情報ベースを開きました。 次のスキーム「構成->サポート->サポートの構成」を使用して、構成内のフォームを変更できるように、構成がサポートから削除されました。
次に、資格情報が表示され、「SQLパスワード」フィールドの「パスワードモード」プロパティが無効になっているフォームを見つけました。
変更を保存してデバッグを開始したら、F5キーを押します。 構成を開始し、資格情報を使用してフォームを開くと、待望のパスワードが表示されました。
よくやった、半分はやった。
サーバー上のコマンドの実行にアクセスする
クレデンシャルの有効性を検証するために、Metasploit Frameworkのモジュール「auxiliary / scanner / mssql / mssql_login」を使用し、ユーザー名とパスワードが同じサーバーにあるMS SQL Serverに正常にアクセスしました。
デフォルトでは、saユーザーには最大限の権限があります。これにより、xp_cmdshell関数を使用してオペレーティングシステムコマンドを実行できます。 この機能をテストするには、Metasploit Frameworkの「mssql _exec」モジュールを使用します。
スクリーンショットでわかるように、ユーザーnt service \ mssqlserverのコンテキストでサーバー上でコマンドを実行できます。
システム権限の昇格
サーバーの特権を増やすために残っています。 これを行うには、Metasploit Frameworkの「exploit / windows / mssql / mssql_payload」モジュールを使用してmeterpreterセッションを開きます。
meterpreterコンソールが開いたら、シークレットモジュールをロードします。
シークレットモジュールを使用すると、ユーザートークンを盗むことができます。これにより、別のユーザーになりすまして、システム内の権限を増やすことができます。
上記のスクリーンショットでわかるように、興味のあるトークンは利用できません。
RottenPotatoエクスプロイトを使用して、特権トークンを使用可能にする必要があります。 トークンは短時間使用可能になります。チャンスを逃さないように非常に迅速に行動する必要があります。
リンクから RottenPotato エクスプロイトをダウンロードし、meterpreter を介してダウンロードします。
コマンド-execute -cH -f ./rottenpotato.exeでエクスプロイトを起動します。 新しいトークンが使用可能なトークンのリストに表示されていることがわかります-「NT AUTHORITY \ SYSTEM」コマンドimpersonate_token「NT AUTHORITY \\ SYSTEM」で切り替え、最終的にサーバーで最大の権限を取得します。
スクリーンショットは、特権を昇格させるプロセスを示しています。
すばらしい、システムは正常に侵害されました。
ボーナス
データベースサーバーに接続するための資格情報がインフォベースに保存されていないか、構成のない空のデータベースが検出されたとします。 それでは何をお願いしますか?
特にこの状況では、1C-Shell構成を作成しました。これにより、1Cサーバーが動作するUSR1CV8ユーザーのコンテキストで1Cサーバーでコマンドを実行できます。
1C-Shell構成をダウンロードします 。 Configuratorで見つかった情報ベースを開きます。
[管理]-[インフォベースをダウンロード]を選択し、1C-Shell.dtファイルを指定します。
注意! このインフォベース内のすべてのデータが削除されます!
新しい構成をロードした後、1Cデータベースを開きます。 KraudユーザーのMArS6Mパスワードを入力し、1Cサーバーでコマンドを実行する機会を得ます。
したがって、保護されていない情報ベースが見つかった場合は、すぐにシステムの特権を増やす段階に進みます。
推奨事項
- 1Cサーバークラスターの管理者のパスワードを設定します。
- 1Cインフォベースの特権ユーザーには強力なパスワードを使用します。
- データベースサーバーでsaユーザーを切断し、管理タスクを実行するには、sysadminロールを持つ別のアカウントを作成します。
- 新しい1C情報データベースの作成プロセスを規制します。
まとめ
このケースは、スキャナーのレポートだけに頼るべきではないことを明確に示しています。 専門家と連携して、インフラストラクチャのセキュリティを独立して評価します。