CSRF,全称(Cross Site Request Forgery 跨站请求伪造),是一种对网站的恶意利用,主要通过利用受害者尚未失效的身份认证信息(cookies,session等),诱骗其点击恶意的链接或者访问包含攻击代码的页面,进而达到非法操作的目的(比如转账,修改密码等。)
新手很容易把XSS攻击(跨站脚本攻击),和CSRF(跨站请求伪造)两者相混。其实可以依靠,前者需要盗取用户的cookie,而后者直接利用cookie的特点对其进行区分。以下是基于DVWA的靶向环境对CSRF有一个全面的认识。
Security Level:low
进入发现是一个修改密码的页面,输入密码点击change后,发现输入的数据在URL地址栏上都有回显。所以,我们可以了解到,当浏览器转到该地址的时候,密码就会发生变化。这里我们就用到了cookie的知识:当用户在浏览器登录网站后,会在本地终端存放一个加密的数据(cookie),这样会便于网站从服务器中调取相应的页面,同时减少服务器的负担。
那么我们就可以利用用户的cookie来向服务器发送伪造的请求,注意,如果用户在谷歌浏览器进行访问时,cookie只对谷歌浏览器产生作用,如果用搜狗浏览器是无法跳过登陆的。下一步就是让用户在毫不知情的情况下去打开这个链接,方法很多,我们主要介绍的是写html的方式。
1 | <img src="http://127.0.0.1/dvWA/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change#" |
当用户点击这串链接,浏览器就会访问并解析误认为是图片的地址,间接的完成了对密码的修改。一般来说,用户是很难去点击一个陌生的网址,但是我们可以将网址伪装成一个简单的二维码,或者利用短链接来隐藏URL,接着就是利用一些简单的手段诱惑用户进行操作。(这也是黑客电影中常见的桥段之一)
最后,放上服务器的核心代码:
1 |
|
低难度的CSRF不存在任何的防护措施,这里主要是对CSRF(跨站请求伪造)有一个基本的认识,以后,还会根据DVWA环境下对跨站请求伪造的防护机制做一个介绍。