AWS - Lambda 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)
lambda рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
AWS - Lambda Enumiam:PassRole
, lambda:CreateFunction
, (lambda:InvokeFunction
| lambda:InvokeFunctionUrl
)iam:PassRole
, lambda:CreateFunction
, рдФрд░ lambda:InvokeFunction
рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╡реЗ рдПрдХ рдирдпрд╛ Lambda рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдПрдХ рдореМрдЬреВрджрд╛ IAM рднреВрдорд┐рдХрд╛ рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрд╕ рднреВрдорд┐рдХрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдорд┐рд▓рддреА рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд┐рд░ рдЗрд╕ Lambda рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ rev shell)ред
рдПрдХ рдмрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯрдЕрдк рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ AWS API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Lambda рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрдЪреНрдЫрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ Lambda рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд IAM рднреВрдорд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рдкрд╣реБрдБрдЪ рдХреЗ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред\
рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ rev shell рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЯреЛрдХрди рдЪреБрд░рд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЖрдк рд▓реИрдореНрдмреНрдбрд╛ рднреВрдорд┐рдХрд╛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╣реА рд╣реИрдВред рдпрджрд┐ рд▓реИрдореНрдмреНрдбрд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдереАрдВ, рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ lambda рдХреЗ рднреВрдорд┐рдХрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд▓реАрдХ рдХрд┐рдП рдЬрд╛рдПрдВред рдпрд╣ Network isolated Lambdas рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдЬреНрдЮрд╛рдд рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЛрдб рдЖрдкрдХреЛ lambda рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдзреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд▓реАрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдордирдорд╛рдиреЗ рд▓реИрдореНрдмреНрдбрд╛ рд╕реЗрд╡рд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдкреНрд░рд┐рд╡реЗрд╕реНрдХред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рднрд▓реЗ рд╣реА рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ lambda:InvokeAsync
рдЕрдкрдиреЗ рдЖрдк aws lambda invoke-async
рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛, рдЖрдкрдХреЛ lambda:InvokeFunction
рднреА рдЪрд╛рд╣рд┐рдПред
iam:PassRole
, lambda:CreateFunction
, lambda:AddPermission
рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рддрд░рд╣, рдЖрдк lambda:AddPermission
рдЕрдиреБрдорддрд┐ рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдиреЗ рд▓рд┐рдП lambda:InvokeFunction
рдЕрдиреБрдорддрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдордирдорд╛рдиреЗ рд▓реИрдореНрдмреНрдбрд╛ рд╕реЗрд╡рд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐ред
iam:PassRole
, lambda:CreateFunction
, lambda:CreateEventSourceMapping
iam:PassRole
, lambda:CreateFunction
, рдФрд░ lambda:CreateEventSourceMapping
рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ dynamodb:PutItem
рдФрд░ dynamodb:CreateTable
) рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рднрд▓реЗ рд╣реА рдЙрдирдХреЗ рдкрд╛рд╕ lambda:InvokeFunction
рди рд╣реЛред
рд╡реЗ рджреБрд╖реНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдореМрдЬреВрджрд╛ IAM рднреВрдорд┐рдХрд╛ рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВред
рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдореМрдЬреВрджрд╛ DynamoDB рддрд╛рд▓рд┐рдХрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрд╡реЗрдВрдЯ рд╕реНрд░реЛрдд рдореИрдкрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рд╕реЗрдЯрдЕрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирдП рдЖрдЗрдЯрдо рдХреЗ рдкреНрд░рд╡реЗрд╢ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╣реЛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдкрд╛рд╕ рдХреА рдЧрдИ IAM рднреВрдорд┐рдХрд╛ рдХреЗ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ред
рдпрджрд┐ DynamoDB рдкрд╣рд▓реЗ рд╕реЗ AWS рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ Lambda рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рд╕реНрд░реЛрдд рдореИрдкрд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ DynamoDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреА:
рдЕрдм рдпрд╣ рд╕рдВрднрд╡ рд╣реИ Lambda рдлрд╝рдВрдХреНрд╢рди рдХреЛ DynamoDB рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдПрдХ рдЗрд╡реЗрдВрдЯ рд╕реНрд░реЛрдд рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдХрд░:
Lambda рдлрд╝рдВрдХреНрд╢рди рдХреЛ DynamoDB рд╕реНрдЯреНрд░реАрдо рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдХреЗ, рд╣рдорд▓рд╛рд╡рд░ DynamoDB рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдХреЗ Lambda рдХреЛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ DynamoDB рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдбрд╛рд▓рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реИрдореНрдмреНрдбрд╛ рд╕реЗрд╡рд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдкреНрд░рд┐рд╡реЗрд╕реНрдХред
lambda:AddPermission
рдЗрд╕ рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЕрдкрдиреЗ рд▓рд┐рдП (рдпрд╛ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП) рдХреЛрдИ рднреА рдЕрдиреБрдорддрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдЖрдзрд╛рд░рд┐рдд рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХреЗ):
рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡: рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рд▓реИрдореНрдмреНрдбрд╛ рд╕реЗрд╡рд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдкреНрд░рд┐рд╡реЗрд╕реНрдХред
lambda:AddLayerVersionPermission
рдЗрд╕ рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЕрдкрдиреЗ рд▓рд┐рдП (рдпрд╛ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП) рдЕрдиреБрдорддрд┐ lambda:GetLayerVersion
рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рд▓реЗрдпрд░ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдпрд╛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡: рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рддрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдкрд╣реБрдВрдЪред
lambda:UpdateFunctionCode
lambda:UpdateFunctionCode
рдЕрдиреБрдорддрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ IAM рднреВрдорд┐рдХрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдХ рдореМрдЬреВрджрд╛ Lambda рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рд╣рдорд▓рд╛рд╡рд░ IAM рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП Lambda рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдкрд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реАрдзреЗ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрджрд┐ Lambda рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореМрдЬреВрджрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред
рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡: рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓реИрдореНрдмреНрдбрд╛ рд╕реЗрд╡рд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдкреНрд░рд┐рд╡реЗрд╕реНрдХред
lambda:UpdateFunctionConfiguration
рдЗрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рдордирдорд╛рдиреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ PYTHONWARNING
рдФрд░ BROWSER
рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдордирдорд╛рдиреЗ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп env рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:
Lambda Layers рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдЫреЛрдЯрд╛ рд░рд╣ рд╕рдХреЗ рдФрд░ рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХреЗрдВред
рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдЕрдВрджрд░ рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЙрди рдкрдереЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╕реЗ рдкрд╛рдпрдерди рдХреЛрдб рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:
рдпреЗ рд╕реНрдерд╛рди рд╣реИрдВ:
/var/task
/opt/python/lib/python3.7/site-packages
/opt/python
/var/runtime
/var/lang/lib/python37.zip
/var/lang/lib/python3.7
/var/lang/lib/python3.7/lib-dynload
/var/lang/lib/python3.7/site-packages
/opt/python/lib/python3.7/site-packages
/opt/python
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреБрд╕реНрддрдХрд╛рд▓рдп boto3 рдХреЛ /var/runtime/boto3
(4рдереА рд╕реНрдерд┐рддрд┐) рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
lambda:UpdateFunctionConfiguration
рдЕрдиреБрдорддрд┐ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рд▓реЗрдпрд░ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдордирдорд╛рдиреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд▓реЗрдпрд░ рдореЗрдВ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдХреЛрдб рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрдк рд▓реЗрдпрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдБ рдЕрдкрдирд╛ рдХреЛрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп boto3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рдиреАрдп рд▓реЗрдпрд░ рдмрдирд╛рдПрдЧрд╛:
рдЖрдк ./lambda_layer/boto3/__init__.py
рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛрдб рдореЗрдВ рдмреИрдХрдбреЛрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рдПрдХреНрд╕рдлрд┐рд▓реНрдЯреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдлрд┐рд░, рдЙрд╕ ./lambda_layer
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рдирдпрд╛ рд▓реИрдореНрдмреНрдбрд╛ рд▓реЗрдпрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ (рдпрд╛ рдкреАрдбрд╝рд┐рдд рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ)ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдкрд╛рдпрдерди рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡рд╣рд╛рдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ /opt/python/boto3 рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдпрд░ рдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдорд╛рди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЕрдм, рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рд▓реИрдореНрдмреНрдбрд╛ рд▓реЗрдпрд░ рдХреЛ рдХрд┐рд╕реА рднреА рдЦрд╛рддреЗ рджреНрд╡рд╛рд░рд╛ рд╕реБрд▓рдн рдмрдирд╛рдПрдВ:
рдФрд░ рдкреАрдбрд╝рд┐рдд рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рд▓реЗрдпрд░ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ:
The next step would be to either invoke the function ourselves if we can or to wait until рдпрд╣ invoke рд╣реЛрддрд╛ рд╣реИ by normal meansтАУwhich is the safer method.
A more stealth way to exploit this vulnerability can be found in:
AWS - Lambda Layers PersistencePotential Impact: Direct privesc to the lambda service role used.
iam:PassRole
, lambda:CreateFunction
, lambda:CreateFunctionUrlConfig
, lambda:InvokeFunctionUrl
Maybe with those permissions you are able to create a function and execute it calling the URL... but I could find a way to test it, so let me know if you do!
Some lambdas are going to be рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ in parameters. If get RCE in one of them, you can exfiltrate the info other users are sending to it, check it in:
AWS - Steal Lambda RequestsLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)