ssrf(服务器端请求伪造)原理

      攻击者构造形成由服务端发起请求的一个漏洞。把服务端当作跳板来攻击其他服务,SSRF的攻击目标一般是外网无法访问到的内网

      当服务端提供了从其他服务器获取数据的功能(如:从指定URL地址获取网页文本内容、加载指定地址的图片、下载等),但是没有对目标地址做过滤与限制时就会出现SSRF。

 

成因

    大部分是由于服务端提供啦从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

SSRF的危害

           可以扫描内部网络
            可以构造数据攻击内部主机

相关函数

  file_get_content()

  curl-curl_exec()

  socket-fsockopen()

 

漏洞挖掘

 

1. 从WEB功能上寻找
    通过URL分享内容
    文件处理、编码处理、转码等服务
    在线翻译
    通过URL地址加载与下载图片
    图片、文章的收藏
    设置邮件接收服务器
2. 从URL关键字寻找
    share、wap、url、link、src、source、target、u、3g、
    display、sourceURl、imageURL、domain...

漏洞验证:

http://www.douban.com/***/service?image=http://www.baidu.com/img/bd_logo1.png
1. 右键在新窗口打开图片,若浏览器上URL地址为http://www.baidu.com/img/bd_logo1.png,
    说明不存在SSRF漏洞。  
2. firebug看网络连接信息,若没有http://www.baidu.com/img/bd_logo1.png
    这个图片请求,则证明图片是豆瓣服务端发起的请求,则可能存在SSRF漏洞。

绕过过滤:

* 使用@:http://A.com@10.10.10.10 = 10.10.10.10
* IP地址转换成十进制、八进制:127.0.0.1 = 2130706433
* 使用短地址:http://10.10.116.11 = http://t.cn/RwbLKDx
* 端口绕过:ip后面加一个端口
* xip.io:10.0.0.1.xip.io = 10.0.0.1
        www.10.0.0.1.xip.io = 10.0.0.1
        mysite.10.0.0.1.xip.io = 10.0.0.1
        foo.bar.10.0.0.1.xip.io = 10.0.0.1
* 通过js跳转

漏洞修复:
  1.
过滤返回信息。

2.同一错误信息,避免用户可以根据错误信息来判断远程服务端口状态
   3.限制请求的端口为http常用的端口,比如,80.443.8080
   4.黑名单内网IP。避免应用被用来获取内网的数据。
5.禁用不需要的协议。