Az - Function Apps
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure Functions is 'n serverless oplossing wat jou toelaat om minder kode te skryf, minder infrastruktuur te onderhou, en koste te bespaar. In plaas daarvan om te bekommer oor die ontplooiing en onderhoud van bedieners, bied die wolkinfrastruktuur al die opdatering hulpbronne wat nodig is om jou toepassings aan die gang te hou.
In die Azure-portaal word integrasie tussen Azure Functions en Azure API Management gefasiliteer, wat HTTP-trigger-funksie-eindpunte toelaat om as REST APIs blootgestel te word. Die APIs wat op hierdie manier blootgestel word, word beskryf met 'n OpenAPI-definisie, wat 'n standaard, taal-onafhanklike koppelvlak aan RESTful APIs bied.
Die Flex Consumption plan bied dinamiese, gebeurtenisgedrewe skaal met buigsame rekenaaropsies. Dit voeg outomaties funksie-instanties by of verwyder dit op grond van vraag, wat doeltreffende hulpbron gebruik en kostedoeltreffendheid verseker deur 'n pay-as-you-go model. Hierdie plan ondersteun virtuele netwerke vir verbeterde sekuriteit en laat jou toe om koue begin te verminder deur voorvervaardigde instanties. Dit is ideaal vir toepassings wat veranderlike werklas ervaar en vinnige skaal vereis sonder die behoefte aan houerondersteuning.
Die tradisionele Consumption plan vir Azure Functions is die standaard serverless gasheeropsie, waar jy slegs vir die rekenaarhulpbronne betaal wanneer jou funksies aan die gang is. Dit skaal outomaties uit op grond van die aantal inkomende gebeurtenisse, wat dit baie kostedoeltreffend maak vir toepassings met intermitterende of onvoorspelbare werklas. Terwyl dit nie houerontplooiing ondersteun nie, sluit dit optimalisering in om koue begin tye te verminder en is geskik vir 'n wye reeks serverless toepassings wat outomatiese skaal vereis sonder die oorhoofse van infrastruktuur bestuur.
Die Premium plan vir Azure Functions is ontwerp vir toepassings wat konsekwente prestasie en gevorderde funksies benodig. Dit skaal outomaties op grond van vraag met behulp van voorverhitte werkers, wat koue begin uitskakel en verseker dat funksies vinnig loop selfs na periodes van inaktiwiteit. Hierdie plan bied meer kragtige instanties, verlengde uitvoerings tye, en ondersteun virtuele netwerkverbinding. Boonop laat dit die gebruik van pasgemaakte Linux-beelde toe, wat dit geskik maak vir missie-kritieke toepassings wat hoë prestasie en groter beheer oor hulpbronne vereis.
Die Dedicated plan, ook bekend as die App Service plan, laat jou funksies op toegewyde virtuele masjiene binne 'n App Service omgewing loop. Hierdie plan bied voorspelbare fakturering en laat handmatige of outomatiese skaal van instanties toe, wat dit ideaal maak vir langlopende scenario's waar Duurzame Funksies nie geskik is nie. Dit ondersteun die uitvoering van verskeie web- en funksie-apps op dieselfde plan, bied groter rekenaar groottes, en verseker volle rekenaar isolasie en veilige netwerktoegang deur App Service Omgewings (ASE). Hierdie opsie is die beste vir toepassings wat konsekwente hulpbron toewysing en uitgebreide aanpassing benodig.
Container Apps stel jou in staat om gecontaineriseerde funksie-apps binne 'n volledig bestuurde omgewing wat deur Azure Container Apps gehos is, te ontplooi. Hierdie opsie is perfek vir die bou van gebeurtenisgedrewe, serverless toepassings wat saam met ander mikrodiens, APIs, en werksvloeie loop. Dit ondersteun die verpakking van pasgemaakte biblioteke saam met jou funksiekode, die migrasie van erfenistoepassings na wolk-natiewe mikrodiens, en die benutting van hoë-end verwerkingskrag met GPU-hulpbronne. Container Apps vereenvoudig ontplooiing deur die behoefte aan die bestuur van Kubernetes-klusters te verwyder, wat dit ideaal maak vir ontwikkelaars wat buigsaamheid en skaalbaarheid in 'n gecontaineriseerde omgewing soek.
Wanneer 'n nuwe Funksie App geskep word wat nie gecontaineriseerd is nie (maar die kode om te loop gee), sal die kode en ander Funksie verwante data in 'n Stoor rekening gestoor word. Standaard sal die webkonsol 'n nuwe een per funksie skep om die kode te stoor.
Boonop, wanneer 'n nuwe instansie van die app moet loop, sal die kode van die app hier versamel en uitgevoer word.
Dit is baie interessant vanuit 'n aanvaller se perspektief aangesien skrywe toegang oor hierdie emmer 'n aanvaller sal toelaat om die kode te kompromitteer en bevoegdhede te verhoog na die bestuurde identiteite binne die Funksie App.
Dit is moontlik om toegang tot 'n funksie aan die hele Internet te gee sonder om enige verifikasie te vereis of toegang op IAM-gebaseerde grond te gee.
Dit is ook moontlik om toegang tot die Funksie App vanaf die Internet te gee of te beperk, en toegang tot 'n interne netwerk (VPC) aan die Funksie App te gee.
Dit is baie interessant vanuit 'n aanvaller se perspektief aangesien dit moontlik mag wees om na interne netwerke te pivot vanaf 'n kwesbare Lambda-funksie wat aan die Internet blootgestel is.
Dit is moontlik om omgewing veranderlikes binne 'n app te konfigureer. Boonop, standaard word die omgewing veranderlikes AzureWebJobsStorage
en WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
(onder andere) geskep. Hierdie is spesiaal interessant omdat hulle die rekening sleutel bevat om met VOLLE toestemmings die stoor rekening wat die data van die toepassing bevat, te beheer.
Binne die sandbox is die bronkode geleë in /home/site/wwwroot
in die lêer function_app.py
(as python gebruik word) die gebruiker wat die kode uitvoer is app
(sonder sudo toestemmings).
Boonop kan die Funksie App sekere eindpunte hê wat 'n sekere vlak van verifikasie vereis, soos "admin" of "anoniem". 'n Aanvaller kan probeer om toegang te verkry tot die anoniem toegelate eindpunte om die beperkings te omseil en toegang tot sensitiewe data of funksionaliteit te verkry.
Let daarop dat daar nie RBAC-toestemmings is om toegang aan gebruikers te gee om die funksies aan te roep nie. Die funksie-aanroep hang af van die trigger wat gekies is toe dit geskep is en as 'n HTTP Trigger gekies is, mag dit nodig wees om 'n toegang sleutel te gebruik.
Wanneer 'n eindpunt binne 'n funksie geskep word met 'n HTTP-trigger, is dit moontlik om die toegang sleutel outoriseringsvlak aan te dui wat nodig is om die funksie te aktiveer. Drie opsies is beskikbaar:
ANONYMOUS: Enigiemand kan toegang tot die funksie verkry deur die URL.
FUNCTION: Eindpunt is slegs toeganklik vir gebruikers wat 'n funksie, gasheer of meester sleutel gebruik.
ADMIN: Eindpunt is slegs toeganklik vir gebruikers met 'n meester sleutel.
Tipe sleutels:
Funksie Sleutels: Funksie sleutels kan of standaard of gebruikersgedefinieerd wees en is ontwerp om toegang eksklusief tot spesifieke funksie eindpunte binne 'n Funksie App te verleen. Dit stel in staat tot fyn-gegradeerde sekuriteitsbeheer, wat verseker dat slegs gemagtigde gebruikers of dienste spesifieke funksies kan aanroep sonder om die hele toepassing bloot te stel.
Gasheer Sleutels: Gasheer sleutels, wat ook standaard of gebruikersgedefinieerd kan wees, bied toegang tot alle funksie eindpunte binne 'n Funksie App. Dit is nuttig wanneer verskeie funksies met 'n enkele sleutel benader moet word, wat bestuur vereenvoudig en die aantal sleutels wat versprei of veilig gestoor moet word, verminder.
Meester Sleutel: Die meester sleutel (_master
) dien as 'n administratiewe sleutel wat verhoogde toestemmings bied, insluitend toegang tot die runtime REST APIs van 'n Funksie App. Hierdie sleutel kan nie herroep word nie en moet met die grootste sorg hanteer word. Dit is van kardinale belang om nie die meester sleutel met derde partye te deel of dit in inheemse kliënttoepassings in te sluit om ongeoorloofde administratiewe toegang te voorkom.
Wanneer die verifikasie van 'n funksie op ADMIN (en nie ANONYMOUS of FUNCTION) gestel word nie, is dit nodig om hierdie sleutel te gebruik.
Stelsel Sleutels: Stelsel sleutels word deur spesifieke uitbreidings bestuur en is nodig vir toegang tot webhook eindpunte wat deur interne komponente gebruik word. Voorbeelde sluit die Event Grid-trigger en Duurzame Funksies in, wat stelsel sleutels gebruik om veilig met hul onderskeie APIs te kommunikeer. Stelsel sleutels kan deur die Azure-portaal of sleutel APIs hergegenereer word om sekuriteit te handhaaf.
Voorbeeld om toegang tot 'n funksie API eindpunt te verkry met 'n sleutel:
https://<function_uniq_name>.azurewebsites.net/api/<endpoint_name>?code=<access_key>
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)