CAPECattack pattern
CAPEC-193 PHP Remote File Inclusion
High
Official page ↗
- Abstraction
- Detailed
- Status
- Draft
- Likelihood of attack
- High
- Typical severity
- High
- CAPEC version
- 3.9
Description
In this pattern the adversary is able to load and execute arbitrary code remotely available from the application. This is usually accomplished through an insecurely configured PHP runtime environment and an improperly sanitized "include" or "require" call, which the user can then control to point to any web-accessible file. This allows adversaries to hijack the targeted application and force it to execute their own instructions.
Execution flow
1. [Explore] [Survey application] Using a browser or an automated tool, an adversary follows all public links on a web site. They record all the links they find.
2. [Experiment] [Attempt variations on input parameters] The attack variants make use of a remotely available PHP script that generates a uniquely identifiable output when executed on the target application server. Possibly using an automated tool, an adversary requests variations on the inputs they surveyed before. They send parameters that include variations of payloads which include a reference to the remote PHP script. They record all the responses from the server that include the output of the execution of remote PHP script.
3. [Exploit] [Run arbitrary server-side code] As the adversary succeeds in exploiting the vulnerability, they are able to execute server-side code within the application. The malicious code has virtual access to the same resources as the targeted application. Note that the adversary might include shell code in their script and execute commands on the server under the same privileges as the PHP runtime is running with.
Prerequisites
• Target application server must allow remote files to be included in the "require", "include", etc. PHP directives
• The adversary must have the ability to make HTTP requests to the target web application.
Skills required
• [Low] To inject the malicious payload in a web page
• [Medium] To bypass filters in the application
Consequences
• Integrity: Modify Data
• Confidentiality: Read Data
• Authorization: Execute Unauthorized Commands
• Accountability, Authentication, Authorization, Non-Repudiation: Gain Privileges
• Access Control, Authorization: Bypass Protection Mechanism
Mitigations
• Implementation: Perform input validation for all remote content, including remote and user-generated content
• Implementation: Only allow known files to be included (allowlist)
• Implementation: Make use of indirect references passed in URL parameters instead of file names
• Configuration: Ensure that remote scripts cannot be include in the "include" or "require" PHP directives
Related
Child of · CAPEC (1)
- CAPEC-253 Remote Code Inclusion attack pattern