目录
一、概念
SSRF漏洞(服务器端请求伪造):是一种由攻击者构造形成由服务端发起请求的一个安全漏
洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
你可以这么来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
二、漏洞形成原因
CSRF漏洞产生的原因是网站对用户的身份没有进行严格的认证,导致用户的身份令牌被盗用,从而造成用户信息泄露或用户信息被修改等。
三、漏洞利用条件
- 攻击者伪造的链接信息和受害者是同一个浏览器
- 用户没关浏览器
- 用户访问了攻击者的链接
四、防御
1.将cookie设置成Httponly。
CSRF攻击很大程度上是利用了浏览器的cookie,为了防止站内XSS漏洞,cookie设置Httponly的属性,js脚本就无法读取到cookie信息,避免攻击者伪造cookie的情况。
2.验证referer字段:校验HTTP Referer字段可以保证相关敏感操作来自授权站点的跳转。在HTTP协议中,定义了一个访问来源的字段,即HTTP_REFERER。站点可以在后端校验Referer是否来自于正常的站内跳转。如果攻击者诱导用户点击跳转链接,则Referer就为攻击者的主机,与网站内部内部跳转情况下的Referer字段不同。
3.二次验证机制:在敏感操作时候,不再直接通过某个请求执行,而是再次验证用户口令或者再次验证类似验证码等随机数。如:转账时,要求用户二次输入密码,短信验证码,图片验证码等。
4.增加Token参数进行校验:在敏感操作的参数中,增加完全随机的Token参数进行校验。这是目前业内防止CSRF攻击最常用的方法。因为CSRF产生的根本原因是,进行敏感操作时用户每次发送的请求都完全相同。因此,攻击者就可以把这样的请求进行封装包裹,诱导用户点击链接并发出请求。而如果在进行敏感操作时,增加完全随机的Token参数,每次进行敏感操作时发送的请求都不完全相同,攻击者也就没有办法伪造出一个合法的敏感操作请求,也就无法实施CSRF攻击。
五.CSRF漏洞检测
1.手动
- 抓取正常请求包,判断请求头中是否含有referer字段和token字段,如果没有那就可能存在CSRF漏洞
- 如果由referer字段,去掉referer字段后再提交请求,如果响应成功,则证明存在CRSF漏洞
2.工具
随着对 CSRF 漏洞研究的不断深入,不断涌现出一些专门针对 CSRF 漏洞进行检测的工具,如CSRFTester,CSRF Request Builder 等。
六、CSRF的利用
CSRF漏洞的payload类型
1.图片的srtc属性-----GET请求
2.超链接---GET请求
3.构建一个隐藏的表单,用户访问,自动提交------POST请求
七、漏洞用途
发送钓鱼邮件、盗用用户账号、网银转账、使用他人账号购买商品等,具体的危害跟存在漏洞的具体业务系统有关。