Web Shells: A Comprehensive Review
Introduction
Web shells are malicious scripts that give
attackers remote command execution and persistent access on compromised web
serversmedia.defense.govredcanary.com.
Typically written in server-side languages, they allow adversaries to issue
system commands via HTTP(S) requests, often blending in with normal web trafficmedia.defense.govf5.com.
Public and private organizations have reported rising web shell use; for
example, Microsoft detected an average of 77,000 web shell instances per month
on 46,000 machines in 2020microsoft.com,
and 2021 statistics indicate roughly 140,000 active web shells seen monthlyfedtechmagazine.com.
Web shells pose a severe threat because they act as covert backdoors: once installed,
they can be used for data theft, lateral movement, and launching further
attacks, all under the guise of normal web trafficredcanary.comf5.com.
What Is a Web Shell?
A web shell
is a script or program that is uploaded to a web server and executed by the
server’s web framework to run system commands. It is typically implemented in
common web scripting languages such as PHP, ASP, ASP.NET, JSP (JavaServer
Pages), Perl, or othersmicrosoft.comf5.com.
In essence, a web shell is like any other dynamic web application file, except
it is designed to give its user (the attacker) an interactive or automated
interface to the server’s operating system. Unlike legitimate code, web shells
intentionally introduce a “command injection” capability for the attacker’s
benefitf5.comf5.com.
For example, a simple PHP web shell might invoke system($_GET['cmd'])
to execute whatever command is provided in the HTTP request, returning the output
in the web responsef5.comf5.com.
According to the NSA and others, web shell
“malware” is software that provides arbitrary system command execution on a
compromised web servermedia.defense.gov.
Once present, a web shell allows the attacker to run any allowed commands,
manipulate files, and interact with databases as the web server usermedia.defense.govmicrosoft.com.
Crucially, the shell operates with the same privileges as the web application.
If the web server runs with high privileges, an attacker can therefore access
sensitive data or system functions with the same authorityredcanary.commicrosoft.com.
In practice, attackers often hide web shells within innocuous-looking filenames
or existing web application files to evade detectionmicrosoft.comredcanary.com.
How Web Shells Work
Web shells exploit the server’s ability to
execute dynamic code. Most web programming languages provide functions (like
PHP’s system()
or exec())
that run operating system commands. A web shell script exposes a web-accessible
interface (often a simple web form or URL endpoint) where an attacker can send
arguments or code. The server receives the HTTP request, runs the shell code
with the given input, and returns the output in the HTTP response. For example,
if a PHP web shell contains system($_GET['cmd']);, a request to http://victim.com/shell.php?cmd=dir
would run dir
on the server and return the directory listing to the attackerf5.comf5.com.
Attackers typically upload a web shell to a
location where it will be executed by the server (e.g. within the document root
or a scripts directory). Once placed, they use it to run arbitrary commands on
demand. Web shells often support many attacker actions: file system navigation,
file upload/download, code execution, database queries, and even spawning
reverse shellsf5.com.
The flexibility of web shells means attackers can do anything that the server’s
regular processes allow, such as installing malware, exfiltrating data, or
propagating deeper into the networkf5.commicrosoft.com.
Common Programming Languages
Web shells are usually written in the same
languages that web servers support. Historically, PHP web shells (like c99.php and r57.php) have been very common due to PHP’s wide use in web
applications. ASP and ASP.NET shells are also frequent, especially on Windows
IIS serversmicrosoft.comf5.com.
Other languages seen include Java (JSP web shells), Perl, ColdFusion (CFM),
Python, and Ruby. In one study, Kali Linux – a penetration testing platform –
included 14 example web shells written in PHP, Perl, JSP, ColdFusion, ASP.NET,
and classic ASPf5.com.
Notably, sophisticated attackers may also use compiled languages (e.g. C# in an
ASP.NET page) or shellcode embedded in scripts. In summary, any server-side
language that can execute system commands can host a web shellmicrosoft.comf5.com.
Legitimate and Malicious Use Cases
The term web
shell can also refer to legitimate web-based administrative tools. For
example, some organizations use web-based control panels or file managers for
remote system administrationmedia.defense.govfedtechmagazine.com.
These benign “shells” allow authorized users to execute commands or manage
files via a browser. However, they must be properly secured, because attackers
often try to steal or hijack them. The guidance from NSA specifically notes
that legitimate web management tools, if weakly configured, can become de facto
web shells for attackersmedia.defense.gov.
In practice, most discussion of web shells
focuses on malicious use.
Legitimate web shells should use strong authentication and secure channels to
prevent abusemedia.defense.govfedtechmagazine.com.
In contrast, malicious web shells are installed without permission and without
authentication (or with easily guessable passwords), enabling unauthorized
remote control. Malicious use cases include:
·
Persistent
Backdoor: The attacker installs a web shell to retain long-term access
to a network. The shell is often left hidden so the attacker can return even if
passwords change or other backdoors are removedmedia.defense.govredcanary.com.
·
Remote
Code Execution: Adversaries use web shells to run system commands or
scripts remotely, effectively giving them command-line access through a browser
interfacemedia.defense.govredcanary.com.
·
Data
Exfiltration: Web shells can download or steal sensitive files. An
attacker might use a web shell to read database contents or transmit files out
of the networkmicrosoft.comf5.com.
·
Lateral
Movement: After initial compromise, web shells help attackers pivot.
For example, they may load additional malware, scan for other targets, or use
native tools (ssh,
PsExec,
etc.) to move within the networkmicrosoft.comcisa.gov.
·
Watering
Hole / Pivot Launchpad: In some cases, a compromised web server is
used to host malicious content to attack visitors (a “watering hole”). The web
shell facilitates these complex attacks by running any needed scripts or
payloadsmicrosoft.com.
In all cases, the malicious actor benefits
from the covert nature of web traffic. As F5 Labs notes, web shell traffic
often looks like normal HTTPS requests, making detection difficultf5.com.
Web shells can be “as small as a single line of code” hidden in encrypted
trafficfedtechmagazine.com,
and unless defenders inspect URL parameters or server directories, the activity
may go unnoticedf5.comfedtechmagazine.com.
Attack Techniques: Uploading and Using Web
Shells
Attackers deploy web shells by exploiting
vulnerabilities or misconfigurations in web applications or serversmedia.defense.govmicrosoft.com.
Common upload methods include:
·
File
Upload Vulnerabilities: Many web apps allow users to upload files
(images, documents, etc.). If these upload functions lack proper security (e.g.
they do not validate file types or rename files), attackers can upload a web
shell script disguised as a harmless file. For instance, there are cases of PHP
web shells hidden in image files or appletically named files (e.g. image.jpg
containing embedded code)microsoft.commicrosoft.com.
·
Remote
Code Execution (RCE) Bugs: Exploiting a known RCE vulnerability in the
web application or framework can allow an attacker to create or overwrite files
on the server. For example, many critical vulnerabilities in Microsoft Exchange
(ProxyShell) and Zoho ManageEngine (ProxyLogon) were used to drop ASP.NET web
shells on corporate email servers in 2021redcanary.com.
The attacker uses the RCE to write the web shell file onto the server.
·
Local File
Inclusion (LFI): LFI flaws can let an attacker trick the server into
loading a file from disk. If an attacker can write a web shell file somewhere
(e.g. via another lesser vulnerability), an LFI vulnerability can be used to
execute it. F5 notes that web shells are often used to extend LFI exploits into
full command executionf5.com.
·
Compromised
Credentials or Backdoors: If attackers gain credentials for an FTP or
CMS admin, they can manually upload a web shell via legitimate channels.
Similarly, prior malware (Trojan, rootkit) already on the server can drop a web
shell later.
·
Misconfiguration
or Default Tools: Some servers come with sample scripts or admin
pages. Attackers will scan for leftover demos, examples, or misconfigured
directories (like /tmp or /upload). The Microsoft case study on
“Ghost in the Shell” noted attackers naming web shells after common files (index.aspx,
default.php,
etc.) to blend inmicrosoft.com.
Once a web shell is placed, the attacker
typically communicates with it over HTTP or HTTPS. Many web shells simply
listen for specific HTTP parameters or paths. The attacker sends commands as
URL parameters or POST data; the web shell executes them and returns the
output. Because web shell commands use standard web ports and protocols, they
appear as normal web traffic. In some cases (e.g. more advanced shells like
China Chopper or Behinder), the shell employs its own encryption or
authentication for stealthredcanary.comredcanary.com.
Attackers often chain web shells on multiple
servers to move deeper. They may first compromise a DMZ server, install a web
shell, and then use that shell to attack internal systems via native tools
(like SSH or Windows domain tools)redcanary.comcisa.gov.
Many incident reports note that web shells are installed on both internet-facing and internal web
applications, not just those exposed externallymedia.defense.gov.
Notable Web Shell Families and Incidents
Several specific web shells have become
infamous in cyberthreat intelligence:
·
China
Chopper: A very small (about 4 KB) ASP or PHP web shell, often used by
Chinese-linked groups. It supports command execution and file operations. For
example, attacks exploiting Microsoft Exchange ProxyShell left behind China
Chopper, enabling broad RCE on victim serversredcanary.com.
Mandiant’s analysis describes China Chopper as a “slick little web shell” with
a two-part setup (tiny server payload and a GUI client)cloud.google.com.
·
Godzilla:
An ASP.NET web shell used in attacks on Oracle WebLogic servers. It supports
commands in ASP.NET, JSP, PHP, and employs basic password authentication plus
an encryption keyredcanary.com.
·
Behinder
(China Chopper for Java): A Java-based web shell (often JSP) that can
load compiled payloads. Variants randomize user-agent strings and support
encrypted communication, making detection harderredcanary.com.
·
Weevely:
A PHP-based “post-exploitation” toolkit with many capabilities (file
management, database access, reverse shells). It is openly available on GitHub
and used by penetration testers (but also abused by attackers)f5.com.
Real-world incidents involving web shells
include:
·
Microsoft
Exchange (2021): The ProxyLogon and ProxyShell vulnerabilities allowed
attackers to inject web shells (like China Chopper) into Exchange servers
worldwide. These shells gave threat actors persistent backdoors into email
infrastructureredcanary.commicrosoft.com.
·
ManageEngine/MOVEit
Breaches (2020–2023): The Clop ransomware group exploited
vulnerabilities in Accellion FTA (2020) and Progress MOVEit (2023) to implant
web shells on file transfer servers, then used them to exfiltrate dataf5.commicrosoft.com.
·
Ivanti
Connect Secure (2023–2024): Multiple CVEs in Ivanti’s VPN products
were chained to bypass integrity checks. Threat actors used these to drop
custom web shells (codenamed “Lightwire” and “Chainline”) into Ivanti gateways.
These shells allowed credential harvesting and lateral movementcisa.govcisa.gov.
The U.S. CISA advisory reported that attackers used web shells on these devices
to establish persistence even after factory resetscisa.gov.
·
Web
Servers & CMS Compromises: Numerous attacks on WordPress, Joomla,
Drupal, and custom web apps have been seen where attackers upload PHP shells
via vulnerable plugins or file upload holes. For example, some hacking forums
discuss uploading the “c99shell” or “r57shell” to defaced sites.
These incidents underscore that web shells
are a tool of choice in both targeted campaigns (nation-state groups like ZINC,
KRYPTON, GALLIUM) and broader hack-and-ransomware operationsmicrosoft.comredcanary.com.
Attackers often act when defenders are least vigilant – Microsoft notes many
web shell uploads happen on weekends or off-hoursmicrosoft.com.
Detecting Web Shells
Detecting web shells is challenging because
they mimic normal web activity. Nevertheless, there are several
defense-in-depth strategies:
·
File
Integrity Monitoring: Track changes in web directories. Comparing the
current web application files against a known-good baseline is an effective way
to spot added or modified scriptsmedia.defense.govf5.com.
For example, if a new .php or .aspx file suddenly
appears, or if a core script is altered, that is suspicious. Tools like
Tripwire or Git diff checks can alert on unexpected changesfedtechmagazine.commedia.defense.gov.
Administrators should be wary of timestamp anomalies too, since attackers may
“timestomp” files to hide editsmedia.defense.gov.
·
Log and
Traffic Analysis: Review web server logs for unusual requests.
Patterns such as repeated accesses to a single script with varying parameters
(indicative of command or file operations) can signal a web shell. Similarly,
looking for HTTP requests that carry commands (e.g. long user-agent strings,
Base64 data, or odd query parameters) can help. Some defenders scan for URLs
resembling known web shells (e.g. “cmd.php” or anything calling system()
functions). Automated analytics or IDS rules can flag suspicious URLs and
payloads. In Exchange-specific cases, Red Canary recommends auditing ASPX
modifications on Exchange servers to catch newly dropped shellsredcanary.com.
·
Process
and Behavior Monitoring: Since web shells allow OS command execution,
watch for web server processes spawning unusual child processes. For example,
on Windows, look for IIS worker processes (w3wp.exe) launching
cmd.exe,
PowerShell,
certutil,
or other system tools. On Linux, watch for php, python,
or java
processes spawning shells (bash, sh) or downloading
tools (wget,
curl)redcanary.commicrosoft.com.
Security software like Microsoft Defender ATP can flag such sequences as
anomalousmicrosoft.com.
Alerts should be treated as high priority.
·
Web
Application Firewalls (WAF) and ModSecurity: Deploy a WAF with rules
to block known web shell patterns or forbid suspicious parameter usage. For
instance, block or challenge requests that attempt to use server-side commands.
While web shells can be obfuscated to evade simple signatures, a WAF can still
reduce the risk by limiting unsanitized input and new upload locations.
·
Signature
and Heuristic Scanners: Antivirus or web security tools may detect
known web shell signatures. Threat intelligence services (e.g. FireEye,
Symantec) maintain databases of web shell samples. Running periodic scans on
web directories using these signatures (or YARA rules) can catch known or
similar code fragments. However, attackers often obfuscate or lightly modify
shells to bypass signature detectionf5.com,
so this is not foolproof.
·
Least-Privilege
Measures: Configure web servers to follow the principle of least
privilege. If the web service runs as a low-privileged user, a web shell’s
impact is limited. Use containerization or OS-level controls to restrict what
uploaded scripts can do. Removing unnecessary scripting languages from
public-facing areas also reduces risk.
·
Monitoring
Authentication Anomalies: If a web shell requires a password (many do,
poorly), monitor for unusual login patterns on admin pages. Though many shells
have no auth, some implement hardcoded or default passwords. Any spikes in
login failures or use of default credentials should be flagged.
In summary, defenders should cast a wide
net: watch for any new or changed web files, unusual web requests, or
unexpected process launches. Combining file integrity checks with behavioral
analytics and threat intelligence yields the best coveragemedia.defense.govmicrosoft.com.
Mitigation and Prevention
Stopping web shells begins with prevention
of initial compromise and continues through swift response:
·
Patch
and Harden Web Applications: Keep all web servers, applications, and
plugins up to date. Many web shell incidents exploit old vulnerabilities or
unpatched software (e.g. Exchange ProxyShell, Citrix ADC/NetScaler CVEs).
Immediately apply security patches when released to eliminate known RCE pathsmicrosoft.comfedtechmagazine.com.
·
Secure
File Upload Mechanisms: Wherever file uploads are needed, enforce
strict controls: validate file types, use randomized filenames, store uploads
outside the web root if possible, and scan uploaded content. Disable any unused
upload or scripting features in web apps. In coding, perform rigorous input
validation to prevent injection.
·
Network
Segmentation and Firewalls: Limit which servers are internet-exposed
and segment sensitive networks. For example, public web servers should not
directly trust private database servers or domain controllers. Use firewalls to
restrict outgoing connections from web servers (preventing exfiltration or C2).
In one incident, Microsoft recommended using firewalls and IPS devices to block
command-and-control among endpoints post-infectionmicrosoft.com.
·
Use
Strong Authentication and Access Controls: Protect admin and web
interfaces with multi-factor authentication. Limit default or easily guessed
passwords (e.g. some web shells require a hardcoded password, and attackers
sometimes neglect to change it, allowing others to access the same shell).
·
Regular
Auditing: Perform routine audits of web server configuration and code.
As F5 Labs stresses, secure coding practices are essential – eliminating the
possibility to upload arbitrary content is keyf5.com.
Automated tools (SAST/DAST) can find injection points before attackers do.
·
Incident
Response Preparedness: If a web shell is detected or suspected,
immediate action is required. Remove the malicious scripts, and assume the
system is compromised. Back up configurations, restore servers from clean
images, and rotate all credentials and certificates that were on the system.
Follow vendor guidance carefully; for example, CISA advised applying patches
within 48 hours of release for Ivanti products after a web shell compromisefedtechmagazine.com.
It may also be necessary to take the affected server offline while it is
cleaned.
·
Defense-in-Depth:
Use a layered approach. Even if a web shell slips in, multiple barriers
(EPP/EDR on hosts, IDS/IPS on network, segmentation, etc.) can slow or expose
the attacker. For instance, web traffic anomaly detection (monitoring client
IPs and user agents) can occasionally spot web shell use if it differs from
typical patternsmedia.defense.gov.
In many reported cases, simple fixes like
disabling an unnecessary upload feature, closing an unneeded port, or changing
a default configuration could have prevented the web shell infection. As such,
basic cyber hygiene—patching, removing bloatware, monitoring logs—remains the
foundation of mitigationmicrosoft.comf5.com.
Conclusion
Web shells represent a persistent and
versatile threat in the web security landscape. They are essentially backdoor
scripts in common web languages that allow attackers to remotely execute
commands on victim serversmedia.defense.govf5.com.
Over the past decade, attackers have used web shells to steal data, spread
ransomware, and build enduring access. Notorious examples like China Chopper,
Godzilla, and others highlight how simple yet powerful these tools can beredcanary.comf5.com.
Defending against web shells requires
awareness and a multi-layer strategy. Organizations should assume that web
applications will be probed by attackers, and thus employ rigorous patch
management, hardening, and monitoring. Techniques such as file integrity
checking, traffic analysis, and behavior-based detection are key to spotting
shells that have bypassed perimeter defensesmedia.defense.govf5.com.
When a shell is found, prompt removal and incident response are critical to
limit damage.
While web shells are hard to eradicate
completely, understanding their mechanics, common variants, and deployment
methods greatly aids in defense. As F5 Labs notes, even with modest coding
skill an attacker can build a web shell, so defenders must stay vigilantf5.comf5.com.
In sum, a combination of secure design, proactive detection, and rapid
remediation forms the best defense against this sneaky post-exploit threatmicrosoft.comf5.com.



0 Comments