写在前面#
学習と研究のためにのみ使用し、コミュニティの合意に反する攻撃行為は行わないでください。
分析#
フロントエンド#
コンソールを使用して、ウェブサイトが GZTimeWalker のGZCCTFプロジェクトの v0.15.4 バージョンを使用していることがわかります。サイトは最新のリリースである v0.15.5 にはアップデートされていませんが、新しいバージョンはいくつかの小さなバグの修正のみであり、大規模なセキュリティ修正はまだ行われていないため、フロントエンドは安全です。
バックエンド#
GZCCTF デプロイメントドキュメントを読んだ後、このプロジェクトのデプロイ方法が k8s と Docker のハイブリッド方式であることがわかりました。docker-compose.yml の分析により、このプロジェクトのデプロイに使用される Docker イメージはgztime/gzctfであり、最新のタグを選択して分析すると、このイメージは 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 をアップグレードすることをお勧めします。また、SSH のアクセスを制限するために特定の IP を制限したり、仮想ローカルエリアネットワークのソリューションを採用することもできます。
-
上流リポジトリとの同期を定期的に保ち、エスケープを防止するために定期的なチェックを行うことをお勧めします。
-
ドメインをバインドし、Nginx などを使用して Docker または K8S のポートにリバースプロキシを設定し、CDN を適用してサーバーの実際の IP を隠すことをお勧めします。また、中間者攻撃やデータの盗聴を防ぐために HTTPS 暗号化を採用することもできます。