AWS - EC2 Privesc
EC2
Kwa maelezo zaidi kuhusu EC2 angalia:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Mshambuliaji anaweza kuunda na mfano akifunga jukumu la IAM na kisha kufikia mfano huo ili kuiba akidi za jukumu la IAM kutoka kwa kiunganishi cha metadata.
Fikia kupitia SSH
Kimbia mfano mpya ukitumia funguo za ssh zilizoundwa (--key-name
) na kisha ssh ndani yake (ikiwa unataka kuunda mpya unaweza kuhitaji kuwa na ruhusa ec2:CreateKeyPair
).
Upatikanaji kupitia rev shell katika data ya mtumiaji
Unaweza kuendesha mfano mpya ukitumia data ya mtumiaji (--user-data
) ambayo itakutumia rev shell. Huhitaji kubainisha kundi la usalama kwa njia hii.
Be careful with GuradDuty if you use the credentials of the IAM role outside of the instance:
AWS - GuardDuty EnumPotential Impact: Direct privesc to a any EC2 role attached to existing instance profiles.
Privesc to ECS
With this set of permissions you could also create an EC2 instance and register it inside an ECS cluster. This way, ECS services will be run in inside the EC2 instance where you have access and then you can penetrate those services (docker containers) and steal their ECS roles attached.
Ili kujifunza jinsi ya kulazimisha huduma za ECS kufanyika katika hii EC2 mpya angalia:
AWS - ECS PrivescIkiwa huwezi kuunda mfano mpya lakini una ruhusa ecs:RegisterContainerInstance
unaweza kuwa na uwezo wa kujiandikisha mfano ndani ya klasta na kutekeleza shambulio lililozungumziwa.
Athari Zinazoweza Kutokea: Privesc moja kwa moja kwa majukumu ya ECS yaliyounganishwa na kazi.
iam:PassRole
, iam:AddRoleToInstanceProfile
iam:PassRole
, iam:AddRoleToInstanceProfile
Kama ilivyo katika hali ya awali, mshambuliaji mwenye ruhusa hizi anaweza kubadilisha jukumu la IAM la mfano ulioathirika ili aweze kuiba akidi mpya.
Kama profaili ya mfano inaweza kuwa na jukumu 1 tu, ikiwa profaili ya mfano tayari ina jukumu (hali ya kawaida), utahitaji pia iam:RemoveRoleFromInstanceProfile
.
Ikiwa profaili ya mfano ina jukumu na mshambuliaji hawezi kuondoa hiyo, kuna njia nyingine. Anaweza kupata profaili ya mfano bila jukumu au kuunda mpya (iam:CreateInstanceProfile
), kuongeza jukumu kwa hiyo profaili ya mfano (kama ilivyojadiliwa hapo awali), na kuunganisha profaili ya mfano iliyovunjika kwa mfano uliovunjika:
Ikiwa mfano hauna profaili yoyote ya mfano (
ec2:AssociateIamInstanceProfile
) *
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa jukumu tofauti la EC2 (unahitaji kuwa umepata udhibiti wa mfano wa AWS EC2 na ruhusa za ziada au hali maalum ya wasifu wa mfano).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)Kwa ruhusa hizi inawezekana kubadilisha wasifu wa mfano uliohusishwa na mfano hivyo ikiwa shambulio tayari lilikuwa na ufikiaji wa mfano atakuwa na uwezo wa kuiba hati za kuingia kwa majukumu zaidi ya wasifu wa mfano kwa kubadilisha ule uliohusishwa nao.
Ikiwa ina wasifu wa mfano, unaweza kuondoa wasifu wa mfano (
ec2:DisassociateIamInstanceProfile
) na kuunganisha hiyo *
au badilisha profaili ya mfano ya mfano ulioathirika (
ec2:ReplaceIamInstanceProfileAssociation
). *
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa jukumu tofauti la EC2 (unahitaji kuwa umepata udhibiti wa mfano wa AWS EC2 na ruhusa za ziada au hali maalum ya wasifu wa mfano).
ec2:RequestSpotInstances
,iam:PassRole
ec2:RequestSpotInstances
,iam:PassRole
Mshambuliaji mwenye ruhusa ec2:RequestSpotInstances
naiam:PassRole
anaweza kuomba Spot Instance yenye Jukumu la EC2 lililounganishwa na rev shell katika data ya mtumiaji.
Mara mfano unapokimbia, anaweza kuiba jukumu la IAM.
ec2:ModifyInstanceAttribute
ec2:ModifyInstanceAttribute
Mshambuliaji mwenye ec2:ModifyInstanceAttribute
anaweza kubadilisha sifa za instances. Miongoni mwao, anaweza kubadilisha data ya mtumiaji, ambayo ina maana kwamba anaweza kufanya instance ikimbie data isiyo na mpangilio. Hii inaweza kutumika kupata rev shell kwa instance ya EC2.
Kumbuka kwamba sifa zinaweza tu kubadilishwa wakati instance imezimwa, hivyo idhini ec2:StopInstances
na ec2:StartInstances
.
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa yoyote EC2 IAM Role iliyoambatanishwa na mfano ulioanzishwa.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
Mshambuliaji mwenye ruhusa ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
na ec2:ModifyLaunchTemplate
anaweza kuunda toleo jipya la Template ya Uzinduzi lenye rev shell katika data ya mtumiaji na EC2 IAM Role yoyote juu yake, kubadilisha toleo la kawaida, na kikundi chochote cha Autoscaler kilichotumia hiyo Template ya Uzinduzi ambayo ime pangwa kutumia toleo jipya au toleo la kawaida itafanya kurejesha mifano ikitumia hiyo template na itatekeleza rev shell.
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa jukumu tofauti la EC2.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
Mshambuliaji mwenye ruhusa autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
anaweza kuunda Mkonfigu wa Uzinduzi na Jukumu la IAM na rev shell ndani ya data ya mtumiaji, kisha kuunda kundi la autoscaling kutoka kwa mkonfigu huo na kusubiri rev shell kuiba Jukumu la IAM.
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa jukumu tofauti la EC2.
!autoscaling
!autoscaling
Seti ya ruhusa ec2:CreateLaunchTemplate
na autoscaling:CreateAutoScalingGroup
hazitoshi kupandisha mamlaka kwa jukumu la IAM kwa sababu ili kuunganisha jukumu lililoainishwa katika Mipangilio ya Uzinduzi au katika Kigezo cha Uzinduzi unahitaji ruhusa iam:PassRole
na ec2:RunInstances
(ambayo ni privesc inayojulikana).
ec2-instance-connect:SendSSHPublicKey
ec2-instance-connect:SendSSHPublicKey
Mshambuliaji mwenye ruhusa ec2-instance-connect:SendSSHPublicKey
anaweza kuongeza ufunguo wa ssh kwa mtumiaji na kuutumia kuufikia (ikiwa ana ufikiaji wa ssh kwa mfano) au kupandisha mamlaka.
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa majukumu ya EC2 IAM yaliyounganishwa na mifano inayotembea.
ec2-instance-connect:SendSerialConsoleSSHPublicKey
ec2-instance-connect:SendSerialConsoleSSHPublicKey
Mshambuliaji mwenye ruhusa ec2-instance-connect:SendSerialConsoleSSHPublicKey
anaweza kuongeza ufunguo wa ssh kwenye muunganisho wa serial. Ikiwa serial haijawashwa, mshambuliaji anahitaji ruhusa ec2:EnableSerialConsoleAccess
ili kuiwasha.
Ili kuungana na bandari ya serial unahitaji pia kujua jina la mtumiaji na nenosiri la mtumiaji ndani ya mashine.
Njia hii si ya manufaa sana kwa privesc kwani unahitaji kujua jina la mtumiaji na nenosiri ili kuweza kuitumia.
Madhara Yanayoweza Kutokea: (Siyo rahisi kuthibitisha) Privesc moja kwa moja kwa EC2 IAM roles zilizounganishwa na mifano inayotumika.
describe-launch-templates
,describe-launch-template-versions
describe-launch-templates
,describe-launch-template-versions
Kwa kuwa templates za uzinduzi zina toleo, mshambuliaji mwenye ruhusa ec2:describe-launch-templates
na ec2:describe-launch-template-versions
anaweza kuzitumia hizi kugundua taarifa nyeti, kama vile akidi zilizopo katika data ya mtumiaji. Ili kufanikisha hili, skripti ifuatayo inarudiarudia kupitia matoleo yote ya templates za uzinduzi zinazopatikana:
Katika amri zilizo hapo juu, ingawa tunabainisha mifumo fulani (aws_|password|token|api
), unaweza kutumia regex tofauti kutafuta aina nyingine za taarifa nyeti.
Kukisia tunapata aws_access_key_id
na aws_secret_access_key
, tunaweza kutumia akreditivu hizi kuthibitisha kwa AWS.
Athari Zinazoweza Kutokea: Kuongezeka kwa haki moja kwa moja kwa mtumiaji wa IAM.
Marejeleo
Last updated