Az - Azure App Service & Function Apps

Az - Azure App-diens & Funksieprogramme

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese inligting oor App-diens

Van die dokumentasie af: Azure App-diens is 'n HTTP-gebaseerde diens vir die gasheer van webtoepassings, REST API's en mobiele agterkante. Jy kan ontwikkel in jou gunsteling taal, of dit .NET, .NET Core, Java, Ruby, Node.js, PHP of Python is. Toepassings loop en skaal maklik op beide Windows- en Linux-gebaseerde omgewings.

Elke toepassing loop binne 'n sandput, maar isolasie hang af van die App-diensplanne

  • Toepassings in die Free- en Shared-vlakke loop op gedeelde VM's

  • Toepassings in die Standard- en Premium-vlakke loop op toegewyde VM's

Let daarop dat geen van hierdie isolasies ander algemene webkwesbaarhede (soos lêeroplaai of inspuitings) voorkom nie. En as 'n bestuursidentiteit gebruik word, kan dit in staat wees om sy toestemmings te kompromitteer.

Opname

# 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

#### Kry geloofsbriewe & kry toegang tot die webapp-kode

Om toegang te kry tot die webapp-kode en geloofsbriewe te verkry, kan jy die volgende stappe volg:

1. Identifiseer die webapp se URL of domeinnaam.
2. Voer 'n DNS-opsoek uit om die IP-adres van die webapp te verkry.
3. Skandeer die webapp vir enige bekende kwesbaarhede of swak konfigurasies.
4. Indien die webapp 'n openbare bronkode-repo het, soos GitHub, kan jy probeer om die bronkode te bekom deur die repo te kloon of te aflaai.
5. As die webapp 'n databasis gebruik, kan jy probeer om toegang tot die databasis te verkry deur SQL-injeksie of ander databasis-aanvalle.
6. As die webapp 'n foutiewe lêerhantering het, kan jy probeer om toegang tot die lêerstelsel te verkry deur lêerpadmanipulasie of ander lêerhanteringsaanvalle.
7. As die webapp 'n beheerpaneel het, soos phpMyAdmin, kan jy probeer om toegang tot die beheerpaneel te verkry deur die standaardgebruikersnaam en -wagwoord te raai of deur 'n aanval op die beheerpaneel uit te voer.
8. As die webapp 'n foutiewe sessiehantering het, kan jy probeer om 'n sessie-oorkaping aan te wend om toegang tot die webapp as 'n gevalideerde gebruiker te verkry.
9. As die webapp 'n foutiewe toegangsbeheer het, kan jy probeer om toegang tot beperkte areas of funksies van die webapp te verkry deur toegangsbeheeromseiling of ander toegangsbeheeraanvalle.

Dit is belangrik om te onthou dat jy slegs hierdie stappe op 'n webapp mag uitvoer indien jy die wettige toestemming het om dit te doen, soos deur 'n eienaar van die webapp of 'n bevoegde outoriteit.
```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

Toegang tot die Docker-houer met die webtoepassing via 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

Funksieprogramme Basiese Inligting

Azure Funksieprogramme is 'n serverlose oplossing wat jou toelaat om minder kode te skryf, minder infrastruktuur te onderhou, en kostes te bespaar. In plaas daarvan om bekommerd te wees oor die implementering en onderhoud van bedieners, voorsien die wolk-infrastruktuur al die opgedateerde hulpbronne wat nodig is om jou programme te laat loop.

In die Azure-paneel word die integrasie tussen Azure Funksieprogramme en Azure API-bestuur gefasiliteer, wat dit moontlik maak om HTTP-trigger funksie-eindpunte as REST API's bloot te stel. Die API's wat op hierdie manier blootgestel word, word beskryf deur middel van 'n OpenAPI-definisie, wat 'n standaard, taalonafhanklike koppelvlak vir RESTful API's bied.

Funksieprogramme ondersteun Bestuurde Identiteite.

Verder kan 'n Funksieprogram dalk sekere eindpunte hê wat 'n sekere vlak van outentisering 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 te verkry tot sensitiewe data of funksionaliteit.

Enumerasie

# Get only Function Apps
Get-AzFunctionApp

Verwysings

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated