1. 跨站请求伪造漏洞
跨站请求伪造Cross-siterequest forgery (也称为CSRF、XSRF)是一种Web安全漏洞,允许攻击者诱导用户执行他们不打算执行的操作。攻击者通过伪造用户的浏览器的请求,向用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行操作。
跨站:从一个网站到另一个网站
请求:HTTP请求
伪造:仿造,伪装
一个网站A中发起一个到网站B的请求,而这个请求是经过了伪装的,伪装操作达到的目的就是让请求看起来像是从网站B中发起的,也就是说,让B网站所在的服务器端误以为该请求是从自己网站发起的,而不是从A网站发起的。当然,请求一般都是恶意的。
看到这里,你可能会问:为什么要伪装成从B网站发起的呢?从网站A直接向B网站服务器发起请求不可以吗?之所以要伪装成从B网站发起的,是因为Cookie是不能跨域发送的。结合上面这个例子来说就是: 如果从A网站直接发送请求到B网站服务器的话,是无法将B网站中产生的Cookie一起发给B服务器的。
可能你还会问,为什么非要发送Cookie呢?这是因为服务器在用户登录后会将用户的一些信息放到Cookie中返回给客户端,然后客户端在请求一些需要认证的资源的时候会把Cookie一起发给服务器,服务器通过读取Cookie中的信息来进行用户认证,认证通过后才会做出正确的响应。
A网站访问B网站服务器的一些需要认证的资源的时候,如果没有Cookie信息,服务器是拒绝访问的,那么A网站就无法进行恶意操作。而伪造成B网站的请求,就可以将B网站的Cookie一起发到B服务器,这个时候就服务器就认为该请求是合法的,就会给出正确的响应,这个时候,A网站就达到目的了。
简单一句话就是:攻击者盗用了你的身份,以你的名义发送恶意请求
2.漏洞类型
(1)Get型CSRF
GET类型的CSRF利用非常简单,只需要一个HTTP请求,这种类型的CSRF一般是由于人员安全意识不强造成的,比如攻击者将一个修改密码的链接发送给受害者,受害者在登录网站的情况下点击该链接则受害者的密码被修改了。
例如在dvwa靶场,攻击者修改好密码,然后将构造好的链接发送给受害者,那么密码则在无意中被修改了
(2)Post型CSRF
A. 配置靶场环境
B. 打开bp抓包,生成恶意html文件
C. 将更改好的恶意html文件发送给受害者
受害者视角:
在登录后进入网站,无意中点击恶意的html文件,就会发现信息被修改
(3)Csrf与xss组合拳
在前面关于XSS漏洞的防御中提到过,如果网站设置了http-only就不能获取cookie了,我们可以换个思路,不再去窃取用户的cookie,而是直接利用它。
在存在xss漏洞的地方注入payload <img src=”http://xxx”>
例如dvwa靶场,我们提前在存储型xss漏洞中注入payload,一个用户名为1337,密码为charly访问了该链接
当我们在另一个浏览器上进行登录时,发现密码被改为666666