CSRF和SSRF
做完了pikachu平台的实验了,回想了一下这两个长的好像,那他们有啥区别和各自的特点吗?
本文是在基于网上的知识,自己总结学习的。
CSRF(跨站请求伪造),Cross-site requestforgery
听到跨站,我们会想到xss(Cross-Site Scripting)的跨站脚本攻击,
不同的是CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,
而XSS是直接盗取到了用户的权限,然后实施破坏,也可以换一句话说xss是实现CSRF的途径的其中一条。
XSS是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的脚本语句被执行。
发生条件:CSRF利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)
利用:
对于很多网站来说,即使是一些重要的操作使用POST来提交请求,但是服务器再接收请求的时候并没有严格区分POST和GET。在PHP中滥用$_REQUEST就是例子。
如果服务端已经区分了GET,POST只用POST请求数据,可以通过制造一个隐藏的表单,并通过js代码自动提交伪造的表单。
案例可见:https://www.cnblogs.com/7-58/p/12360366.html
防范措施见:https://www.cnblogs.com/7-58/p/12453909.html
SSRF(服务器端请求伪造) Server Side RequestForgery
它是由服务端发起的,所以它能够请求到与它相连但与外网隔离的内部系统。
由于服务端提供了从其他服务器应用获取数据的功能(例如分享等功能)且没有对目标地址做过滤与限制,给予了攻击者乘虚而入的机会。
比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。SSRF是利用存在缺陷的web应用作为代理攻击远程和本地的服务器
案例可见pikachu平台的实验:https://www.cnblogs.com/7-58/p/12401252.html
总结区别:
CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。
SSRF是服务器对用户提供的可控URL过于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。