pikachu靶场-3 跨站请求伪造(CSRF)
创始人
2024-04-22 11:52:11

跨站请求伪造(CSRF)

Cross-site request forgery简称为”CSRF“

在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接)

然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。

所以CSRF攻击也被称为”one click“攻击。

我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。

CSRF与XSS的区别:

CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取了用户的权限,然后实施破坏。

如何确认一个web系统存在CSRF漏洞:

  1. 对目标网站增删改的地方进行标记,并观察逻辑,判断请求是否可以伪造

    ——比如修改管理员账号时,并不需要验证旧密码,导致请求容易被伪造;

    ——比如对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造;

  2. 确认凭证的有效期(这个问题会提高CSRF被利用的概率)

    ——虽然退出或者关闭了浏览器,但cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变得简单。

CSRF(get)

我们进入CSRF(get)这关,进来以后让我们输入用户名和密码

image-20221211100546671

我们点一下提示,可以获取到用户名和密码,我们这里随便用一个就行

image-20221211100506367 image-20221211100722502

我们登录进来以后,点击修改个人信息就可以随便修改。

image-20221211100834144

那么我们如何知道这个地方是否存在CSRF漏洞呢?

这里其实是一个敏感信息的修改,我们打开burp看一下刚才的get请求

image-20221211101231434
GET /pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=taiyuan&email=lucy%40pikachu.com&submit=submit

这个get请求实际上是向后台传递了刚才的所有参数,而且我们并没有在这个提交的参数里看到csrf token,也就是说后台这里是没有做一些防CSRF的措施的,同时他又是通过get请求来提交的,如果有人相对它进行修改,他就只需要获取到这个链接,然后就可以对一些地方进行修改,然后通过邮件,聊天工具等发送给受害者,受害者点击后就会被修改信息。实际上,在lucy敲下回车键的时候,他的浏览器就会以他现在的登录态向后端发送这个请求,这样他的个人信息就被修改掉了。

get型的CSRF是比较好利用的,我们只需要伪造这个链接,然后把我们想要修改的参数修改掉,然后发送给带登录态的攻击者,他只要点击,这个请求就完成了,这个攻击也完成了。

CSRF(post)

如果是post型的CSRF呢,我们看一下:

我们还是登录去修改信息,然后提交,去burp看一下数据包:

image-20221211102959591

这次的提交是通过post方式去传播的,所有的请求是在这个请求体里面去传输的,也就是说我们没办法通过url去伪造这个请求。这个时候利用方法其实和我们之前那个XSS是一样的,我们需要去布置一个自己的站点,然后在这个站点上做一个表单,然后让lucy去点我们这个恶意网站的url,去向存在csrf漏洞的这个页面提交请求。

token详解及防范措施

token是如何防止CSRF的?

CSRF的主要问题是敏感操作的链接容易被伪造,那么如何让这个链接不容易被伪造呢?

—每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对这个随机码进行验证!

image-20221211104127587

我们可以看到这个请求和我们之前的get请求基本一样,但是多了一个token值

image-20221211104442349

我们通过开发者工具可以看到,点击修改按钮会访问一个token_get_edit.php这个文件,这个文件就会生成一个token,它会把这个token去echo到前端。

image-20221211104713111

我们可以通过查看表单看到,这里它埋了一个token,这个是隐藏的,前端是看不到的,但是它其实是在你的源码里面,你在提交的时候,token也会被提交,后台会对这个token进行一个验证,一样才会提交,不一样的话就不允许提交。token是随机的并且是唯一的。这样别人的伪造链接的token是验证不过去的,所以token有效的防止了CSRF。

防范措施
  • 增加token验证(常用的做法)

    1. 对关键操作增加token参数,token值必须随机,每次都不一样;
  • 关于安全的会话管理(避免会话被利用)

    1. 不要在客户端保存敏感信息(比如身份认证信息);
    2. 操作完成直接关闭,退出时,要把后台登录态注释掉;
    3. 设置会话过期机制,比如15分钟内无操作,则自动登陆超时;
  • 访问控制安全管理

    1. 敏感信息的修改时需要对身份进行二次认证,比如修改账号时,需要判断旧密码;
    2. 敏感信息的修改使用post,而不是get;
    3. 通过http头部中的referer来限制原页面,一定要来自本域;
  • 增加验证码

    一般用在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性);

st,而不是get;
3. 通过http头部中的referer来限制原页面,一定要来自本域;

  • 增加验证码

    一般用在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性);

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...