What is a shell?

beginnerFoundations

TL;DR

A “shell” is just command-line access to a machine. In testing you’ll hear bind and reverse shells: the difference is simply who connects to whom.

What it is

Getting a shell on a target means getting a command prompt on it — the ability to run commands. It’s the moment a test goes from “I found a way in” to “I’m in”.

Bind vs reverse

You’ll also hear about upgrading a “dumb” non-interactive shell into a proper interactive one so things like tab-completion and sudo behave.

Why defenders care

Reverse shells mean unexpected outbound connections from a server to an odd address — which is exactly the kind of thing egress filtering and network monitoring are meant to catch.

← Back to Foundations