AWS - Lambda Enum
Reading time: 8 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Lambda
Amazon Web Services (AWS) Lambda inafafanuliwa kama huduma ya kompyuta inayowezesha utekelezaji wa msimbo bila haja ya usambazaji au usimamizi wa seva. Inajulikana kwa uwezo wake wa kushughulikia kiotomatiki ugawaji wa rasilimali zinazohitajika kwa utekelezaji wa msimbo, kuhakikisha vipengele kama upatikanaji wa juu, kupanuka, na usalama. Kipengele muhimu cha Lambda ni mfano wake wa bei, ambapo malipo yanategemea tu muda wa kompyuta ulio tumika, kuondoa haja ya uwekezaji wa awali au wajibu wa muda mrefu.
Ili kuita lambda inawezekana kuikuta mara kwa mara unavyotaka (na Cloudwatch), kuweka wazi URL kiunganishi na kuikuta, kuita kupitia API Gateway au hata kulingana na matukio kama mabadiliko ya data katika S3 bucket au masasisho kwa DynamoDB jedwali.
Msimbo wa lambda uhifadhiwa katika /var/task
.
Lambda Aliases Weights
Lambda inaweza kuwa na matoleo kadhaa.
Na inaweza kuwa na zaidi ya 1 toleo lililo wazi kupitia aliases. Uzito wa kila moja ya matoleo yaliyo wazi ndani ya alias utaamua ni alias ipi itakayopokea mwito (inaweza kuwa 90%-10% kwa mfano).
Ikiwa msimbo wa moja ya aliases ni dhaifu unaweza kutuma maombi hadi toleo dhaifu lipokee shambulio.
Resource Policies
Sera za rasilimali za Lambda zinaruhusu kutoa ufikiaji kwa huduma/accounts nyingine ili kuita lambda kwa mfano.
Kwa mfano hii ni sera ya kuruhusu mtu yeyote kufikia lambda iliyo wazi kupitia URL:
Au hii kuruhusu API Gateway kuita:
Lambda Database Proxies
Wakati kuna miyale ya maombi ya lambda yanayoendelea, ikiwa kila moja inahitaji kuunganisha na kufunga muunganisho na hifadhidata, haitafanya kazi (lambdas hazina hali, haiwezi kudumisha muunganisho wazi).
Basi, ikiwa Lambda functions zako zinashirikiana na RDS Proxy badala ya mfano wako wa hifadhidata. Inashughulikia usimamizi wa muunganisho unaohitajika kwa kupanua muunganisho mengi ya wakati mmoja yanayotokana na kazi za Lambda zinazofanyika kwa wakati mmoja. Hii inaruhusu programu zako za Lambda kutumia muunganisho uliopo, badala ya kuunda muunganisho mpya kwa kila mwito wa kazi.
Lambda EFS Filesystems
Ili kuhifadhi na hata kushiriki data Lambdas zinaweza kufikia EFS na kuziunganisha, hivyo Lambda itakuwa na uwezo wa kusoma na kuandika kutoka kwake.
Lambda Layers
Layer ya Lambda ni archive ya faili ya .zip ambayo inaweza kuwa na msimbo wa ziada au maudhui mengine. Layer inaweza kuwa na maktaba, runtime maalum, data, au faili za usanidi.
Inawezekana kujumuisha hadi tabaka tano kwa kazi. Unapojumuisha tabaka katika kazi, maudhui yanachukuliwa hadi kwenye saraka ya /opt
katika mazingira ya utekelezaji.
Kwa default, tabaka unazounda ni binafsi kwa akaunti yako ya AWS. Unaweza kuchagua kushiriki tabaka na akaunti nyingine au kufanya tabaka kuwa ya umma. Ikiwa kazi zako zinatumia tabaka ambayo akaunti tofauti ilichapisha, kazi zako zinaweza kuendelea kutumia toleo la tabaka baada ya kufutwa, au baada ya ruhusa yako ya kufikia tabaka kufutwa. Hata hivyo, huwezi kuunda kazi mpya au kusasisha kazi ukitumia toleo la tabaka lililofutwa.
Kazi zilizowekwa kama picha ya kontena hazitumii tabaka. Badala yake, unapakua runtime unayopendelea, maktaba, na utegemezi mwingine ndani ya picha ya kontena unapojenga picha hiyo.
Lambda Extensions
Lambda extensions huongeza kazi kwa kuungana na zana mbalimbali za uangalizi, ufuatiliaji, usalama, na usimamizi. Extensions hizi, zilizoongezwa kupitia .zip archives kwa kutumia tabaka za Lambda au zilizojumuishwa katika uzinduzi wa picha za kontena, zinafanya kazi katika hali mbili: ndani na nje.
- Extensions za ndani huungana na mchakato wa runtime, zikibadilisha uzinduzi wake kwa kutumia mabadiliko maalum ya lugha na script za wrapper. Uboreshaji huu unatumika kwa aina mbalimbali za runtimes, ikiwa ni pamoja na Java Correto 8 na 11, Node.js 10 na 12, na .NET Core 3.1.
- Extensions za nje zinafanya kazi kama michakato tofauti, zikihifadhi usawa wa operesheni na mzunguko wa maisha ya kazi ya Lambda. Zinapatikana kwa runtimes mbalimbali kama Node.js 10 na 12, Python 3.7 na 3.8, Ruby 2.5 na 2.7, Java Corretto 8 na 11, .NET Core 3.1, na runtimes maalum.
Enumeration
aws lambda get-account-settings
# List functions and get extra config info
aws lambda list-functions
aws lambda get-function --function-name <function_name>
aws lambda get-function-configuration --function-name <function_name>
aws lambda list-function-event-invoke-configs --function-name <function_name>
## Check for creds in env vars
aws lambda list-functions | jq '.Functions[].Environment'
## Download & check the source code
aws lambda get-function --function-name "<func_name>" --query 'Code.Location'
wget -O lambda-function.zip <url-from-previous-query>
# Get Lambda URL (if any)
aws lambda list-function-url-configs --function-name <function_name>
aws lambda get-function-url-config --function-name <function_name>
# Get who has permissions to invoke the Lambda
aws lambda get-policy --function-name <function_name>
# Versions and Aliases
aws lambda list-versions-by-function --function-name <func_name>
aws lambda list-aliases --function-name <func_name>
# List layers
aws lambda list-layers
aws lambda list-layer-versions --layer-name <name>
aws lambda get-layer-version --layer-name <name> --version-number <ver>
aws lambda get-layer-version-by-arn --arn <name> #Get external ARNs
# List other metadata
aws lambda list-event-source-mappings
aws lambda list-code-signing-configs
aws lambda list-functions-by-code-signing-config --code-signing-config-arn <arn>
Wito wa lambda
Kiganja
# Invoke function
aws lambda invoke --function-name FUNCTION_NAME /tmp/out
## Some functions will expect parameters, they will access them with something like:
## target_policys = event['policy_names']
## user_name = event['user_name']
aws lambda invoke --function-name <name> --cli-binary-format raw-in-base64-out --payload '{"policy_names": ["AdministratorAccess], "user_name": "sdf"}' out.txt
Kupitia URL iliyo wazi
aws lambda list-function-url-configs --function-name <function_name> #Get lambda URL
aws lambda get-function-url-config --function-name <function_name> #Get lambda URL
Call Lambda function via URL
Sasa ni wakati wa kugundua kazi za lambda zinazoweza kutekelezwa:
aws --region us-west-2 --profile level6 lambda list-functions
Kuna kazi ya lambda inayoitwa "Level6". Hebu tuone jinsi ya kuitumia:
aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6
Sasa, kwamba unajua jina na ID unaweza kupata Jina:
aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33ppypa75"
Na hatimaye itwa kazi kwa kufikia (zingatia kwamba ID, Jina na jina la kazi yanaonekana kwenye URL): https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6
URL:
https://<rest-api-id>.execute-api.<region>.amazonaws.com/<stageName>/<funcName>
Vichocheo Vingine
Kuna vyanzo vingi vingine vinavyoweza kuchochea lambda
.png)
Privesc
Katika ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za Lambda kuongeza mamlaka:
Ufikiaji Usio na Uthibitisho
AWS - Lambda Unauthenticated Access
Baada ya Ukatili
AWS - Lambda Post Exploitation
Kudumu
Marejeo
- https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-layer
- https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.