1.跨站点请求伪造(CSRF)
1.1 简介
CSRF攻击的全称是跨站请求伪造( cross site request forgery ):
是一种对网站的恶意利用,尽管听起来跟XSS跨站脚本攻击有点相似,但事 实上CSRF与XSS差别很大,XSS利用的是站点内的信任用户,而CSRF则是通过 伪装来自受信任用户的请求来利用受信任的网站。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R26PAYws-1640103451172)(../../../Library/Application%20Support/typora-user-images/image-20211221235529912.png)]
简单理解:一种可以被攻击者用来通过用户浏览器冒充用户身份向服务器发送 伪造请求并被目标服务器成功执行的漏洞被称之为CSRF漏洞。
特点:
用户浏览器:表示的受信任的用户
冒充身份:恶意程序冒充受信任用户(浏览器)身份
伪造请求:借助于受信任用户浏览器发起的访问
1.2 CSRF攻击原理
1.3 漏洞危害分析
CSRF攻击特点:
攻击时机:网站的cookie在浏览器中没有过期,不关闭浏览器或者退出登录
攻击前提:对目标网站接口有一定了解
攻击难度:攻击难度高于XSS
与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当 稀少)和难以防范,所以被认为比XSS更具危险性。
危害: 修改密码、网银转账 ......
1.4 安全防护
- 区分是否为伪造请求
- 二次验证
referer校验:
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一 般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可 以获得一些信息用于处理。
业务二次校验:
- 修改密码,需输入原密码
- 交易系统设置交易密码
- 增加图形验证码校验
- 网银转账短信验证码
2、点击劫持
2.1 攻击原理
点击劫持(Click Jacking),也被称为UI覆盖攻击。
1、黑客创建一个网页利用iframe包含目标网站;隐藏目标中的网站,是用户无法察觉到目标网站的存在;
诱使用户点击图中特定的按钮。特定的按钮为位置和原网页中关键按钮位置一致
2 、用户在不知情的情况下点击按钮,被引诱执行了危险操作
2.2 攻击方式
两种方式:
一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该 页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面;
二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义
2.3 解决办法
使用一个HTTP头——X-Frame-Options。X-Frame-Options可以说是为了解决 ClickJacking而生的,它有三个可选的值:
- DENY:浏览器会拒绝当前页面加载任何frame页面;
- SAMEORIGIN :frame页面的地址只能为同源域名下的页面;
- ALLOW-FROM origin:允许frame加载的页面地址;
nginx配置:
add_header X-Frame-Options SAMEORIGIN;
3、图片覆盖攻击与防护
图片覆盖攻击(Cross Site Image Overlaying),攻击者使用一张或多张图 片,利用图片的style或者能够控制的CSS,将图片覆盖在网页上,形成点击劫 持。当然图片本身所带的信息可能就带有欺骗的含义,这样不需要用户点击, 也能达到欺骗的目的。
防护
在防御图片覆盖攻击时,需要检查用户提交的HTML代码中,img标签的style属 性是否可能导致浮出。
4、URL跳转漏洞
URL跳转漏洞(URL重定向漏洞),跳转漏洞一般用于钓鱼攻击。
https://link.zhihu.com/?target=https://www.baidu.com/
4.1 原理:
URL跳转漏洞本质上是利用Web应用中带有重定向功能的业务,将用户从一 个网站重定向到另一个网站。其最简单的利用方式为诱导用户访问http://www. aaa.com?returnUrl=http://www.evil.com,借助www.aaa.com让用户访问wwww.evil.com,这种漏洞被利用了对用户和公司都是一种损失。
4.2 防护方案
限制referer、添加token,这样可以避免恶意用户构造跳转链接到处散播,修复该漏洞最根本的方法还是上述的严格检查跳转域名。
- 代码固定跳转地址,不让用户控制变量
- 跳转目标地址采用白名单映射机制 比如1代表www.goole.cn,2代表www.baidu.com,其它记录日志
- 合理充分的校验机制,校验跳转的目标地址,非己方地址时告知用户跳转风x险
5、Session攻击
5.1 会话(Session)劫持
会话劫持(Session hijacking)就是一种通过窃取用户SessionID后,使用该 SessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户的 有效Session。如果SessionID是保存在Cookie中的,则这种攻击可以称为 Cookie劫持。
5.2 会话固定(Session fixation)
会话固定(Session fixation)是一种诱骗受害者使用攻击者指定的会话标识 (SessionID)的攻击手段。这是攻击者获取合法会话标识的最简单的方法。让 合法用户使用黑客预先设置的sessionID进行登录,从而是Web不再进行生成新 的sessionID,从而导致黑客设置的sessionId变成了合法桥梁。
5.3 Session保持攻击
一般来说,Session是有生命周期的,当用户长时间未活动后,或者用户点击退 出后,服务器将销毁Session。Session如果一直未能失效,会导致什么问题 呢?前面的章节提到session劫持攻击,是攻击者窃取了用户的SessionID,从 而能够登录进用户的账户
但如果攻击者能一直持有一个有效的Session(比如间隔性地刷新页面’以告诉服 务器这个用户仍然在活动),而服务器对于活动的Session也一直不销毁的话, 攻击者就能通过此有效Session—直使用用户的账户,成为一个永久的‘后门