服务端请求伪造SSRF

SSRF形成的原因,大都是由于服务端提供了从其他服务器或应用中获取数据的功能,但是却没有对目标地址进行有效的过滤和限制。
**

防护绕过

**
一些开发者使用正则表达式来对SSRF中的请求地址进行过滤:

  • 限制请求特定域名
  • 限制请求内网ip

这两种过滤都很容易被绕过:

  • 使用http://[email protected] 这种格式来绕过正则。
  • IP地址转化为八进制、十进制、十六进制及IP地址省略写法

(0177.00.00.01八进制;2130706433十进制;0x7f.0x0.0x0.0x1十六进制;127.1省略写法)这四种都可以表示地址127.0.0.1。

  • 配置域名。当手中有可控域名,则可以将域名A记录指向想要请求的IP进行绕过操作

eval.example.com => 10.0.18.3
**

危害与利用技巧

**
利用SSRF漏洞进行的攻击类型有很多,主要看服务端允许的协议类型,主要有这5种:

  1. 端口扫描。
    通过应用响应时间、返回的错误信息、返回的服务Banner来判断端口是否开放。
  2. 攻击内网或本地存在漏洞的服务。
  3. 对内网web应用进行指纹识别及攻击其中存在漏洞的应用。
  4. 文件读取。
    如果攻击者指定了file协议,则可以通过file协议来读取服务器上的文件内容。比如:

http://example.com/ssrf.php?url=file:///etc/passwd

  1. 命令执行。
    php环境下如果安装了expect扩展,还可以通过expect协议来执行系统命令。比如:

http://example.com/ssrf.php?url=expect://id

你可能感兴趣的:(安全)