Az - Azure App Service & Function Apps

Az - Azure App Service & Function Apps

Aprende hacking de AWS de cero a héroe con htARTE (Experto en Equipos Rojos de HackTricks AWS)!

Otras formas de apoyar a HackTricks:

Información Básica del Servicio de Aplicaciones

Desde la documentación: Azure App Service es un servicio basado en HTTP para alojar aplicaciones web, APIs REST y backends móviles. Puedes desarrollar en tu lenguaje favorito, ya sea .NET, .NET Core, Java, Ruby, Node.js, PHP o Python. Las aplicaciones se ejecutan y escalan fácilmente en entornos basados en Windows y Linux.

Cada aplicación se ejecuta dentro de un sandbox, pero el aislamiento depende de los planes de App Service

  • Las aplicaciones en los niveles Free y Shared se ejecutan en VMs compartidas

  • Las aplicaciones en los niveles Standard y Premium se ejecutan en VMs dedicadas

Ten en cuenta que ninguno de esos aislamientos previene otras vulnerabilidades web comunes (como la carga de archivos o inyecciones). Y si se utiliza una identidad de gestión, podría ser capaz de comprometer sus permisos.

Enumeración

# 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>
# Get App Services and Function Apps
Get-AzWebApp
# Get only App Services
Get-AzWebApp | ?{$_.Kind -notmatch "functionapp"}

```bash #!/bin/bash

Get all App Service and Function Apps

Define Azure subscription ID

azure_subscription="your_subscription_id"

Log in to Azure

az login

Select Azure subscription

az account set --subscription $azure_subscription

Get all App Services in the specified subscription

list_app_services=$(az appservice list --query "[].{appServiceName: name, group: resourceGroup}" -o tsv)

Iterate over each App Service

echo "$list_app_services" | while IFS=$'\t' read -r appServiceName group; do

Get the type of the App Service

service_type=$(az appservice show --name $appServiceName --resource-group $group --query "kind" -o tsv)

Check if it is a Function App and print its name

if [ "$service_type" == "functionapp" ]; then echo "Function App Name: $appServiceName" fi done

#### Obtener credenciales y acceder al código de la aplicación web
```bash
# 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

Acceso al contenedor Docker con la aplicación web a través de 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

Información Básica de las Aplicaciones de Funciones

Azure Functions es una solución serverless que te permite escribir menos código, mantener menos infraestructura y ahorrar costos. En lugar de preocuparte por implementar y mantener servidores, la infraestructura en la nube proporciona todos los recursos actualizados necesarios para mantener tus aplicaciones en funcionamiento.

En el portal de Azure, la integración entre Azure Functions y Azure API Management se facilita, lo que permite que los puntos de conexión de funciones de activación HTTP se expongan como APIs REST. Las APIs expuestas de esta manera se describen utilizando una definición OpenAPI, proporcionando una interfaz estándar y sin dependencia de lenguaje para APIs RESTful.

Las Aplicaciones de Funciones admiten Identidades Administradas.

Además, una Aplicación de Funciones puede tener ciertos puntos de conexión que requieren un cierto nivel de autenticación, como "admin" o "anónimo". Un atacante podría intentar acceder a los puntos de conexión permitidos para anónimos para evadir las restricciones y obtener acceso a datos o funcionalidades sensibles.

Enumeración

# Get only Function Apps
Get-AzFunctionApp

Referencias

Aprende a hackear AWS de cero a héroe con htARTE (Experto en Red de Equipos Rojos de HackTricks AWS)!

Otras formas de apoyar a HackTricks:

Última actualización