关于SSRF与CSRF漏洞的解释( 二 )

  • 图片、文章收藏功能
  • 未公开的api实现以及其他调用URL的功能
  • 从URL关键字中寻找
  • share
    wap
    url
    link
    src
    source
    target
    u
    3g
    display
    sourceURl
    imageURL
    domain
    ...
    6、常用SSRF去做什么事
    • 利用执行脚本进行端口探测
    • 任意地址访问
    • 内网访问
    • 任意文件读取
    • 内网攻击
    7、绕过方法(绕开一般ssrf的防护)1、更改IP地址写法一些开发者会通过对传过来的URL参数进行正则匹配的方式来过滤掉内网IP,如采用如下正则表达式:
    ^10(.([2][0-4]d|[2][5][0-5]|[01]?d?d)){3}$^172.([1][6-9]|[2]d|3[01])(.([2][0-4]d|[2][5][0-5]|[01]?d?d)){2}$^192.168(.([2][0-4]d|[2][5][0-5]|[01]?d?d)){2}$对于这种过滤我们可以采用改编IP的写法的方式进行绕过,例如192.168.0.1这个IP地址我们可以改写成:
    (1)、8进制格式:0300.0250.0.1(2)、16进制格式:0xC0.0xA8.0.1(3)、10进制整数格式:3232235521(4)、16进制整数格式:0xC0A80001还有一种特殊的省略模式,例如10.0.0.1这个IP可以写成10.12、利用解析URL所出现的问题在某些情况下,后端程序可能会对访问的URL进行解析,对解析出来的host地址进行过滤 。这时候可能会出现对URL参数解析不当,导致可以绕过过滤 。
    http://www.Jeromeyoung.com@192.168.0.1/当后端程序通过不正确的正则表达式(比如将http之后到com为止的字符内容,也就是www.Jeromeyoung.com,认为是访问请求的host地址时)对上述URL的内容进行解析的时候,很有可能会认为访问URL的host为www.Jeromeyoung.com,而实际上这个URL所请求的内容都是192.168.0.1上的内容 。
    8、防护SSRF措施(1)(黑名单)过滤10.0.0.0/8 、172.16.0.0/12、192.168.0.0/16、localhost私有地址、IPv6地址
    (2)(黑名单)过滤file:///、dict://、gopher://、ftp:// 危险schema
    (3)使用地址白名单
    (4)内网服务开启鉴权(Memcached, redis, Elasticsearch and MongoDB)
    (5)对回显内容进行识别,采取限制措施
    (6)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用 CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致
    CSRF跨站请求伪造(也叫点击攻击)Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了 。所以CSRF攻击也成为"one click"攻击 。很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的 。
    1、CSRF攻击原理程序员开发的时候,未对相关页面进行token和referer判断,造成攻击者可构造自己的URL地址欺骗目标用户进行点击 。(点击后因为未对相关页面进行token和referer判断,即链接中没得带token或者数据包中没得referer这类的操作,所以链接地址没得校验操作直接执行了)其实也就是像下面的重要页面的防范措施没有做到位
    以例子进行说明:
    当我们打开网站或者登陆某个网站后,就会产生一个会话(这里指用户登陆后),这个会话可能是SESSION,Cookie控制,但是这是无关紧要的 。唯一的重点是浏览器与服务器之间是在会话之中,在这个会话没有结束时候,你可以利用你的权限对网站进行操作,如进行发表文章,发邮件,删除文章等操作 。当这个会话结束后,你在进行某些操作时候Web应用程序通常会来提醒你,您的会话已过期,或者是请重新登陆等提示 。
    这非常好理解,就像我们登陆网上银行后,Web浏览器已经跟可信的站点建立了一个经认证的会话 。之后,只要是通过该Web浏览器这个认证的会话所发送的请求,都被视为可信的动作,例如转账,汇款等操作 。当我们在一段时间内不进行操作后,在来重新做转账,或者汇款操作,那么这个站点可能会提示你:您的身份已过期,请重新登陆或者会话结束等消息 。
    而CSRF攻击则是建立会话之上的攻击 。比如当你登陆了网上银行,正在进行转账业务,这时你的某个QQ好友(攻击者)发来一条消息(URL),这条消息是攻击者精心构造的转账业务代码 。而且与你所登录的网站是同一个银行,你可能认为这个网站是安全的,并不是什么钓鱼网站之类的,然后打开了这条URL,那么你的账户的钱可能就在你的这一次小小点击上全部丢失 。


    推荐阅读