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サーバーでコマンドを実行する機会を得ます。



画像






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



推奨事項





まとめ



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



All Articles