如何使用LDAPX动态检查和转换LDAP数据包

admin 2025年2月11日00:18:43评论3 views字数 3135阅读10分27秒阅读模式
如何使用LDAPX动态检查和转换LDAP数据包
关于LDAPX

LDAPX是一款功能强大且灵活的LDAP代理,可以帮助广大研究人员动态检查和转换其他工具生成的所有 LDAP 数据包。

如何使用LDAPX动态检查和转换LDAP数据包

工具要求

Golang

工具安装

由于该工具基于Go开发,因此我们首先需要在本地设备上安装并配置好最新版本的Go环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone github.com/Macmod/ldapx

然后切换到项目目录中,使用下列命令完成工具代码的安装和构建:

cd ldapxgo install .

发布版本

我们还可以直接访问该项目的Releases页面下载预编译版本的LDAPX。

工具使用
$ ldapx -t LDAPSERVER:389 [-f MIDDLEWARECHAIN] [-a MIDDLEWARECHAIN] [-b MIDDLEWARECHAIN] [-l LOCALADDR:LOCALPORT] [-o MIDDLEWAREOPTION=VALUE] [...]

参数命令

-f:将对所有适用的请求应用过滤中间件;-a:将把 AttrList 中间件应用于所有适用的请求;-b:将对所有适用的请求应用 BaseDN 中间件;-e:将把 AttrEntries 中间件应用于所有适用的请求;-o:可以多次指定,用于指定中间件的选项;-F:指定转发数据包(请求)的详细程度;-R:指定反向数据包(响应)的详细程度;-x:可用于指定用于连接目标的 SOCKS 代理;
工具使用样例

在过滤器、属性列表和 baseDN 中应用多个中间件

$ ldapx -t 192.168.117.2:389 -f OGDR -a Owp -b OX

如何使用LDAPX动态检查和转换LDAP数据包

使用 shell

我们还可以使用构建 shell 来动态更改中间件(set命令)或模拟 LDAP 查询(test命令):

如何使用LDAPX动态检查和转换LDAP数据包

输出统计数据

要查看数据包统计信息,包括每个 LDAP 操作通过代理传递的数据包数量,请使用show stats命令:

ldapx> show stats[Client -> Target]  Packets Received: 14  Packets Sent: 14  Bytes Received: 1464  Bytes Sent: 1464  Counts by Type:    Bind Request: 1    Search Request: 12    Modify Request: 1[Client <- Target]  Packets Received: 149  Packets Sent: 149  Bytes Received: 177045  Bytes Sent: 177045  Counts by Type:    Bind Response: 1    Search Result Entry: 129    Search Result Done: 12    Search Result Reference: 6Modify Response: 1

以代码库形式使用

package mainimport (    "fmt"    filtermid "github.com/Macmod/ldapx/middlewares/filter"    "github.com/Macmod/ldapx/parser")func main() {    query := "(&(cn=john)(sn=doe))"    fmt.Printf("Original Query: %sn", query)    myFilter, err := parser.QueryToFilter(query)    if err != nil {            fmt.Errorf("error parsing query")    }    // FilterToString can be used to show    // the internal representation of the parsed filter    fmt.Println(parser.FilterToString(myFilter, 0))    // Applying the OID middleware    obfuscator := filtermid.OIDAttributeFilterObf(3, false)    newFilter := obfuscator(myFilter)    newQuery, err := parser.FilterToQuery(newFilter)    if err != nil {            fmt.Errorf("error converting filter to query")    }    fmt.Printf("Changed Query: %sn", newQuery)}

输出结果:

Original Query: (&(cn=john)(sn=doe))Filter Type: 0AND Filter with 2 sub-filters:  Filter Type: 3  Equality Match - Attribute: cn, Value: john  Filter Type: 3  Equality Match - Attribute: sn, Value: doeChanged Query: (&(2.005.4.03=john)(2.005.04.004=doe))
中间件开发

过滤器

func YourFilterMiddleware(args) func(parser.Filter) parser.Filter

BaseDN

func YourBaseDNMiddleware(args) func(string) string

属性列表

func YourAttrListMiddleware(args) func([]string) []string

属性条目

func YourAttrEntriesMiddleware(args) func(parser.AttrEntries) parser.AttrEntries

中间件代码样例

func EqExtensibleFilterObf(dn bool) func(parser.Filter) parser.Filter {  // For every leaf in the filter...  return LeafApplierFilterMiddleware(func(filter parser.Filter) parser.Filter {    switch f := filter.(type) {    // If the leaf is an EqualityMatch    case *parser.FilterEqualityMatch:      // Replace it with an ExtensibleMatch with an empty MatchingRule      // optionally adding a DNAttributes (Active Directory ignores DNAttributes)      return &parser.FilterExtensibleMatch{        MatchingRule:  "",        AttributeDesc: f.AttributeDesc,        MatchValue:    f.AssertionValue,        DNAttributes:  dn,      }    }    return filter  })}

然后在以下位置注册config.go即可:

var filterMidFlags map[rune]string = map[rune]string{  ...  'x': "EqExtensible",  ...}// In SetupMiddlewaresMap:filterMidMap = map[string]filtermid.FilterMiddleware{  ...  "EqExtensible": filtermid.EqualityToExtensibleFilterObf(false),  ...}
许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

LDAPX

https://github.com/Macmod/ldapx

原文始发于微信公众号(FreeBuf):如何使用LDAPX动态检查和转换LDAP数据包

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月11日00:18:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何使用LDAPX动态检查和转换LDAP数据包https://cn-sec.com/archives/3688929.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息