简述CSRF、SSRF的区别
在下进入网络安全行业不久,目前对Web漏洞可谓是一知半解似懂非懂。正巧公司下午进行考核,对在下来说颇有种赶鸭子上架的体验。其中有这样一道试题:
“请简述CSRF、SSRF与会话重放的区别”
说实话,上述三种漏洞,我也接触过不少了,但被这么一问,却仿佛三九天坠入了冰窟一般,一下就懵了。
考试结束后,在下赶紧查阅了相关的资料,才发现其中的学问比我要想像的深奥许多。那就撸起袖子学学呗,学以致用,在下将所学融会贯通,完成了这篇文章。这里,会话重放暂且不提,在下总结了一下CSRF与SSRF的概念与区别。
CSRF:
CSRF,本名为Cross-site requestforgery,也就是跨站请求伪造。
说到CSRF,不得不提一下XSS。CSRF看起来好像和XSS跨站脚本攻击有着“不得不说的秘密”,实则却是两个不同维度的情况。从名字上来看,同为跨站攻击,XSS攻击是跨站脚本攻击,CSRF攻击是请求伪造,也就是CSRF攻击本不是出自用户之手,却经过第三方恶意攻击者的处理,伪装成了受信任用户的“亲历亲为”。
我们所能见到的大部分网站,都是通过cookie等方式记录、分辨出受信任用户的身份,再予以授权的。所以要伪造用户的正常操作,最好的方法是通过XSS或链接引导等途径,让用户在本机发起自己所不知道的危险请求,使得恶意攻击有机可乘,获取用户cookie等信息,以达到身份伪装目的。看到这里不知您是否有所明白,XSS是实现CSRF的诸多途径中的一条,但并不是唯一的一条。
我们平日里做的web漏洞挖掘,一般都是在用户修改密码界面验证CSRF漏洞,因为这是最能体现该漏洞危害的地方之一。就如前文所说,XSS可以在用户不知情的情况下,引导用户点击恶意链接修改用户密码。
图源:百度百科CSRF词条
SSRF:
SSRF,也就是Server Side RequestForgery—服务器端请求伪造。从字面上来看,与CSRF不同的是,它是服务器端发出的请求伪造而非从用户一端提交。别误会,作为受信任用户,服务器当然不可能做出损害用户信息的事。它是一种由攻击者构造形成,由服务端发起请求的一个安全漏洞。因为它是由服务端发起的,所以它能够请求到与它相连但与外网隔离的内部系统。由于服务端提供了从其他服务器应用获取数据的功能(例如分享等功能)且没有对目标地址做过滤与限制,给予了攻击者乘虚而入的机会。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。SSRF是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。
我们来举个例子说,如何查询自己的外网IP?最简单的可能就是百度搜索框中输入“IP”进行查询。 图中111.113.*.83,这是我的原IP,如果我用其他服务器载入这个网页的话,比如用某翻译的浏览器插件翻译当前页面: 可以看到我的IP变成了61.135.217.12,地址也换了,这就是SSRF漏洞。图中的结果并不是翻译插件直接翻译网页内容,而是用该插件的服务器加载了此页面。虽然服务器并不是恶意,但我们所收到的信息还是出现了偏差。
总的来说,CSRF是服务器端没有对用户提交的数据进行严格的把控,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。而SSRF是服务器对用户提供的可控URL地址过于信任,没有经过严格检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
(部分内容摘自其他论坛)
来源:freebuf.com 2019-01-28 22:36:01 by: 凯信特安全团队
请登录后发表评论
注册