文章目录
前言
系统的梳理下CSRF和SSRF的知识点
一、CSRF
1.CSRF的简介
CSRF又称跨站请求伪造,XSS就是CSRF中的一种。跨站请求伪造指的是伪造客户端请求。
发生条件:
用户在正常网站A登录的情况下
访问了保存有恶意代码的另一个网站B
B网站劫持用户的登陆状态以用户的身份对网站A发送请求,一般是劫持了COOKIE信息。
当服务端对这次请求无验证的情况下,会通过此次请求并视为可信的用户的操作。
2.CSRF的防御与检测
对CSRF的检测可以使用手工测点,一般在用户操作的点上。
也可以使用如CSRFTester这类工具,将抓取过的链接及表单信息修改了之后相当于伪造了客户端请求,如果此请求成功背网站服务器接受,则存在CSRF漏洞,也可以用此工具进行CSRF攻击。
对CSRF的防御可以:
1.对HTTP Referer字段进行验证,这个字段记录了HTTP的请求的来源地址,可验证此来源是否可信、是否合规来避免CSRF攻击,但是黑客完全可以把用户浏览器的 Referer 值伪造成源网站的地址,这样就可以通过验证,从而进行 CSRF 攻击。
2.在请求地址中添加 token 并验证
可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。但要注意token内容最好随机并且不可预测。
3.在 HTTP 头中自定义属性并验证
在HTTP头中自定义的属性里,通过XMLHttpRequest 这个类可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。同时避免通过这个类请求的地址不会被记录到浏览器的地址栏,也不会担心token回通过Referer泄露到其他网站。
当然此方法局限性很大,这个类一般用于Ajax方法中,一些操作对用户带来不便,所以建议使用上面两种方式。
二、SSRF
1.SSRF简介
SSRF叫做服务端请求伪造攻击。
有的大型网站在web应用上提供了从其他服务器获取数据的功能。使用户指定的URL web应用获取图片,下载文件,读取文件内容。攻击者利用有缺陷的web应用作为代理攻击远程和内网的服务器(跳板)。
攻击的目标是从外网无法访问的内部系统
Web应用脚本提供了从其他服务器应用获得数据的功能,但没有对目标地址进行过滤和限制
2.SSRF容易出现的地方
社交分享功能
转码服务
在线翻译
图片加载/下载图片到本地
图片/文章收藏功能
云服务厂商
网站采集,网站抓取的地方
数据库内置功能
邮件系统
编码处理, 属性信息处理,文件处理
常见的