DVWA系列之17 CSRF攻击介绍与实施

简介:

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值。

 wKiom1Z7ObLylRavAAAtLNBkEVQ023.jpg

下面我们在CSRF的页面中将管理员密码改为123,可以查看到md5值随之改变。

 wKioL1Z7OdHjPH63AAA3TzwWA0w443.jpg

此时我们仔细观察浏览器地址栏中的URL:

http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change#

如果黑客获知了这个URL,那么是否就可以随意更改管理员密码呢?比如构造下面这个URL,是否就可以将管理员密码修改为abc?

http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=abc&password_conf=abc&Change=Change#

如果黑客是在自己的电脑上直接执行这个URL,那么肯定是无效的。原因是必须要具有管理员的权限,才可以修改密码。也就是前面所介绍的,必须要先以管理员身份与网站之间建立好一个会话之后,才可以执行修改密码的操作。

那么黑客就可以构造一个网页,将上面这段代码放入网页中,然后诱骗管理员打开这个页面,如果此时管理员恰好正在对网站进行操作,在管理员的浏览器与网站之间建立好了会话,那么上面这段代码就会生效。

比如我们在一台已经搭建好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" />

然后在已经登录进入DVWA的状态下,在本地的浏览器中打开这个网页http://192.168.80.132/csrf.html

 wKioL1Z7OfnCI9DyAAFJY4qQiAA923.jpg

此时就会发现管理员密码已经被自动修改为了abc:

wKioL1Z7OgnRoRgIAAA1Qif9xfc463.jpg

这就是一次典型的CSRF攻击,由此可见CSRF的两个主要特点:

  • CSRF攻击建立在浏览器与Web服务器的会话中;

  • 欺骗用户访问URL。


本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1727756
相关文章
|
6月前
|
JavaScript 安全 前端开发
js开发:请解释什么是XSS攻击和CSRF攻击,并说明如何防范这些攻击。
XSS和CSRF是两种常见的Web安全威胁。XSS攻击通过注入恶意脚本盗取用户信息或控制账户,防范措施包括输入验证、内容编码、HTTPOnly Cookie和CSP。CSRF攻击则诱使用户执行未经授权操作,防范手段有CSRF Tokens、双重验证、Referer检查和SameSite Cookie属性。开发者应采取这些防御措施并定期进行安全审计以增强应用安全性。
125 0
|
安全 NoSQL Java
互联网并发与安全系列教程(06) - 常见的Web安全漏洞(CSRF攻击)
互联网并发与安全系列教程(06) - 常见的Web安全漏洞(CSRF攻击)
120 0
|
6月前
|
缓存 安全 JavaScript
前端安全:Vue应用中防范XSS和CSRF攻击
【4月更文挑战第23天】本文探讨了在Vue应用中防范XSS和CSRF攻击的重要性。XSS攻击通过注入恶意脚本威胁用户数据,而CSRF则利用用户身份发起非授权请求。防范措施包括:对输入内容转义、使用CSP、选择安全的库;采用Anti-CSRF令牌、同源策略和POST请求对抗CSRF;并实施代码审查、更新依赖及教育团队成员。通过这些实践,可提升Vue应用的安全性,抵御潜在攻击。
933 0
|
8天前
|
存储 Web App开发 安全
如何防范 CSRF 攻击
CSRF(跨站请求伪造)攻击是一种常见的安全威胁。防范措施包括:使用Anti-CSRF Token、检查HTTP Referer、限制Cookie作用域、采用双重提交Cookie机制等,确保请求的合法性与安全性。
|
8天前
|
网络安全 数据安全/隐私保护
什么是 CSRF 攻击
CSRF(跨站请求伪造)攻击是指攻击者诱导用户点击恶意链接或提交表单,利用用户已登录的身份在目标网站上执行非授权操作,如转账、修改密码等。这种攻击通常通过嵌入恶意代码或链接实现。
|
16天前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
51 4
|
15天前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
43 2
|
17天前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
50 3
|
10天前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
19 0
|
4月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
89 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!