跨站请求伪造(CSRF)那些事儿

1:跨站请求伪造概念(Cross-site request forgery,CSRF

           攻击者会伪造一个请求(请求的形式一般为一个链接),欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。

因此CSRF攻击也被称为“One click”攻击。

攻击者利用目标用户的身份,以目标用户的名义执行某些非法操作。

例如:以目标用户的名义发送邮件,发消息,盗取目标用户的账号,甚至购买商品,会泄露用户个人隐私。

攻击场景举例:

      (1)小黑想把Lucy的收货地址改成自己的。怎么办?首先的获得lucy的登录态

    (2)小黑在这个购物网站首先先注册一个账号,然后自己修改自己的收货地址,抓自己的包,把这个包(请求)发给lucy

   (3)一旦Lucy点击了这个请求,相当于Lucy以自己的身份提交了一个请求,把自己的地址改成了小黑的地址。如下图所示:

**CSRF的攻击过程有以下两个重点

           

           1:目标用户已经登录了网站,能够执行网站的功能。

           2:目标用户访问了攻击者构造的URL

——————————————————————————————————————————————————————————

     CSRF  VS XSS(区别)

        小黑黑在XXX网站的首页如果发现了一个XSS漏洞,则小黑可能会这样做:

1)欺骗用户lucy访问埋伏了XSS脚本(盗取cookie的脚本)的页面;

(2)lucy中招,小黑盗取到lucy的cookie信息

(3)小黑顺利登陆Lucy的后台,小黑自己修改lucy的相关信息;

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

2:跨站请求伪造测试流程总结

                                               如何确认一个web网站是否存在CSRF漏洞??

自己修改一下相关信息,然后抓下数据包,

      (1)看看数据包中是否有防止CSRF的一些措施,其实就是防止这个请求能否被伪造的一些措施,例如在修改密码前是否有验证旧密码以及OPT,因为旧密码攻击者是无法拿到的,

     (2)第二个就是看看数据包中有没有CSRF的Token,CSRF的Token是常用的防止CSRF的措施,Token是随机比较长的字符串,每次请求Token都不一样,因而很难仿造请求。

3:跨站请求伪造实验演示

首先lucy登录网站,用户名lucy:密码:123456

****如何确定这个存在CSRF漏洞呢》?

修改个人信息,首先这是敏感信息的修改,并通过burp-suite进行抓包,如下图所示:

Get请求

在Get请求里,提交的参数中没有看到CSRF的token,也就是后台应该是没有做防CSRF的措施的。

小黑如果想要获得上述的请求,可以自己注册账号,然后自己修改,通过抓包等到。

lucy通过聊天工具或者别的,收到了来自攻击者伪造的请求链接,在自己登录态的情况下,点击下述链接,以后就会发生变化

http://x.x.x.x/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=123456789012&add=shanxi&email=lucy%40pikachu.com&submit=submit

只要能伪造出链接,把该修改的参数,在URL中进行修改,然后将此链接发送给待登录态的用户,

用户点击了这个链接呢,那么攻击就会成功,信息就已经被篡改。

上述是一个get型的CSRF

*****************************************如果是POST型的呢?

抓包:所有的参数都是放在请求体里面的,因为无法通过URL来伪造这个请求

如何利用?

需要自己布置一个站点,在这个站点上制作一个表单,让lucy去点击恶意站点上表单的这个URL,通过表单的这个URL向存在CSRF漏洞的网站提交post请求。(和XSSpost方式下的利用场景类似)

4:token

每次提交请求的时候,往这个请求中增加随机码,随机码第一要足够随机,长度要足够长。

当每次提交修改个人信息的请求之后呢,后端就会调用一个函数随机生成TOken,

当你请求时,后台去session里面查看是否有这个token,如果有就销毁掉,重新生成一个token,复制到session里面。

每次刷新页面,都会生成一个新的token。

案例演示:

修改信息为:修改的同时利用burpsuit抓包

抓包情况如下:

修改个人信息之后,去看抓包情况

GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=%E5%A5%B3&phonenum=177777789XX&add=chengdu&email=123456%40k&token=7900960419c8a56e26183688195&submit=submit HTTP/1.1

后端生成一个token,前端是如何拿到这个token,以及怎么提交给后端进行验证的?

后端源码:

每个人session对应的token都是不一样的。

你get请求过来的这个token,一定要和我这个session里面的token要相等,否则

每次刷新界面,都会重新调用这个set_token,也就是销毁原来的生成新的。

 

5:跨站请求伪造相关防护措施

攻击目标必须具有登录态,设置登录超时时间,把后台的登录态关掉。

不要一直处于登录状态,因为你这CSRF有个其中很重要的条件,必须满足对方登录态,

否则无法进行攻击。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值