Az - Azure App Service & Function Apps

Support HackTricks

Podstawowe informacje o usłudze App Service

Z dokumentacji: Azure App Service to usługa oparta na HTTP do hostowania aplikacji internetowych, interfejsów API REST i zaplecza mobilnego. Możesz rozwijać w swoim ulubionym języku, czy to .NET, .NET Core, Java, Ruby, Node.js, PHP, czy Python. Aplikacje działają i skalują się z łatwością zarówno w środowiskach opartych na Windows, jak i Linux.

Każda aplikacja działa w piaskownicy, ale izolacja zależy od planów App Service

  • Aplikacje w darmowych i współdzielonych warstwach działają na współdzielonych maszynach wirtualnych

  • Aplikacje w standardowych i premium warstwach działają na dedykowanych maszynach wirtualnych

Zauważ, że żadna z tych izolacji nie zapobiega innym powszechnym wrażliwościom sieciowym (takim jak przesyłanie plików czy wstrzyknięcia). A jeśli używana jest tożsamość zarządzania, może być w stanie skompromentować swoje uprawnienia.

Enumeracja

# List webapps
az webapp list

## Less information
az webapp list --query "[].{hostName: defaultHostName, state: state, name: name, resourcegroup: resourceGroup}"

# Get access restrictions
az webapp config access-restriction show --resource-group <res-group> -n <name>

# Remove access restrictions
az webapp config access-restriction remove --resource-group <res-group> -n <name> --rule-name <rule-name>

# Get snapshots
az webapp config snapshot list --resource-group <res-group> -n <name>

# Restore snapshot
az webapp config snapshot restore -g <res-group> -n <name> --time 2018-12-11T23:34:16.8388367

# Restart webapp
az webapp restart --name <name> --resource-group <res-group>

Uzyskaj dane uwierzytelniające i uzyskaj dostęp do kodu aplikacji webowej

# Get connection strings that could contain credentials (with DBs for example)
az webapp config connection-string list --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.
az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>


# Get git URL to access the code
az webapp deployment source config-local-git --resource-group <res-group> -n <name>

# Access/Modify the code via git
git clone '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ą webową za pomocą ssh:

# Get ssh session
az webapp create-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)
ssh root@127.0.0.1 -p 39895

Podstawowe informacje o aplikacjach funkcji

Azure Functions to rozwiązanie serverless, które pozwala na pisanie mniejszej ilości kodu, utrzymywanie mniejszej infrastruktury i oszczędzanie kosztów. Zamiast martwić się o wdrażanie i utrzymywanie serwerów, infrastruktura chmurowa zapewnia wszystkie aktualne zasoby potrzebne do utrzymania aplikacji w działaniu.

W portalu Azure integracja między Azure Functions a Azure API Management jest ułatwiona, co pozwala na ujawnienie punktów końcowych funkcji wyzwalanych przez HTTP jako REST API. API ujawnione w ten sposób są opisane za pomocą definicji OpenAPI, co zapewnia standardowy, niezależny od języka interfejs do API RESTful.

Aplikacje funkcji obsługują zarządzane tożsamości.

Ponadto aplikacja funkcji może mieć określone 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 dozwolonych punktów końcowych anonimowych, aby obejść ograniczenia i uzyskać dostęp do wrażliwych danych lub funkcjonalności.

Enumeracja

# Get only Function Apps
Get-AzFunctionApp

References

Wsparcie dla HackTricks

Last updated