CSRF
CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
当用户访问含有恶意代码的网页时,会向指定正常网站发送非本人意愿的数据请求包(如转账给hack,向hack发送API等)如果此时用户恰好登录了该正常网站(也就是身份验证是正常的)就会执行该恶意代码的请求,从而造成CSRF。
与在XSS章节中提到的在博客里写入获取cookie的代码,在管理员登录后台查看时就会窃取其cookie有异曲同工之妙
跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
CSRF可用来修改用户信息,添加管理员账号密码,更改管理员密码等操作
数据包来源:大部分是通过本地搭建和目标网站相同源码,抓包分析。
注意网站功能 更新 添加 删除等
防御
增加验证码机制,增加带有大量噪点的验证码,杜绝代码能够识别的简单验证码,当然了也经常被绕过
验证referer,采用同源政策,referer记录着数据包的来源地址,来判断请求的合法性,但是这个可以伪造
使用Token,令牌是一种将表单value的加密算法生成不同的加密结果,在服务器端进行验证。
在访问登录过一个网站,点击退出账户。
SSRF
又名服务端请求伪造攻击
有的大型网站在web应用上提供了从其他服务器获取数据的功能。使用户指定的URL web应用获取图片,下载文件,读取文件内容。攻击者利用有缺陷的web应用作为代理攻击远程和内网的服务器(跳板)没有对目标地址做过滤与限制
危害:
可对外网,服务器所在内网,受控服务器进行端口扫描,获取一些banner
对内网web应用进行指纹识别,通过访问默认文件实现
攻击内外网web应用,主要是使用get参数就可以实现分攻击
利用file协议读取本地文件
例子
服务器自己请求自己
通过远程请求的方式,访问内网其他服务器。
修复方案:
过滤返回信息,如果web应用数去获取某一类型文件,在把结果返回给用户之前先验证信息是否符合标准。
例如:当攻击者利用"识别图片"下的该漏洞远程包含一个文件,可以通过在服务器上验证返回数据是否是纯像素,来进行过滤。
统一错误页
限制请求端口为http常用端口 80,443,8080,8090
内网IP黑名单,避免应用被用来获取内网数据,攻击内网