Command injection

circle-exclamation

Understanding Command Injection

What is Command Injection?

Command injection is a security vulnerability that allows an attacker to execute arbitrary commands on the host operating system through a vulnerable application. This occurs when an application passes unsafe user-supplied data to a system shell without proper validation or sanitization.

Vulnerable Code Example

// PHP vulnerable code
$filename = $_GET['file'];
$output = shell_exec("cat /var/logs/" . $filename);
echo $output;

Normal Request:

  • URL: GET /view_log.php?file=access.log

  • Command: cat /var/logs/access.log

Malicious Request:

  • URL: GET /view_log.php?file=access.log; rm -rf /

  • Command: cat /var/logs/access.log; rm -rf /

How Command Injection Works

Command injection exploits the way applications construct and execute system commands. When user input is directly concatenated into command strings without proper validation, attackers can inject additional commands using shell metacharacters.

Command Execution Flow

  1. User Input - Attacker provides malicious input containing shell metacharacters

  2. Command Construction - Application concatenates user input into system command

  3. Shell Execution - System shell interprets and executes the constructed command

  4. Command Injection - Injected commands execute with application privileges

Impact and Consequences

  • System Compromise - Full control over the target system

  • Data Exfiltration - Access to sensitive files and databases

  • Privilege Escalation - Potential to gain higher system privileges

  • Lateral Movement - Access to other systems on the network

  • Persistent Access - Installation of backdoors and malware

Shell Metacharacters and Command Separators

Understanding shell metacharacters is crucial for both exploitation and defense:

Command Separators

  • ; - Command separator (executes commands sequentially), isolates command from another command

  • & - Background execution

  • && - Logical AND (execute if previous command succeeds)

  • || - Logical OR (execute if previous command fails)

  • | - Pipe (pass output to next command)

  • \n - Newline separator

Input/Output Redirection

  • > - Output redirection (overwrite)

  • >> - Output redirection (append)

  • < - Input redirection

  • 2> - Error redirection

  • 2>&1 - Redirect stderr to stdout

Command Substitution

  • `command` - Backtick command substitution

  • $(command) - Dollar-parenthesis command substitution

Wildcards and Globing

  • * - Match any number of characters

  • ? - Match single character

  • [abc] - Match any character in brackets

  • {a,b,c} - Brace expansion

Comment

  • # - Comment (Do not execute) what is after the tag


Detection Methodology

Identifying Vulnerable Parameters

Common Vulnerable Functions

PHP Functions:

  • system()

  • exec()

  • shell_exec()

  • passthru()

  • popen()

  • proc_open()

  • eval() (when used with shell commands)

Python Functions:

  • os.system()

  • os.popen()

  • subprocess.call()

  • subprocess.run()

  • subprocess.Popen()

Node.js Functions:

  • child_process.exec()

  • child_process.spawn()

  • child_process.execSync()

  • child_process.execFile()

Java Functions:

  • Runtime.getRuntime().exec()

  • ProcessBuilder.start()

Vulnerable Parameter Types

File Operations:

  • File upload/download functionality

  • File viewing/editing interfaces

  • Log file access

  • Report generation

  • Backup/restore operations

System Administration:

  • Network diagnostics (ping, traceroute)

  • System monitoring tools

  • User management interfaces

  • Configuration management

  • Service control panels

Data Processing:

  • Image/video processing

  • Document conversion

  • Archive operations (zip, tar)

  • Database operations

  • Import/export functionality

Basic Detection Techniques

Time-Based Detection

Sleep Commands:

Testing Examples:

Output-Based Detection

Command Output Injection:

Testing Examples:

Error-Based Detection

Syntax Error Injection:

Invalid Command Injection:

Advanced Detection Techniques

Blind Command Injection

DNS Exfiltration:

HTTP Requests:

File-Based Detection:

Context-Specific Testing

String Context:

Argument Context:

Environment Variable Context:


Operating System Specific Techniques

Linux/Unix Command Injection

Common Commands for Reconnaissance

System Information:

Network Information:

Process and Service Information:

File System Information:

Data Exfiltration Techniques

File Reading:

Database Access:

Credential Harvesting:

Persistence and Backdoors

Cron Jobs:

SSH Keys:

System Service Backdoors:

Windows Command Injection

Common Commands for Reconnaissance

System Information:

Network Information:

Process and Service Information:

File System Information:

Data Exfiltration Techniques

File Reading:

Registry Access:

Credential Harvesting:

Persistence and Backdoors

Registry Persistence:

Scheduled Tasks:

