AWS - EC2 Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
EC2μ λν λ λ§μ μ 보λ λ€μμ νμΈνμΈμ:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
곡격μλ IAM μν μ μ°κ²°νμ¬ μΈμ€ν΄μ€λ₯Ό μμ±ν λ€μ μΈμ€ν΄μ€μ μ κ·Όνμ¬ λ©νλ°μ΄ν° μλν¬μΈνΈμμ IAM μν μ격 μ¦λͺ μ νμΉ μ μμ΅λλ€.
SSHλ₯Ό ν΅ν μ κ·Ό
μμ±λ ssh ν€(--key-name
)λ₯Ό μ¬μ©νμ¬ μ μΈμ€ν΄μ€λ₯Ό μ€νν λ€μ sshλ‘ μ μν©λλ€(μ ν€λ₯Ό μμ±νλ €λ©΄ ec2:CreateKeyPair
κΆνμ΄ νμν μ μμ΅λλ€).
μ¬μ©μ λ°μ΄ν°μμ rev shellμ ν΅ν μ κ·Ό
μ¬μ©μ λ°μ΄ν°(--user-data
)λ₯Ό μ¬μ©νμ¬ rev shellμ 보λ΄λ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μ€νν μ μμ΅λλ€. μ΄ λ°©λ²μΌλ‘ 보μ κ·Έλ£Ήμ μ§μ ν νμκ° μμ΅λλ€.
GuradDutyλ₯Ό μ¬μ©ν λ μΈμ€ν΄μ€ μΈλΆμμ IAM μν μ μ격 μ¦λͺ μ μ¬μ©ν κ²½μ° μ£ΌμνμΈμ:
AWS - GuardDuty Enumμ μ¬μ μν₯: κΈ°μ‘΄ μΈμ€ν΄μ€ νλ‘νμ μ°κ²°λ λͺ¨λ EC2 μν λ‘μ μ§μ μ μΈ κΆν μμΉ.
μ΄ κΆν μΈνΈλ₯Ό μ¬μ©νλ©΄ EC2 μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μ΄λ₯Ό ECS ν΄λ¬μ€ν°μ λ±λ‘ν μ μμ΅λλ€. μ΄λ κ² νλ©΄ ECS μλΉμ€κ° EC2 μΈμ€ν΄μ€ λ΄μμ μ€νλκ³ , κ·Έ μλΉμ€λ₯Ό μΉ¨ν¬νμ¬ (λ컀 컨ν μ΄λ) μ°κ²°λ ECS μν μ νμΉ μ μμ΅λλ€.
μ΄ μλ‘μ΄ EC2 μΈμ€ν΄μ€μμ ECS μλΉμ€λ₯Ό κ°μ λ‘ μ€ννλ λ°©λ²μ λ°°μ°λ €λ©΄ λ€μμ νμΈνμΈμ:
AWS - ECS Privescμ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμ§λ§ ecs:RegisterContainerInstance
κΆνμ΄ μλ κ²½μ°, ν΄λ¬μ€ν° λ΄μμ μΈμ€ν΄μ€λ₯Ό λ±λ‘νκ³ μ£Όμ μ²λ¦¬λ 곡격μ μνν μ μμ΅λλ€.
μ μ¬μ μν₯: μμ μ μ°κ²°λ ECS μν μ λν μ§μ μ μΈ κΆν μμΉ.
iam:PassRole
, iam:AddRoleToInstanceProfile
μ΄μ μλ리μ€μ μ μ¬νκ², μ΄λ¬ν κΆνμ κ°μ§ 곡격μλ μμλ μΈμ€ν΄μ€μ IAM μν μ λ³κ²½νμ¬ μλ‘μ΄ μ격 μ¦λͺ
μ νμ·¨ν μ μμ΅λλ€.
μΈμ€ν΄μ€ νλ‘νμ 1κ°μ μν λ§ κ°μ§ μ μμΌλ―λ‘, μΈμ€ν΄μ€ νλ‘νμ΄ μ΄λ―Έ μν μ κ°μ§κ³ μλ κ²½μ°(μΌλ°μ μΈ κ²½μ°) **iam:RemoveRoleFromInstanceProfile
**λ νμν©λλ€.
λ§μ½ μΈμ€ν΄μ€ νλ‘νμ μν μ΄ μκ³ κ³΅κ²©μκ° μ κ±°ν μ μλ€λ©΄, λ€λ₯Έ μ°ν λ°©λ²μ΄ μλ€. κ·Έλ μν μ΄ μλ μΈμ€ν΄μ€ νλ‘νμ μ°Ύκ±°λ μλ‘μ΄ κ²μ μμ±ν μ μλ€ (iam:CreateInstanceProfile
), κ·Έ μν μ ν΄λΉ μΈμ€ν΄μ€ νλ‘νμ μΆκ°νκ³ (μμ λ
Όμν λλ‘), μμλ μΈμ€ν΄μ€μ μμλ μΈμ€ν΄μ€ νλ‘νμ μ°κ²°ν μ μλ€:
λ§μ½ μΈμ€ν΄μ€μ μΈμ€ν΄μ€ νλ‘νμ΄ μλ€λ©΄ (ec2:AssociateIamInstanceProfile
) *
μ μ¬μ μν₯: λ€λ₯Έ EC2 μν λ‘μ μ§μ μ μΈ κΆν μμΉ(λΉμ μ AWS EC2 μΈμ€ν΄μ€λ₯Ό μμμν€κ³ μΆκ° κΆνμ΄λ νΉμ μΈμ€ν΄μ€ νλ‘ν μνλ₯Ό κ°μ ΈμΌ ν©λλ€).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)μ΄ κΆνμ μ¬μ©νλ©΄ μΈμ€ν΄μ€μ μ°κ²°λ μΈμ€ν΄μ€ νλ‘νμ λ³κ²½ν μ μμΌλ―λ‘ κ³΅κ²©μκ° μ΄λ―Έ μΈμ€ν΄μ€μ μ κ·Όν μ μλ€λ©΄, μ°κ²°λ μΈμ€ν΄μ€ νλ‘νμ λ³κ²½νμ¬ λ λ§μ μΈμ€ν΄μ€ νλ‘ν μν μ λν μ격 μ¦λͺ μ νμΉ μ μμ΅λλ€.
μΈμ€ν΄μ€ νλ‘νμ΄ μλ€λ©΄, μΈμ€ν΄μ€ νλ‘νμ μ κ±°ν μ μμ΅λλ€ (ec2:DisassociateIamInstanceProfile
) κ·Έλ¦¬κ³ μ°κ²°ν μ μμ΅λλ€. *
λλ μμλ μΈμ€ν΄μ€μ μΈμ€ν΄μ€ νλ‘νμ κ΅μ²΄ν©λλ€ (ec2:ReplaceIamInstanceProfileAssociation
). *
μ μ¬μ μν₯: λ€λ₯Έ EC2 μν λ‘μ μ§μ μ μΈ κΆν μμΉ(λΉμ μ AWS EC2 μΈμ€ν΄μ€λ₯Ό μμμν€κ³ μΆκ° κΆνμ΄λ νΉμ μΈμ€ν΄μ€ νλ‘ν μνλ₯Ό κ°μ ΈμΌ ν©λλ€).
ec2:RequestSpotInstances
,iam:PassRole
ec2:RequestSpotInstances
μ iam:PassRole
κΆνμ κ°μ§ 곡격μλ EC2 μν μ΄ μ°κ²°λ μ€ν μΈμ€ν΄μ€λ₯Ό μμ²νκ³ μ¬μ©μ λ°μ΄ν°μ rev shellμ ν¬ν¨ν μ μμ΅λλ€.
μΈμ€ν΄μ€κ° μ€νλλ©΄, κ·Έλ IAM μν μ νμΉ μ μμ΅λλ€.
ec2:ModifyInstanceAttribute
ec2:ModifyInstanceAttribute
κΆνμ κ°μ§ 곡격μλ μΈμ€ν΄μ€ μμ±μ μμ ν μ μμ΅λλ€. κ·Έ μ€μμ κ·Έλ μ¬μ©μ λ°μ΄ν°λ₯Ό λ³κ²½ν μ μμΌλ©°, μ΄λ μΈμ€ν΄μ€κ° μμμ λ°μ΄ν°λ₯Ό μ€ννλλ‘ λ§λ€ μ μμμ μλ―Έν©λλ€. μ΄λ EC2 μΈμ€ν΄μ€μ λν rev shellμ μ»λ λ° μ¬μ©λ μ μμ΅λλ€.
μμ±μ μΈμ€ν΄μ€κ° μ€μ§λμ΄ μμ λλ§ μμ ν μ μμΌλ―λ‘, κΆν ec2:StopInstances
λ° **ec2:StartInstances
**κ° νμν©λλ€.
Potential Impact: μμ±λ μΈμ€ν΄μ€μ μ°κ²°λ λͺ¨λ EC2 IAM μν λ‘ μ§μ μ μΈ κΆν μμΉ.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
λ° ec2:ModifyLaunchTemplate
κΆνμ κ°μ§ 곡격μλ μ¬μ©μ λ°μ΄ν°μ rev shellμ΄ ν¬ν¨λ μ Launch Template λ²μ μ μμ±νκ³ , κΈ°λ³Έ λ²μ μ λ³κ²½νλ©°, μ΅μ λλ κΈ°λ³Έ λ²μ μ μ¬μ©νλλ‘ κ΅¬μ±λ Autoscaler κ·Έλ£Ήμ λͺ¨λ μΈμ€ν΄μ€κ° ν΄λΉ ν
νλ¦Ώμ μ¬μ©νμ¬ μ¬μ€νλκ³ rev shellμ μ€ννκ² λ©λλ€.
μ μ¬μ μν₯: λ€λ₯Έ EC2 μν λ‘μ μ§μ μ μΈ κΆν μμΉ.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
κΆνμ κ°μ§ 곡격μλ IAM μν κ³Ό rev shellμ μ¬μ©μ λ°μ΄ν°μ ν¬ν¨ν Launch Configurationμ μμ±ν μ μμΌλ©°, κ·Έ ꡬμ±μμ autoscaling κ·Έλ£Ήμ μμ±νκ³ rev shellμ΄ IAM μν μ νμ·¨ν λκΉμ§ κΈ°λ€λ¦΄ μ μμ΅λλ€.
μ μ¬μ μν₯: λ€λ₯Έ EC2 μν λ‘μ μ§μ μ μΈ κΆν μμΉ.
!autoscaling
κΆν μ§ν© ec2:CreateLaunchTemplate
λ° autoscaling:CreateAutoScalingGroup
λ IAM μν λ‘ κΆνμ μμΉμν€κΈ°μ μΆ©λΆνμ§ μμ΅λλ€. Launch Configuration λλ Launch Templateμ μ§μ λ μν μ μ°κ²°νλ €λ©΄ iam:PassRole
λ° ec2:RunInstances
κΆνμ΄ νμν©λλ€ (μ΄λ μλ €μ§ κΆν μμΉμ
λλ€).
ec2-instance-connect:SendSSHPublicKey
κΆν **ec2-instance-connect:SendSSHPublicKey
**λ₯Ό κ°μ§ 곡격μλ μ¬μ©μμκ² ssh ν€λ₯Ό μΆκ°νκ³ μ΄λ₯Ό μ¬μ©νμ¬ μ κ·Όν μ μμ΅λλ€ (μΈμ€ν΄μ€μ ssh μ κ·Ό κΆνμ΄ μλ κ²½μ°) λλ κΆνμ μμΉμν¬ μ μμ΅λλ€.
μ μ¬μ μν₯: μ€ν μ€μΈ μΈμ€ν΄μ€μ μ°κ²°λ EC2 IAM μν λ‘μ μ§μ μ μΈ κΆν μμΉ.
ec2-instance-connect:SendSerialConsoleSSHPublicKey
ec2-instance-connect:SendSerialConsoleSSHPublicKey
κΆνμ κ°μ§ 곡격μλ μ§λ ¬ μ°κ²°μ ssh ν€λ₯Ό μΆκ°ν μ μμ΅λλ€. μ§λ ¬ μ°κ²°μ΄ νμ±νλμ§ μμ κ²½μ°, 곡격μλ ec2:EnableSerialConsoleAccess
κΆνμ΄ νμν©λλ€.
μ§λ ¬ ν¬νΈμ μ°κ²°νκΈ° μν΄μλ κΈ°κ³ λ΄λΆμ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μμμΌ ν©λλ€.
μ΄ λ°©λ²μ μ΄λ₯Ό μ μ©νκΈ° μν΄ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μμμΌ νλ―λ‘ κΆν μμΉμ κ·Έλ€μ§ μ μ©νμ§ μμ΅λλ€.
μ μ¬μ μν₯: (λ§€μ° μ μ¦νκΈ° μ΄λ €μ) μ€ν μ€μΈ μΈμ€ν΄μ€μ μ°κ²°λ EC2 IAM μν λ‘μ μ§μ μ μΈ κΆν μμΉ.
describe-launch-templates
,describe-launch-template-versions
λ°μΉ ν
νλ¦Ώμ λ²μ κ΄λ¦¬κ° κ°λ₯νλ―λ‘, ec2:describe-launch-templates
λ° ec2:describe-launch-template-versions
κΆνμ κ°μ§ 곡격μλ μ΄λ₯Ό μ
μ©νμ¬ μ¬μ©μ λ°μ΄ν°μ μ‘΄μ¬νλ μ격 μ¦λͺ
κ³Ό κ°μ λ―Όκ°ν μ 보λ₯Ό λ°κ²¬ν μ μμ΅λλ€. μ΄λ₯Ό λ¬μ±νκΈ° μν΄, λ€μ μ€ν¬λ¦½νΈλ μ¬μ© κ°λ₯ν λ°μΉ ν
νλ¦Ώμ λͺ¨λ λ²μ μ λ°λ³΅ν©λλ€:
μμ λͺ
λ Ήμ΄μμ νΉμ ν¨ν΄(aws_|password|token|api
)μ μ§μ νκ³ μμ§λ§, λ€λ₯Έ μ νμ λ―Όκ°ν μ 보λ₯Ό κ²μνκΈ° μν΄ λ€λ₯Έ μ κ· ννμμ μ¬μ©ν μ μμ΅λλ€.
aws_access_key_id
μ aws_secret_access_key
λ₯Ό μ°Ύλλ€κ³ κ°μ νλ©΄, μ΄ μ격 μ¦λͺ
μ μ¬μ©νμ¬ AWSμ μΈμ¦ν μ μμ΅λλ€.
μ μ¬μ μν₯: IAM μ¬μ©μμκ² μ§μ μ μΈ κΆν μμΉ.
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training AWS Red Team Expert (ARTE) GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°: HackTricks Training GCP Red Team Expert (GRTE)