Advanced Server-Side Request Forgery (SSRF) Vulnerabilities and Protection
Description
The Server-Side Request Forgery (SSRF) vulnerability allows attackers to trick the server into making HTTP requests to arbitrary domains, thereby accessing internal resources or bypassing network perimeter controls. Unlike basic SSRF, advanced scenarios involve protocol handling, bypass techniques, and risk escalation in cloud environments. For example, attackers might exploit URL parsing discrepancies or cloud metadata services (such as AWS's 169.254.169.254) to steal sensitive information.
Solution Process
-
Deepening the Vulnerability Principle
- The server fails to strictly validate user-input URLs (e.g., received via a parameter like
url=), directly using functions likecurlorfile_get_contents()to initiate requests. - Advanced risks include:
- Protocol Abuse: Utilizing protocols like
file://,dict://,gopher://to read local files or interact with internal services (e.g., unauthorized Redis access). - URL Parsing Discrepancies: Parsing rules for symbols like
@and#differ across libraries (e.g., Python'srequestsvs. PHP'sparse_url()), which can be used to bypass blacklists. - Cloud Metadata Interfaces: Cloud server instance metadata interfaces (e.g., AWS/Alibaba Cloud) are typically accessible via internal IPs, potentially leaking instance keys and configuration information.
- Protocol Abuse: Utilizing protocols like
- The server fails to strictly validate user-input URLs (e.g., received via a parameter like
-
Attack Scenario Examples
- Step 1: Probing Internal Services
Attempt to modify the parameterurl=http://192.168.1.1:8080tourl=http://169.254.169.254/latest/meta-data/to verify if the server can access cloud metadata. - Step 2: Protocol Bypass Protection
If blacklists prohibithttp, try:- Using numeral encoding:
url=http://2130706433(decimal IP for127.0.0.1) - Leveraging redirects: First request a controllable redirect service (e.g., Burp Collaborator), which ultimately redirects to the target internal address.
- Using numeral encoding:
- Step 1: Probing Internal Services
-
Protection Strategies
- Whitelist Validation: Only allow access to predefined domains or IPs (e.g., only
api.trusted.com), rejecting unexpected protocols (e.g.,file://). - Network Layer Isolation: Restrict server outbound traffic, prohibiting access to internal IP ranges (e.g.,
10.0.0.0/8) and cloud metadata addresses. - Proxy Layer Filtering: Use intermediate proxies to perform secondary validation on outbound requests, blocking unconventional URL formats.
- Code Layer Hardening: Employ libraries like
urlparseto strictly parse URLs, avoiding generating request targets via string concatenation.
- Whitelist Validation: Only allow access to predefined domains or IPs (e.g., only
-
Real-World Cases
- An e-commerce platform accessed internal Redis via SSRF, using the
gopher://protocol to send commands and directly tamper with database data. - Fix Solution: Bind Redis to the local loopback address
127.0.0.1and set password authentication.
- An e-commerce platform accessed internal Redis via SSRF, using the
Through the above steps, one can systematically understand the advanced exploitation techniques of SSRF vulnerabilities and multi-dimensional protective measures.