Udostępnij sztuczki hackingu, przesyłając PR-y doHackTricks i HackTricks Cloud repozytoriów na GitHubie.
Podstawowe informacje o usłudze aplikacji
Z dokumentacji:Azure App Service to usługa oparta na protokole HTTP do hostowania aplikacji internetowych, interfejsów API REST i back-endów mobilnych. Możesz rozwijać w swoim ulubionym języku, czy to .NET, .NET Core, Java, Ruby, Node.js, PHP lub Python. Aplikacje uruchamiają się i skalują łatwo zarówno w środowiskach opartych na systemie Windows, jak i Linux.
Każda aplikacja działa wewnątrz piaskownicy, ale izolacja zależy od planów usługi aplikacji
Aplikacje w warstwach Free i Shared działają na współdzielonych maszynach wirtualnych
Aplikacje w warstwach Standard i Premium działają na dedykowanych maszynach wirtualnych
Zauważ, że żadna z tych izolacji nie zapobiega innym powszechnym lukom w zabezpieczeniach sieciowych (takim jak przesyłanie plików lub wstrzykiwanie). Jeśli używane jest tożsamość zarządzania, może ona być w stanie naruszyć swoje uprawnienia.
Wyliczanie
# List webappsazwebapplist## Less informationazwebapplist--query"[].{hostName: defaultHostName, state: state, name: name, resourcegroup: resourceGroup}"# Get access restrictionsazwebappconfigaccess-restrictionshow--resource-group<res-group>-n<name># Remove access restrictionsazwebappconfigaccess-restrictionremove--resource-group<res-group>-n<name>--rule-name<rule-name># Get snapshotsazwebappconfigsnapshotlist--resource-group<res-group>-n<name># Restore snapshotazwebappconfigsnapshotrestore-g<res-group>-n<name>--time2018-12-11T23:34:16.8388367# Restart webappazwebapprestart--name<name>--resource-group<res-group>
# Get App Services and Function AppsGet-AzWebApp# Get only App ServicesGet-AzWebApp|?{$_.Kind-notmatch"functionapp"}
#!/bin/bash# Get all App Service and Function Apps# Define Azure subscription IDazure_subscription="your_subscription_id"# Log in to Azureazlogin# Select Azure subscriptionazaccountset--subscription $azure_subscription# Get all App Services in the specified subscriptionlist_app_services=$(azappservicelist--query"[].{appServiceName: name, group: resourceGroup}"-otsv)# Iterate over each App Serviceecho"$list_app_services"|while IFS=$'\t'read-rappServiceNamegroup; do# Get the type of the App Serviceservice_type=$(azappserviceshow--name $appServiceName --resource-group $group --query"kind"-otsv)# Check if it is a Function App and print its nameif [ "$service_type"=="functionapp" ]; thenecho"Function App Name: $appServiceName"fidone
Uzyskaj poświadczenia i uzyskaj dostęp do kodu aplikacji internetowej
# Get connection strings that could contain credentials (with DBs for example)azwebappconfigconnection-stringlist--name<name>--resource-group<res-group>## Check how to use the DBs connection strings in the SQL page# Get credentials to access the code and DB credentials if configured.azwebappdeploymentlist-publishing-profiles--resource-group<res-group>-n<name># Get git URL to access the codeazwebappdeploymentsourceconfig-local-git--resource-group<res-group>-n<name># Access/Modify the code via gitgitclone'https://<username>:<password>@name.scm.azurewebsites.net/repo-name.git'## In my case the username was: $nameofthewebapp and the password some random chars## If you change the code and do a push, the app is automatically redeployed
Dostęp do kontenera Docker z aplikacją internetową za pomocą ssh:
# Get ssh sessionazwebappcreate-remote-connection--subscription<SUBSCRIPTION-ID>--resource-group<RG-NAME>-n<APP-SERVICE-NAME>## If successfull you will get a message such as:#Verifying if app is running....#App is running. Trying to establish tunnel connection...#Opening tunnel on port: 39895#SSH is available { username: root, password: Docker! }## So from that machine ssh into that port (you might need generate a new ssh session to the jump host)sshroot@127.0.0.1-p39895
Podstawowe informacje o aplikacjach funkcji
Azure Functions to rozwiązanie bezserwerowe, które pozwala pisać mniej kodu, utrzymywać mniej infrastruktury i oszczędzać koszty. Zamiast martwić się o wdrażanie i utrzymywanie serwerów, infrastruktura chmurowa zapewnia wszystkie aktualne zasoby potrzebne do utrzymania działania aplikacji.
W portalu Azure integracja między funkcjami Azure a zarządzaniem interfejsami API Azure jest ułatwiona, umożliwiając eksponowanie punktów końcowych funkcji wyzwalanych przez HTTP jako interfejsy API REST. API eksponowane w ten sposób są opisane za pomocą definicji OpenAPI, zapewniając standardowy, językowo niezależny interfejs dla interfejsów API RESTful.
Aplikacje funkcji obsługują tożsamości zarządzane.
Co więcej, aplikacja funkcji może mieć pewne punkty końcowe, które wymagają określonego poziomu uwierzytelnienia, takiego jak "admin" lub "anonimowy".
Atakujący może próbować uzyskać dostęp do punktów końcowych zezwalających na anonimowy dostęp, aby ominąć ograniczenia i uzyskać dostęp do wrażliwych danych lub funkcji.