写在前面#
学習と研究のためにのみ使用し、コミュニティの合意に反する攻撃行為は行わないでください。
分析#
フロントエンド#
コンソールを使用して、ウェブサイトが GZTimeWalker のGZCCTFプロジェクトの v0.15.4 バージョンを使用していることがわかりました。ウェブサイトは最新のリリースである v0.15.5 にはアップデートされていませんが、新しいバージョンはいくつかの小さなバグ修正のみであり、大規模なセキュリティ修正はまだ行われていないため、フロントエンドは安全です。
バックエンド#
GZCCTF デプロイメントドキュメントを読んだ後、このプロジェクトのデプロイ方法は k8s と Docker のハイブリッド方式であることがわかりました。docker-compose.yml の分析により、このプロジェクトのデプロイに使用される Docker イメージはgztime/gzctfであり、latest タグを選択して分析すると、このイメージは Debian ベースでパッケージ化されており、ASPNET と.NET 7.0.9 を逆プロキシとして使用しています。このバージョンの.NET は最近リリースされたものであり、Docker のエスケープの難易度は非常に高いため、バックエンドの防御は安全です。
ポートとシステム#
テストの結果、サーバーはポート 80 と 22 のみを開放していることがわかりました。そのうちの 22 ポートは SSH サービスに使用されており、OpenSSH 8.2p1 サーバーが使用されています。また、80 ポートの逆プロキシには Microsoft Kestrel と ASPNET が使用されています。TTL などのパケットの送受信の詳細を分析することで、サーバーのシステムは Ubuntu 20.04 であると推測されます。
OpenSSH 8.2p1 に影響を与える CVE についての分析を行った結果、SSH へのアクセス権限やファイルの書き込み権限を持っている場合に特権昇格やコードインジェクションが可能となる 2 つの CVE(CVE-2020-12062、CVE-2020-15778)と、SSH プロキシトンネルの使用や一般的でない設定に関連する 4 つの CVE(CVE-2021-28041、CVE-2021-36368、CVE-2021-41617、CVE-2023-28531)が特定されました。これらの攻撃は SSH の一般ユーザーアクセス権限を取得していない場合には実行することはできませんが、できるだけ早く SSH を更新することをおすすめします。
IP 部分#
検索により、IP の所在地は HK であり、リスクレベルは低いことがわかりました。おそらくデータセンターのホスティングやネイティブの ISP プロバイダーである可能性がありますが、内部ネットワークマッピングの可能性も排除できません。ドメインがバインドされていないため、公開 IP と HTTP 1.1 のプレーンテキストが使用されています。特定の地域で特別な状況が存在するため、大量の機密語句を使用して重要なブロック機構をトリガーする可能性があります。これにより、一部の地域では IP を直接使用してサーバーにアクセスできなくなる可能性があります。
結論と提案#
-
現在のセキュリティ状況はまだ良好ですが、潜在的なリスクが存在します。
-
古いバージョンの OpenSSH の脆弱性が将来的に悪用される可能性に備えて、OpenSSH をアップグレードすることをおすすめします。また、特定の IP を制限するなど、SSH のアクセスを制限する措置を取ることもできます。
-
上流リポジトリとの同期を定期的に保ち、エスケープを防止するために定期的なチェックを行うことをおすすめします。
-
ドメインをバインドし、Nginx などを使用して Docker や K8S のポートを逆プロキシし、CDN を適用してサーバーの実際の IP を隠すことをおすすめします。また、中間者攻撃やデータの盗聴を防ぐために HTTPS 暗号化を使用することもできます。