一、ssrf,全称:Server-Side-Request-Forgery服务端请求伪造

  二、我们正常发出的请求都是经过我们的浏览器,由我们自己的电脑发出的;而存在ssrf的目标网站,我们输入某个网址,则由目标网站所在的服务器向这个网址发起请求。这样往往可以突破网络访问限制,访问我们本身访问不到的内容。

  比如:很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器。

  

  SSRF漏洞:SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。因为由服务端发起请求,所以它能够请求到与它相连而与外网隔离的内部系统,主要原因在于未对目标地址做过滤与限制。攻击者可以利用该漏洞绕过防火墙等访问限制,进而将受感染或存在漏洞的服务器作为代理进行端口扫描,甚至是访问内部系统数据(转载freebuf)

  三、ssrf漏洞的危害:

(1)、可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;通过对这些端口进行http访问,根据返回信息的大小、状态码、错误信息等来判断端口开启情况

(2)、攻击运行在内网或本地的应用程序(比如溢出);

(3)、对内网Web应用进行指纹识别,通过访问默认文件实现; 因为很多应用都有一些特有的文件名字或者路径、路径名字等,通过访问这些东东,来进行应用识别

(4)、攻击内外网的Web应用,主要是使用Get参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等); 存在ssrf漏洞的服务器就像是我们的一个代理,通过这个代理,我们可以访问代理能访问而我们不能访问的应用、网站等。

(5)、利用File协议读取本地文件。file:///

四、攻击场景:大部分的web服务器架构中,web服务器自身都可以访问互联网和服务器所在的内网。下图展示了web服务器的请求可以到达的地方。

五:如何防御:

通常有以下5个思路:

1,过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

2, 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

3,限制请求的端口为http常用的端口,比如,80,443,8080,8090。

4,黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

5,禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

六、攻击演示:https://github.com/sethsec/Nodejs-SSRF-App  http://www.freebuf.com/vuls/92423.html

参考:

1、https://sethsec.blogspot.com/2015/12/exploiting-server-side-request-forgery.html

2、上面的中文版:http://www.freebuf.com/vuls/92423.html

3、http://www.freebuf.com/articles/web/135342.html

4、http://www.freebuf.com/articles/web/20407.html

最新文章

  1. *** wechat-php-sdk 微信公众平台php开发包
  2. WAP站点(IIS/Apache)的服务器设置
  3. <1 小玩意(覆盖效果)
  4. (medium)LeetCode 233.Number of Digit One
  5. js判断一个对象是否包含属性的方式
  6. C++标准文档下载
  7. 用MATLAB实现字符串分割
  8. Swift内存管理-示例讲解
  9. Asp.net 引用css/js资源文件
  10. Cocos2d-x实现粒子效果的三种方式
  11. ExtJS练手
  12. Swift - 35 - 使用闭包简化语法
  13. \r \r\n \t 的区别
  14. Sql Server远程查询db 表中的数据,以本地
  15. 将angular-ui-bootstrap的弹出框定义成一个服务的实践
  16. java设计模式之代理设计模式(Proxy)
  17. Linux常用命令(第二版) --Shell应用技巧
  18. Exp2 后门原理与实践
  19. weblogic安装部署ODM下jrules-res-xu-WL10.rar出现Can't find com.ibm.rules.res.xu.messages bundle异常
  20. C#学习-静态

热门文章

  1. IOS开发学习笔记038-autolayout 自动布局 界面实现
  2. RSA进阶之共模攻击
  3. Django中从本地上传excel文件并将数据存储到数据库
  4. docker exec小脚本
  5. HDU 2036 求任意多边形面积向量叉乘
  6. log4j.xml配置文件详解
  7. 【CF1043B】Lost Array(枚举)
  8. 数据库一直显示"正在恢复"
  9. 【自己的练习git】自己的git练习
  10. 学习good taste代码