AWS - Lambda Enum
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)
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 kila wakati unavyotaka (na Cloudwatch), kuweka wazi kiungo cha URL na kuikuta, kuita kupitia API Gateway au hata kulingana na matukio kama mabadiliko ya data katika S3 bucket au masasisho kwa DynamoDB table.
Msimbo wa lambda uhifadhiwa katika /var/task
.
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.
Sera za rasilimali za Lambda zinaruhusu kutoa ufikiaji kwa huduma/akaunti nyingine ili kuitisha lambda kwa mfano. Kwa mfano hii ni sera ya kuruhusu mtu yeyote kufikia lambda iliyo wazi kupitia URL:
Au hii kuruhusu API Gateway kuitisha:
Wakati kuna miyale ya maombi ya lambda yanayoendelea, ikiwa kila moja inahitaji kuungana 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.
Ili kuhifadhi na hata kushiriki data Lambdas zinaweza kufikia EFS na kuziunganisha, hivyo Lambda itakuwa na uwezo wa kusoma na kuandika kutoka kwake.
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 kwenye saraka ya /opt
katika mazingira ya utekelezaji.
Kwa kawaida, 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 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. Ubadilishaji 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 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.
Sasa ni wakati wa kugundua kazi za lambda zinazoweza kutekelezwa:
Kuna kazi ya lambda inayoitwa "Level6". Hebu tuone jinsi ya kuitumia:
Sasa, kwamba unajua jina na ID unaweza kupata Jina:
Na hatimaye piga simu kwa kazi inayopatikana (angalia 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>
Kuna vyanzo vingi vingine vinavyoweza kuchochea lambda
Katika ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za Lambda kuongeza mamlaka:
AWS - Lambda PrivescJifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)