作者: 1e0n 免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。
0x00 前言
之所以写CSRF是因为最近都是各种RCE,偶然看到CSRF,觉得大脑一片空白,于是赶紧恶补了一下,写下来也算是加深一下印象。话不多说,进入正题。WEB安全 | CSRF的原理及防御
1.CSRF的原理
2.CSRF简单实验
3.CSRF的防御
0x01 CSRF漏洞的原理
1.1 什么是CSRF?
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
通俗的来就是攻击者盗用正常用户的身份,以正常用户的名义执行攻击者想发送的恶意请求。
1.2 必要条件
CSRF也并不是不需要特定条件的,它的基本需要至要少满足以下两点。
1.正常用户登录受信任的网站,并生成Cookie。
2.在不登出受信任网站(或Cookie仍有效)时登录恶意网站。
1.3 CSRF的原理分析
WEB应用通过会话ID来认定访问请求是否来自正常用户,正是这样的认证机制存在漏洞。假设攻击者冒充或利用正常用户对WEB应用发起请求,WEB应用就没办法判断是否是正常用户。CSRF利用这个特性,通过各种手段,诱骗正常用户点击伪造的恶意请求。正常用户点击后携带自己的Cookie和会话ID在不知不觉中执行了攻击者的恶意请求。可能说着有点绕,画张图更加形象。 简单来说就是五个步骤:
1.正常用户用自己的合法身份登录WEB应用。
2.WEB应用认证成功后,向正常用户返回一个会话ID。
3.正常用户在会话ID和Cookie有效期内,访问了攻击者构造的恶意网站。
4.攻击者在WEB网页中嵌套恶意脚本(脚本的目的是发起恶意请求,如转账、发信等)。
5.恶意脚本在正常用户的浏览器上被执行,继而发送恶意请求到WEB应用。由于是正常用户发起的请求,所以请求会被成功发送并执行操作。
0x02 CSRF的简单实验
借用了某靶场环境,攻击手段切勿用于未授权真实环境。
下图为靶场环境,提示按钮里是多个账户密码。 随便登录一个,这里是模拟正常用户登录,也就是上面五个步骤的第一步和第二步。 这里可以修改个人信息,点进去尝试修改住址信息。这里需要抓个包查看发送的请求具体参数。 如图中burp抓到的get请求。攻击者提前构造好恶意脚本(执行恶意请求),比如把地址改成其他信息。再诱骗正常用户点击恶意脚本,恶意脚本就会在正常用户的浏览器上发送恶意请求成功后如下图。 PS:恶意请求的构造必须要知道完整的请求参数!
0x03 CSRF的防御
CSRF的防御主要有以下几点。
1.验证Referer字段
简单来说就是验证该网页是从哪个页面链接来的。
2.添加Token验证
这种方式是当前最常见的一种CSRF防御方式,在发送的请求字段里添加一个随机Token值,如果发送的请求里没有或值不正确,请求则无效。
3.二次验证
在转账等关键操作之前提供当前用户的密码或者验证码。这个已经很常见了,比如支付密码,手机验证码等。
0x04 了解更多安全知识
欢迎关注我们的安全公众号,学习更多安全知识!!! 欢迎关注我们的安全公众号,学习更多安全知识!!! 欢迎关注我们的安全公众号,学习更多安全知识!!!
|