Way back when, once upon a time, webshell meant a product. It was like having a shell for the web, one that you could buy.
Positive Software sold WebShell 2.2 in November 1998, as a browser application to manage files on your website. The oldest saved copy of the company site advertises it as a finished commercial release. Version 2.2 wasn’t the first, meaning that product name was already in use before the archive captured it the first time.
Today that word never seems to mean ordinary commercial software sold to people running web servers. We now speak of the almost complete opposite. It assumes unauthorized attackers have left scripts on servers they have cracked into. And yet, a harmless product name was in use for at least four years before anyone started calling it an attack method.
To be fair, the history of the web and shell both run a long time before webshell. So we should pay tribute to the roots.
First, however, look at the tools often cited as webshell origins, related to the rise of PHP in the early 2000s. c99 and r57 are the attack scripts of the mid-2000s. Each carries a date in its own code. r57 came from the Russian group RST, which was publishing by 2003, and the tool is attributed to 2004. c99 gives its author as tristram of the Captain Crunch Security Team, and carries a version history running back to November 2004, eight months before its download page was archived on ccteam.ru in July 2005. These groups were naming their tools with a technique that wasn’t new.
To put it another way, attackers wanted admin-level authorization. They wanted the same tools that admins already had, without the authentication step. Martin Geisler released PHP Shell by 2000, the year in its own copyright header, which ran commands on a web server through a browser. His own notes call it a stand-in for a telnet login, for maintaining your own site. Ugh, telnet should give you a clue about the level of security awareness back then. Rohitab Batra released CGI-Telnet, the same thing in Perl, and it was on his site by April 2001. Both were written and described as administrative software. You know, the thing telnet was terrible for because it was cleartext.
The capability for a webshell actually goes all the way back to the NCSA web server of 1993, which introduced the Common Gateway Interface, which let a web page run an outside program, and Server-Side Includes, which ran a shell command and placed its output into the page. Running commands on a server through a web request was possible in the first year the web had servers. The phf flaw, usually dated to its loud 1996 warning, was the widespread abuse of something the web was known to be doing to itself three years earlier.
And that brings us back to the roots, that running commands on someone else’s machine is old. The tool known as rsh (remote shell) shipped with Unix in 1983 and, as the name suggests, ran commands on another computer across a network. A webshell is just that, a shell running over the web, and really should have been named wsh, or at least websh.
The shell itself? It goes all the way back to 1965. Louis Pouzin coined the word at MIT for the command language of Multics, at the turn of that year. It’s worth looking at three things he came up with. He built the shell as an ordinary program rather than part of the operating system, which means anything able to reach it can hand it commands. He deliberately made a typed command and a stored program interchangeable, each able to stand in for the other. And he took his handling of commands and their arguments from earlier work by Christopher Strachey, inheriting the problem of quoting: deciding which characters in an input are data and which are instructions to be carried out.
Let me repeat that last thought. Data and commands are mixed. Every command injection since that decision has been a failure of that concept. He would have known better, had he studied the history of information security.
So in terms of priors, the webshell was something to make the first two work exactly as designed in the 1960s, using a new protocol thirty years later. Perhaps here’s a way to illustrate it:
| Date | Form | Where | What it shows |
|---|---|---|---|
| 1998-11 | WebShell 2.2 | psoft.net | commercial file manager; oldest saved copy, name already older |
| 2000-03 | WebShell | freshmeat | the same product in a software directory |
| 2003-01 | Webshell | SecurityFocus BID 6527 | a hosting panel feature of that name, in a security bulletin |
| 2003-01 | Webshell | xfocus, translated | the word carried into Chinese, still a product name |
| 2003-05 | webshell | xfocus articles | lowercase and unexplained, while describing an attack |
| 2003-11 | webshell | xfocus | the word explained as a mechanism |
| 2005-04 | webshellv001.rar | xfocus tools | the word as a filename |
To expand on those latter exciting bits, in January 2003 a security bulletin reported a flaw in a web hosting control panel with a feature named Webshell, and a Chinese security site translated that bulletin the same month. In both the word is capitalized and names a product. By May the same site used it lowercase and unexplained, in the middle of technique: upload a webshell, and write the webshell onto the target. By November a writer was explaining the mechanism in the same terms, that calling the file in a browser is what forms a webshell. By 2005 it was a filename, webshellv001.rar, and one item in a list of ways into a server, beside telnet.
Oh, telnet, thank god you’re gone.
The January bulletin and the May usage seem like a collision or the same thread. They are not, and reflect two different words. January gives the H-Sphere product, capitalized. May gives the ordinary term for an attacker’s script. That suggests the use of webshell as an ordinary term can be dated to that spring.
Technically, as one would expect, the Chinese hackers had worked with the remote shell over the web technique well before they adopted the English word. They wrote about 网页木马, web page trojan, on the xfocus forum from 2002. They ran ASP木马 and the 海阳顶端网 trojan, and that tool’s own site lists its versions, 第一版 and 2003版 among them, using the word webshell exactly nowhere. The technique wasn’t being labeled webshell yet.
I did find an interesting exception, on one of my favorite platforms ever. An account named quack described breaking into an IRIX server on xfocus, on a page dated August 2000, and used “web shell” in the attacker’s sense: the way he ran commands through the website before obtaining a proper shell. The saved copy dates from 2003, but I couldn’t find one earlier, so the 2000 timeframe is based on that later capture. Arguably that’s the earliest possible use, while I sit with the first confirmed use of the word in May 2003.
All that is to say Phrack ran seventy issues between 1985 and 2021 and never seemed to adopt the term. I queried nearly 1,000 articles and found webshell zero times. That contrasts with 2,730 lines that mention shell. Thirty-six years and not a drop.
So there’s the history. A commercial admin tool, a web-based file manager sold in 1998, carries the earliest use of the term anyone has found, and years later attackers picked it up to describe the same thing without authorization. The Chinese hackers between 2003 and 2005 are where the word settled into use as an attack method. The tool is in fact a nod to the shell designed in 1965 being reached over the web.