Service Creation:


Advanced Command Injection Techniques

Filter Evasion and Bypass

Character Encoding and Obfuscation

URL Encoding:

Hex Encoding:

Base64 Encoding:

Unicode and UTF-8:

Variable Expansion and Substitution

Environment Variables:

Bash Parameter Expansion:

Command Substitution Variations:

Alternative Command Separators

Newline Variations:

Whitespace Substitution:

Glob Pattern Exploitation:

Blind Command Injection Exploitation

Time-Based Exploitation

Conditional Time Delays:

Arithmetic Time Delays:

Out-of-Band Data Exfiltration

DNS Exfiltration:

HTTP Exfiltration:

ICMP Exfiltration:

File-Based Communication

Temporary File Communication:

Log File Injection:

Platform-Specific Advanced Techniques

Linux Advanced Techniques

Proc Filesystem Exploitation:

Container Escape Techniques:

Kernel Module Information:

Windows Advanced Techniques

PowerShell Execution:

WMI Exploitation:

Registry Manipulation:


Context-Specific Command Injection

Web Application Contexts

File Upload Handlers

Filename Manipulation:

MIME Type Exploitation:

Image Processing Applications

ImageMagick Exploitation:

FFmpeg Exploitation:

Network Diagnostic Tools

Ping Command Injection:

Traceroute Exploitation:

Nslookup/Dig Exploitation:

Archive and Compression Tools

Tar Command Injection:

Zip Exploitation:

API and Service Contexts

REST API Parameters

JSON Parameter Injection:

XML Parameter Injection:

Database Integration

SQL to Command Injection:

Configuration File Processing

INI File Injection:

YAML Injection:


Advanced Exploitation Scenarios

Multi-Stage Command Injection

Information Gathering Chain

Stage 1: Environment Discovery

Stage 2: Privilege Assessment

Stage 3: Network Reconnaissance

Data Exfiltration Chain

Stage 1: Data Location

Stage 2: Data Preparation

Stage 3: Data Transmission

Command Injection in Chained Applications

Application Pipeline Exploitation

Image Processing Pipeline:

Document Conversion Chain:

Microservice Command Injection

Service A → Service B Chain:

Privilege Escalation via Command Injection

SUID Binary Exploitation

Finding SUID Binaries:

Exploiting Custom SUID Binaries:

Container Escape Scenarios

Docker Container Escape:

LXC Container Escape:


Command Injection in Modern Applications

Cloud and Container Environments

Kubernetes Command Injection

Pod Specification Injection:

ConfigMap Injection:

Serverless Function Injection

AWS Lambda Injection:

Azure Functions Injection:

CI/CD Pipeline Injection

Build Script Injection

Jenkins Pipeline Injection:

GitHub Actions Injection:

Docker Build Injection

Dockerfile Command Injection:

Docker Compose Injection:


Language-Specific Command Injection

PHP Command Injection

Common Vulnerable Patterns

Direct Function Calls:

Advanced PHP Injection:

PHP-Specific Techniques

PHP Stream Wrappers:

PHP Error-Based Injection:

Python Command Injection

Common Vulnerable Patterns

Subprocess Module:

Advanced Python Injection:

Python-Specific Techniques

Pickle Deserialization to Command Injection:

Import Hook Injection:

Node.js Command Injection

Common Vulnerable Patterns

Child Process Module:

Advanced Node.js Injection:

Node.js-Specific Techniques

Package.json Script Injection:

NPM Package Injection:

Java Command Injection

Common Vulnerable Patterns

Runtime.exec() Injection:

Advanced Java Injection:

Java-Specific Techniques

JNDI Injection Leading to Command Execution:

Spring Framework Injection:


Advanced Payload Techniques

Polyglot Command Injection

Multi-Context Payloads

Universal Injection Payload:

Cross-Platform Payload:

Multi-Language Payload:

Time-Based Polyglot

Cross-Platform Time Delay:

Conditional Time Delay:

Encoded Payload Techniques

Multi-Stage Encoding

Base64 + URL Encoding:

Hex + Command Substitution:

ROT13 + Decoding:

Dynamic Payload Construction

Environment Variable Assembly:

Arithmetic Expansion Payload:

Anti-Detection Techniques

Steganographic Command Hiding

Comment-Based Hiding:

Whitespace Manipulation:

Traffic Obfuscation

DNS Tunneling Command Injection:

ICMP Tunneling:

Timing Attack Obfuscation

Random Delay Injection:

Conditional Execution Based on Time:

Last updated

Was this helpful?