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

2025-01-31 1 0

关于LDAPX

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

工具要求

Golang

工具安装

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

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

git clone github.com/Macmod/ldapx

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

cd ldapx

go 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

使用 shell

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

输出统计数据

要查看数据包统计信息,包括每个 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: 6

Modify Response: 1

以代码库形式使用

package main

 

import (

    "fmt"

 

    filtermid "github.com/Macmod/ldapx/middlewares/filter"

    "github.com/Macmod/ldapx/parser"

)

 

func main() {

    query := "(&(cn=john)(sn=doe))"

    fmt.Printf("Original Query: %s\n", 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: %s\n", newQuery)

}

输出结果:

Original Query: (&(cn=john)(sn=doe))

Filter Type: 0

AND Filter with 2 sub-filters:

  Filter Type: 3

  Equality Match - Attribute: cn, Value: john

  Filter Type: 3

  Equality Match - Attribute: sn, Value: doe

 

Changed 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:【GitHub传送门

参考资料

https://x.com/danielhbohannon

https://x.com/sabi_elezi

https://github.com/go-ldap/ldap

https://ldap.com/


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

时间强盗漏洞:ChatGPT绕过敏感话题安全防护
CNAPPgoat:一款针对云环境的安全实践靶场
NufSedC2:下一代基于Python的C2框架
burpsuite最新版实践分享
pwndbg:一款专为安全漏洞分析设计的GDB插件
WordPress SEO Plugin by Squirrly SEO 认证SQL注入漏洞(CVE-2025-22783)

发布评论