DVWA系列之17 CSRF攻击介绍与实施 推荐
2015-12-24 08:15
246 查看
CSRF(Cross-Site Request Forgery)跨站点请求伪造,这种攻击方式的特点是:攻击者盗用你的身份,以你的名义进行某些非法操作。CSRF能够使用你的帐户发送邮件,获取你的敏感信息,甚至盗走你的财产。
当我们打开或登录某个网站后,在浏览器与网站之间将会产生一个会话,在这个会话没有结束时,你就可以利用你的权限对网站进行某些操作,如:发表文章、发送邮件、删除文章等。当这个会话结束后,你再进行某些操作的时候,Web应用程序可能会提示“您的会话已过期”、“请重新登录”等提示。
比如当我们登录网上银行后,浏览器就已经与可信的站点建立了一个经过认证的会话。之后,所有通过这个经过认证的会话发送请求,都被视为可信的动作,例如转账、汇款等操作。当我们在一段时间内不进行操作后,经过认证的会话可能会断开,再次进行转账、汇款操作时,这个站点可能会提示你:您的身份已过期,请重新登录、会话已结束等信息。
CSRF攻击正是建立在会话之上的,比如当你登录了网上银行,正在进行转账业务,这时你的某个QQ好友(攻击者)发来一条消息(URL),这条消息是攻击者精心构造的转账业务代码,而且与你所登录的是同一家网络银行,你可能认为这个网站是安全的,然而当你打开了这条URL后,你帐户中的余额可能会全部丢失。
下面我们就来实施一次CSRF攻击。进入DVWA,选择low级别,可以看到这里的CSRF测试是要进行更改管理员密码的操作。默认的管理员密码是password,为了能够直观地查看管理员密码,我们在开始菜单中找到AppServ,执行其中的“MySQL Command Line Client”,进入MySQl操作界面。执行“use dvwa;”命令打开dvwa数据库,执行“select user,password from users where user = ‘admin’;”命令,可以查看到目前的admin用户密码的md5值。
![](http://s5.51cto.com/wyfs02/M01/78/61/wKiom1Z7ObLylRavAAAtLNBkEVQ023.jpg)
下面我们在CSRF的页面中将管理员密码改为123,可以查看到md5值随之改变。
![](http://s5.51cto.com/wyfs02/M00/78/5F/wKioL1Z7OdHjPH63AAA3TzwWA0w443.jpg)
此时我们仔细观察浏览器地址栏中的URL:
如果黑客获知了这个URL,那么是否就可以随意更改管理员密码呢?比如构造下面这个URL,是否就可以将管理员密码修改为abc?
如果黑客是在自己的电脑上直接执行这个URL,那么肯定是无效的。原因是必须要具有管理员的权限,才可以修改密码。也就是前面所介绍的,必须要先以管理员身份与网站之间建立好一个会话之后,才可以执行修改密码的操作。
那么黑客就可以构造一个网页,将上面这段代码放入网页中,然后诱骗管理员打开这个页面,如果此时管理员恰好正在对网站进行操作,在管理员的浏览器与网站之间建立好了会话,那么上面这段代码就会生效。
比如我们在一台已经搭建好Web环境的虚拟机(IP地址192.168.80.132)中编写一个名为csrf.html的网页,代码如下:
然后在已经登录进入DVWA的状态下,在本地的浏览器中打开这个网页http://192.168.80.132/csrf.html:
![](http://s2.51cto.com/wyfs02/M01/78/5F/wKioL1Z7OfnCI9DyAAFJY4qQiAA923.jpg)
此时就会发现管理员密码已经被自动修改为了abc:
![](http://s2.51cto.com/wyfs02/M00/78/5F/wKioL1Z7OgnRoRgIAAA1Qif9xfc463.jpg)
这就是一次典型的CSRF攻击,由此可见CSRF的两个主要特点:
CSRF攻击建立在浏览器与Web服务器的会话中;
欺骗用户访问URL。
当我们打开或登录某个网站后,在浏览器与网站之间将会产生一个会话,在这个会话没有结束时,你就可以利用你的权限对网站进行某些操作,如:发表文章、发送邮件、删除文章等。当这个会话结束后,你再进行某些操作的时候,Web应用程序可能会提示“您的会话已过期”、“请重新登录”等提示。
比如当我们登录网上银行后,浏览器就已经与可信的站点建立了一个经过认证的会话。之后,所有通过这个经过认证的会话发送请求,都被视为可信的动作,例如转账、汇款等操作。当我们在一段时间内不进行操作后,经过认证的会话可能会断开,再次进行转账、汇款操作时,这个站点可能会提示你:您的身份已过期,请重新登录、会话已结束等信息。
CSRF攻击正是建立在会话之上的,比如当你登录了网上银行,正在进行转账业务,这时你的某个QQ好友(攻击者)发来一条消息(URL),这条消息是攻击者精心构造的转账业务代码,而且与你所登录的是同一家网络银行,你可能认为这个网站是安全的,然而当你打开了这条URL后,你帐户中的余额可能会全部丢失。
下面我们就来实施一次CSRF攻击。进入DVWA,选择low级别,可以看到这里的CSRF测试是要进行更改管理员密码的操作。默认的管理员密码是password,为了能够直观地查看管理员密码,我们在开始菜单中找到AppServ,执行其中的“MySQL Command Line Client”,进入MySQl操作界面。执行“use dvwa;”命令打开dvwa数据库,执行“select user,password from users where user = ‘admin’;”命令,可以查看到目前的admin用户密码的md5值。
![](http://s5.51cto.com/wyfs02/M01/78/61/wKiom1Z7ObLylRavAAAtLNBkEVQ023.jpg)
下面我们在CSRF的页面中将管理员密码改为123,可以查看到md5值随之改变。
![](http://s5.51cto.com/wyfs02/M00/78/5F/wKioL1Z7OdHjPH63AAA3TzwWA0w443.jpg)
此时我们仔细观察浏览器地址栏中的URL:
http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change# |
http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=abc&password_conf=abc&Change=Change# |
那么黑客就可以构造一个网页,将上面这段代码放入网页中,然后诱骗管理员打开这个页面,如果此时管理员恰好正在对网站进行操作,在管理员的浏览器与网站之间建立好了会话,那么上面这段代码就会生效。
比如我们在一台已经搭建好Web环境的虚拟机(IP地址192.168.80.132)中编写一个名为csrf.html的网页,代码如下:
<img src=mm.jpg> <iframe src="http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=abc&password_conf=abc&Change=Change#" frameborder="0" ;0" /> |
![](http://s2.51cto.com/wyfs02/M01/78/5F/wKioL1Z7OfnCI9DyAAFJY4qQiAA923.jpg)
此时就会发现管理员密码已经被自动修改为了abc:
![](http://s2.51cto.com/wyfs02/M00/78/5F/wKioL1Z7OgnRoRgIAAA1Qif9xfc463.jpg)
这就是一次典型的CSRF攻击,由此可见CSRF的两个主要特点:
CSRF攻击建立在浏览器与Web服务器的会话中;
欺骗用户访问URL。
相关文章推荐
- 跨站请求伪造 (CSRF)
- 攻击CISCO路由器
- 二级域名原理以及程序
- 黑客攻防实战 Windows系统克隆攻击与防范第1/2页
- SQL 注入式攻击的本质
- SQL 注入式攻击的本质
- 一根网线内的8根线哪4根是传输数据的,哪四根是防干扰的
- TCP三次握手及原理
- jQuery中的pushStack实现原理和应用实例
- sqlserver索引的原理及索引建立的注意事项小结
- php中的ini配置原理详解
- jquery原理以及学习技巧介绍
- PHP strtotime函数用法、实现原理和源码分析
- PHP实现恶意DDOS攻击避免带宽占用问题方法
- Base64编码解码原理及C#编程实例
- IsPostBack原理的介绍
- SQL 注入式攻击的终极防范
- PHP中通过语义URL防止网站被攻击的方法分享
- jQuery中noconflict函数的实现原理分解
- 切记ajax中要带上AntiForgeryToken防止CSRF攻击