Walks

网络安全爱好者

浅谈CSRF和CRLF

     最近为了学习XSS看了一个JS的教程,感觉自己对于XSS的理解更深刻了一些,所以想要写一写关于XSS的知识汇总。

     那说道XSS的学习,CSRF怎能不谈,下面就来谈一谈CSRF。

     那什么是CSRF?

百度百科上面的解释为:CSRF(Cross-site request forgery跨站请求伪造,也被称为”One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来

像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往

往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

下面谈谈我对CSRF的个人理解:我认为,CSRF就是一种攻击手法,通过伪造一些表单或者请求,来让登陆过的用户进行点击,当用户点击过后,就达到了攻击者的目的。利用情况通常在一些

个人信息修改,修改密码的部分,就是登陆过的用户可以进行的操作。

下面是加深理解的一张图。

《浅谈CSRF和CRLF》

有些人可能会问了,这是怎么回事呢?

下面WALKS将会带你进入CSRF课堂。

     CSRF原理课堂~

首先,在我们访问一个网站的时候,其实我们是发送一个HTTP/HTTPS请求,然后服务器返回一个返回包,经过浏览器解析,我们才可以看到那么生动的网页。

而当我们登陆一个网站并且修改自己的个人信息的时候,其实我们也是发送一个HTTP/HTTPS的请求包。就像下面这样。


     POST /api/modify HTTP/1.1
     User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
     Accept: */*
     Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
     Accept-Encoding: gzip, deflate, br
     Content-Type: application/json
     Content-Length: 69
     Cookie: id=123
     Connection: close

     {“name”:”xiaoli”,”email”:”12345678@qq.com”}


而我们点击别人发来的网页或者表单的时候,其实也是发送这个请求。

那么发送这个请求需要什么?从上面可知,除了cookie之外,其他的数据攻击者都是可以构造的,所以,要想达到CSRF的目的,只要获得被攻击者的cookie即可。

当我们点击有着CSRF攻击的页面,其实就是用我们的cookie发送这个修改个人信息的请求。这就是CSRF,你听懂了么。

      攻击与防御是一对深爱着的情人,说了攻击方法,怎能少的了防御手法。

下面来谈一谈

     CSRF的防御手法

    1:验证码(但是考虑到什么操作都要验证码,用户体验太差)

     2:Refer头,就是验证前一个网页是从哪里来的,当前一个网页符合条件,才能进行下面的操作。

     3:Token,必须随机,要让攻击者无法猜到即可。(一些框架里自带Token)

 

     这里要补充一个更加强大的攻击手法。XSRF

     XSRF就是XSS+CSRF。被称作XSRF

     通过XSS获取Token来达到CSRF的操作。

 

对于 CSRF的谈论就是这些了。说了CSRF,同样,我们来说说CRLF

同样的开头

      什么是CRLF

      百度百科的解释:CRLF — Carriage-Return Line-Feed 回车换行

      什么?简单的回车换行,你在逗我?

      当然不是在逗你了,的确,这也是一个漏洞来着。主要是利用了HTTP协议来达到攻击的目的。

      上面我们也说过,当我们访问一个网页的时候,其实是一个发送HTTP请求的过程。如果我们加入一些代码那会如何,说干就干。%0a%0d就是\r\n的url编码

       https://twitter.com/login?redirect_after_login=123%0a%0d%0a%0d%3Cimg%20src=1%3E

      上面的请求会在返回包中加入一个<img src=1>,如果换一个XSS代码是不是就是一个XSS漏洞了呢?

       好了,CSRF就是这样。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

6 + 4 =