1Cを介してWindows Serverをハックする

画像

本日は、安全でない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サーバーでコマンドを実行する機会を得ます。

画像

したがって、保護されていない情報ベースが見つかった場合は、すぐにシステムの特権を増やす段階に進みます。

推奨事項



まとめ


このケースは、スキャナーのレポートだけに頼るべきではないことを明確に示しています。 専門家と連携して、インフラストラクチャのセキュリティを独立して評価します。

Source: https://habr.com/ru/post/J352566/


All Articles