私たち自身の実践による侵入テストの別の例

読者の皆さん、こんにちは。 長い間、私は自分の練習からペンテストの例を書いていませんでしたが、それを修正する時です。 注文は1つだけで、その後十分な時間が経過し、クライアントはネットワーク上で情報を公開することを許可しましたが、もちろん、会社の名前、従業員の名前などについては言及せずに、多くの時間をかけないために、すべてを簡潔に述べようとします水。



ある晴れた日、プロバイダーXのセキュリティをテストするための注文を受けました。テストの目的は、外部ネットワークからキャンペーンのローカルネットワークにアクセスし、少なくともある程度の商業的価値を提供する情報にアクセスすることです。 初期データは組織のWebサイトです(site.comとして想像してみましょう)。



すべては、公式サイトと同じサブネットにあるマシンの検索から始まりました。 そのようなホストが10個見つかりました。 すぐに掘り下げることは何もありませんでした:外に見えるサービスはすべて最新バージョンのもので、ユーザー名/パスワードの一般的な辞書によってブルートに屈したり、それを無効にしたりしませんでした(IPによる禁止、ログイン試行間の大きな遅延) IPを介して、ブルートフォースは疑わしいディレクトリやファイルを見つけませんでした。



次に、Google、Bing、および数人のバスターの助けを借りて、site.comサブドメインのリストがコンパイルされました。 かつては別のサーバー上で、プロバイダーがWebホスティングサービスを提供していたことが判明しました。 シンプルな条件、少額の手数料、ギフトとしての第3レベルのドメイン。 これらのドメインの多くは今日まで機能しています。



これらのサイトのいずれかでこれらのサイトを表示すると、RCEの脆弱性(リモートコード実行)を含む非常に古いバージョン2.0.15のphpBBフォーラムが発見されました。 この脆弱性はすぐに悪用され、シェルがフォーラムディレクトリの1つに注がれました。 ただし、各クライアントのPHP設定では、open_basedirオプションがオンになっており、その作業ディレクトリが示されているため、インタープリターのアクションが制限されていました。 Safe_modeも含まれています。



しかし、この状況から抜け出す方法がありました。 phpinfo()で調べたところ、パス「/ usr / bin /」を持つsafe_mode_exec_dirオプションが見つかりました。 判明したように、管理者は、imagemagickバイナリへのアクセスが必要なクライアントの1人のリクエストでこの許可を入力しました。 もちろん、perlも/ usr / binにありました。 そのため、システム()経由のホストで、パールバーバックドアがすぐに起動され、シェルと同じディレクトリに注がれました。



私の内部にはわずかな失望がありました-このサーバーは会社のローカルネットワークに接続されていませんでしたが、それに対する砲撃はすでに何かでした。 さらに、権利には特別な区別はなく、デプロイされたすべてのホストのWebディレクトリを簡単にさまよいました。 このサーバーからの情報を処理するのに約2日かかりました。 データベース、ホストされたサイトの管理者、ユーザーなどからのすべてのパスワードは、ある種のテストプロジェクトに遭遇し、管理者の1人によって実行され、特権ログインとパスワードを含むことを期待して収集されました。



期待が叶い、最終的に管理者が残した2つのプロジェクトを見つけました。 1つ目は会社のメインサイトの古いバージョンのコピーで、2つ目はベータホストで、完全な公開前に同じサイトの新しいバージョンをホストしていました。 そこにも会社の従業員がユーザーと話し合い、アドバイスを与え、ニュースを広めるフォーラムがありました。 すべてのハッシュはすぐにマージされ、ブルートになりました。



また、古いバージョンの個人アカウントのスクリプトが見つかりました。ユーザーはこれを使用して、アカウントの統計を確認し、料金プランを変更できます。 新しいバージョンはベータホストでは確認されませんでしたが、古いバージョンにはPostgreSQLへのアクセスの実際の詳細が含まれていたため、外部接続ではアクセスできませんでした。 私がいたホスト上のpgsqlクライアントがインストールされていません。 Perlには対応するモジュールのみがありました(古いLCのスクリプトはそれに書かれていました)。 ユーザーからsqlクエリを受け取り、その結果を読み取り可能な形式で表示する同じ小さなコンソールユーティリティを作成する必要がありました。



その助けを借りて、データベースに接続してクライアントベースに到達しました。 特に、インターネットに接続するためのユーザーログインとパスワードを含むテーブル。 その中で、管理者アカウントを見つけたいと思っていました。 理論的には、彼らはテーブルの一番最初にいたはずです。 しかし、すべてがはるかにシンプルであることが判明しました。 クライアントのログインは数字のセットで構成されていましたが、特別なアカウントの場合はアルファベット順でした。 幸いなことに、パスワードは平文で保存されており、ブラシをかける必要はありませんでした。 収集されたデータは、既に構成されているパスワードに追加され、特権ユーザーのユーザー名/パスワードのリストを受け取りました。これは、他のサーバーにアクセスするのに役立ちます。



先に見つかったフォーラムのいくつかの管理アカウントが、現在のサイトのフォーラムの管理パネルに近づきました。 それはIPB3であり、管理パネルからシェルを注ぐことは難しくありませんでした。 現在のスタッフアカウントのリストは、私が持っているものと照合してチェックされました。 2つの新しいログインが表示され、そのハッシュはすぐに検索に行きました。 この間にスタックすることができなかったハッシュで、私はより簡単に行動しました。 フォーラムコードにバックドアが組み込まれ、興味のあるログインの入力パスワードが記録され、これらのユーザーのセッションがデータベースから削除されたため、各ユーザーは再度認証を受ける必要がありました。 翌日の終わりまでに、管理者向けの有効なログインとパスワードのリストがさらにいくつかのエントリだけ増えました。 それを使用する時間です。



シェルを取得することができた最初のホストでターゲットを選択するために、nmapが構築され、外部からアクセスできるがそれらと同じネットワーク上にあるサーバーに代わって同じホストをすべてスキャンしました。 これにより、結果が得られました。インターネットからのアクセスがなかった新しいサービスが「表面化」しました。



その後、Hydraが組み立てられ、10台すべてのサーバーのSSHブルート(私はそれから始めることにしました)が開始されました。 これにより、3つの追加サーバーにアクセスできました。 これで、10のうち5で足場を得ることができました。しかし、その1つが会社のローカルネットワークに接続されていたので、これを行う必要はありませんでした。



同じNmapとHydraを展開して、LANを探索し始めました。 多くの興味深いものが見つかりましたが、最初の注意は内部FTPサーバーとOpen-E NAS-XSR管理Webパネル(ファイルストレージ)に向けられました。 FTPはすぐに野bru人になりましたが、Open-E NAS-XSRでは、この製品を見たことがないのでGoogleに乗り込みました。



そこでは、一般的な情報に加えて、デフォルトの管理パスワードが見つかりました。おそらく既に推測したように、検出されたコントロールパネルに移動しました。 これには、smb-storageディレクトリのリストとそこにアクセスしたユーザーの名前が含まれていました。 Hydraは、これらのログインを介したsmbアクセスにはパスワードがないと言って、再び驚きました。 外部ネットワークからアクセス可能なサーバーで3proxyを使用して、ポートを「ボール」に転送し、マシンから接続して、ランダムに選択したいくつかのdocファイルをダウンロードし、必要な証拠として顧客に転送しました。



リソースを管理するときは注意して、みんなのために楽しい週を過ごしてください:)



All Articles