AWS - Lambda Enum

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Lambda

Amazon Web Services (AWS) Lambda inaelezwa kama huduma ya kuhesabu inayowezesha utekelezaji wa nambari bila ulazima wa utoaji au usimamizi wa seva. Inajulikana kwa uwezo wake wa kushughulikia moja kwa moja mgawo wa rasilimali unahitajika kwa utekelezaji wa nambari, ikihakikisha vipengele kama upatikanaji wa juu, uwezo wa kupanuka, na usalama. Jambo muhimu la Lambda ni mfano wake wa bei, ambapo malipo yanategemea tu wakati wa kuhesabu uliotumiwa, ikiondoa ulazima wa uwekezaji wa awali au majukumu ya muda mrefu.

Kuita lambda inawezekana kuita kama mara nyingi unavyotaka (kwa Cloudwatch), kuweka an URL mwisho na kuita, kuita kupitia API Gateway au hata kulingana na matukio kama mabadiliko kwenye data katika bakuli la S3 au sasisho kwenye meza ya DynamoDB.

Nambari ya lambda imehifadhiwa katika /var/task.

Uzito wa Aliases za Lambda

Lambda inaweza kuwa na matoleo kadhaa. Na inaweza kuwa na zaidi ya 1 toleo lililowekwa wazi kupitia aliases. Vipimo vya kila ya matoleo yaliyowekwa wazi ndani ya alias vitachagua alias ipokeayo mwaliko (inaweza kuwa 90%-10% kwa mfano). Ikiwa nambari ya moja ya aliases ni dhaifu unaweza kutuma ombi hadi matoleo dhaifu yalipokea shambulio.

Sera za Rasilimali za Lambda

Sera za rasilimali za Lambda huruhusu kutoa ufikiaji kwa huduma/akaunti zingine kuita lambda kwa mfano. Kwa mfano hii ni sera ya kuruhusu yeyote kufikia lambda iliyowekwa wazi kupitia URL:

Au hii kuruhusu API Gateway kuita:

Proksi za Database za Lambda

Wakati kuna maombi ya lambda mamia ya wakati mmoja, ikiwa kila moja inahitaji kuunganisha na kufunga uhusiano kwa database, haitafanya kazi (lambdas ni bila hali, haziwezi kudumisha uhusiano wazi). Kisha, ikiwa Vipengele vya Lambda vinashirikiana na RDS Proxy badala ya kielelezo chako cha database. Inashughulikia uwekaji wa uhusiano unaohitajika kwa ajili ya kuzidisha uhusiano wengi ulioanzishwa na kazi za Lambda za wakati mmoja. Hii inaruhusu maombi yako ya Lambda kutumia uunganisho uliopo, badala ya kuunda uunganisho mpya kwa kila wito wa kazi.

Mifumo ya Faili za EFS za Lambda

Ili kuhifadhi na hata kushiriki data Lambdas wanaweza kupata EFS na kuyapakia, hivyo Lambda itaweza kusoma na kuandika kutoka humo.

Tabaka za Lambda

Tabaka ya Lambda ni faili ya .zip ambayo inaweza kuwa na nambari ya ziada au yaliyo mengine. Tabaka inaweza kuwa na maktaba, mazingira ya desturi, data, au faili za usanidi.

Inawezekana kujumuisha hadi tabaka tano kwa kila kazi. Unapojumuisha tabaka katika kazi, maudhui yanaondolewa kwa saraka ya /opt katika mazingira ya utekelezaji.

Kwa chaguo-msingi, tabaka unazounda ni binafsi kwa akaunti yako ya AWS. Unaweza kuchagua kushiriki tabaka na akaunti zingine 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 kupata tabaka imeondolewa. Walakini, huwezi kuunda kazi mpya au kusasisha kazi zinazotumia toleo lililofutwa la tabaka.

Kazi zilizowekwa kama picha ya chombo hazitumii tabaka. Badala yake, unapakia mazingira yako ya utekelezaji unaopendelea, maktaba, na mahitaji mengine ndani ya picha ya chombo unapojenga picha.

Vipanuzi vya Lambda

Vipanuzi vya Lambda huimarisha kazi kwa kuingiliana na zana mbalimbali za uangalizi, uonekano, usalama, na utawala. Vipanuzi hivi, vilivyoongezwa kupitia .zip archives kwa kutumia tabaka za Lambda au vilivyojumuishwa katika mizigo ya picha ya chombo, hufanya kazi kwa njia mbili: ndani na nje.

  • Vipanuzi vya ndani vinajumuisha na mchakato wa runtime, kubadilisha kuanza kwake kwa kutumia mazingira maalum ya lugha na skripti za pembetatu. Kubinafsisha hii inatumika kwa anuwai ya mazingira ya utekelezaji, ikiwa ni pamoja na Java Correto 8 na 11, Node.js 10 na 12, na .NET Core 3.1.

  • Vipanuzi vya nje hufanya kazi kama michakato tofauti, kudumisha ushirikiano wa uendeshaji na mzunguko wa kazi ya Lambda. Wanalingana na mazingira mbalimbali ya utekelezaji 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 mazingira ya desturi.

Uthibitisho wa Taarifa

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>

Kuita lambda

Kwa Mkono

# 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 iliyofichuliwa

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

Piga simu kazi ya Lambda kupitia URL

Sasa ni wakati wa kugundua kazi za Lambda zinazowezekana kutekelezwa:

aws --region us-west-2 --profile level6 lambda list-functions

Kuna kazi ya lambda inayoitwa "Level6" inapatikana. Hebu tujaribu kujua jinsi ya kuipiga simu:

aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6

Sasa, ukijua jina na kitambulisho unaweza kupata Jina:

aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33ppypa75"

Na mwishowe piga simu kazi kwa kufikia (kumbuka kwamba ID, Jina na jina la kazi linaonekana 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 kusababisha lambda

Privesc

Kwenye ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za Lambda kukuza mamlaka:

pageAWS - Lambda Privesc

Upatikanaji usiothibitishwa

pageAWS - Lambda Unauthenticated Access

Baada ya Uvamizi

pageAWS - Lambda Post Exploitation

Uthabiti

pageAWS - Lambda Persistence

Marejeo

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated