National Cyber Awareness System:
11/10/2015 08:12 PM EST
Original release date: November 10, 2015
Web servers that allow web shells
This alert describes the frequent use of web shells as an exploitation vector. Web shells can be used to obtain unauthorized access and can lead to wider network compromise. This alert outlines the threat and provides prevention, detection, and mitigation strategies.
Consistent use of web shells by Advanced Persistent Threat (APT) and criminal groups has led to significant cyber incidents.
This product was developed in collaboration with US-CERT partners in the United Kingdom, Australia, Canada, and New Zealand based on activity seen targeting organizations across these countries. The detection and mitigation measures outlined in this document represent the shared judgement of all participating agencies.
Web Shell Description
A web shell is a script that can be uploaded to a web server to enable remote administration of the machine. Infected web servers can be either Internet-facing or internal to the network, where the web shell is used to pivot further to internal hosts.
A web shell can be written in any language that the target web server supports. The most commonly observed web shells are written in languages that are widely supported, such as PHP and ASP. Perl, Ruby, Python, and Unix shell scripts are also used.
Using network reconnaissance tools, an adversary can identify vulnerabilities that can be exploited and result in the installation of a web shell. For example, these vulnerabilities can exist in content management systems (CMS) or web server software.
Once successfully uploaded, an adversary can use the web shell to leverage other exploitation techniques to escalate privileges and to issue commands remotely. These commands are directly linked to the privilege and functionality available to the web server and may include the ability to add, delete, and execute files as well as the ability to run shell commands, further executables, or scripts.
How and why are they used by malicious adversaries?
Web shells are frequently used in compromises due to the combination of remote access and functionality. Even simple web shells can have a considerable impact and often maintain minimal presence.
Web shells are utilized for the following purposes:
While a web shell itself would not normally be used for denial of service (DoS) attacks, it can act as a platform for uploading further tools, including DoS capability.
Web shells such as China Chopper, WSO, C99 and B374K are frequently chosen by adversaries; however these are just a small number of known used web shells. (Further information linking to IOCs and SNORT rules can be found in the Additional Resources section).
Web shells can be delivered through a number of web application exploits or configuration weaknesses including:
The above tactics can be and are combined regularly. For example, an exposed admin interface also requires a file upload option, or another exploit method mentioned above, to deliver successfully.
A successfully uploaded shell script may allow a remote attacker to bypass security restrictions and gain unauthorized system access.
Prevention and Mitigation
Installation of a web shell is commonly accomplished through web application vulnerabilities or configuration weaknesses. Therefore, identification and closure of these vulnerabilities is crucial to avoiding potential compromise. The following suggestions specify good security and web shell specific practices:
Due to the potential simplicity and ease of modification of web shells, they can be difficult to detect. For example, anti-virus products sometimes produce poor results in detecting web shells.
The following may be indicators that your system has been infected by a web shell. Note a number of these indicators are common to legitimate files. Any suspected malicious files should be considered in the context of other indicators and triaged to determine whether further inspection or validation is required.
For investigating many types of shells, a search engine can be very helpful. Often, web shells will be used to spread malware onto a server and the search engines are able to see it. But many web shells check the User-Agent and will display differently for a search engine spider (a program that crawls through links on the Internet, grabbing content from sites and adding it to search engine indexes) than for a regular user. To find a shell, you may need to change your User-Agent to one of the search engine bots. Some browsers have plugins that allow you to easily switch a User-Agent. Once the shell is detected, simply delete the file from the server.
Client characteristics can also indicate possible web shell activity. For example, the malicious actor will often visit only the URI where the web shell script was created, but a standard user usually loads the webpage from a linked page/referrer or loads additional content/resources. Thus, performing frequency analysis on the web access logs could indicate the location of a web shell. Most legitimate URI visits will contain varying user-agents, whereas a web shell is generally only visited by the creator, resulting in limited user-agent variants.