【问题标题】:Ldap query to get the ACLldap 查询获取 ACL
【发布时间】:2021-05-03 15:53:05
【问题描述】:

有没有办法通过使用 LDAP 查询来获取 Active Directory 中对象的 ACL?我浏览了一遍,但找不到任何相关的东西可以举例说明获取对象的 ACL。

我看到了query posted,但没有答案。我正在尝试获取类似于以下示例的数据,其中可以看到主体的所有权限 -

任何显示如何检索它的示例或文档都会有所帮助。

【问题讨论】:

    标签: active-directory ldap acl ldap-query


    【解决方案1】:

    任何对象的权限都保存在名为nTSecurityDescriptorattribute 中。这是一个二进制属性,需要进一步解释,可能使用比 shell 更好的编程语言。

    棘手的是,除非您以管理员身份绑定到 AD,否则您将无权获取安全描述符的系统 ACL (SACL) 部分,因此域控制器根本不会返回该描述符。但是,您可以添加额外的 search control 以表明您只对安全描述符的其他部分(所有者、组和/或 DACL)感兴趣。您在窗口中看到的权限是 DACL 的一部分。

    ldapsearch 示例:

    $ ldapsearch -Q -LLL -o ldif-wrap=no -h addc.domain.local -b "dc=domain,dc=
    local" -E '!1.2.840.113556.1.4.801=::MAMCAQc=' "sAMAccountName=Domain Admins" nTSecurityDescriptor
    
    dn: CN=Domain Admins,CN=Users,DC=domain,DC=local
    nTSecurityDescriptor:: AQAEnHQWAACQFgAAAAAAABQAAAAEAGAWawAAAAUKSAAHAAAAAwAAAAHJdcnqbG9LgxnWf0VElQYUzChINxS8RZsHrW8BXl8oAQUAAAAAAAUVAAAA/XexVgt12XaDPStG3BcAAAUKSAAHAAAAAwAAAAHJdcnqbG9LgxnWf0VE...
    

    这使用-E 开关来使用值为MAMCAQc= 的附加搜索控件,这是一个base64 编码的ASN.1 结构的BER 编码值,标志值为7(意思是获取所有者、组和DACL信息 - 除 SACL 之外的所有信息):

    $ printf "\x30\x03\x02\x01\x07" | base64
    MAMCAQc=
    

    如果您只对 DACL 感兴趣,您可以使用 4 的值,即:

    $ printf "\x30\x03\x02\x01\x04" | base64
    MAMCAQQ= 
    

    解析安全描述符值非常复杂,我建议使用一些库,即 https://github.com/Tirasa/ADSDDL 用于 Java 实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多