19.CSRF跨站请求伪造
一.概述
1.定义
Crose-Site Request Forgerry,跨站请求伪造,攻击者利用服务器对用户的信任,从而欺骗受害者去服务器上执行受害者不知情的请求。
在CSRF的攻击场景中,攻击者会伪造一个请求(一般为链接),然后欺骗用户进行点击。用户一旦点击,整个攻击也就完成了。所以
CSRF攻击也被成为“one click”攻击。
2.于XSS的区别
(1)XSS是利用用户对服务端的信任,CSRF是利用服务端对用户的信任。
(2)XSS是将恶意代码植入被攻击服务器,利用用户对服务器的信任完成攻击。而CSRF是攻击者预先在自己攻击服务器的页面植入恶意
代码,引诱受害者访问,在受害者不知情的情况下执行了恶意代码。而攻击服务器是独立的域名或ip地址。
3.攻击要点
(1)服务器没有对操作来源进行判断
(2)受害者处于登录状态
(3)攻击者需要找到一条可以修改或获取敏感信息的请求
二.攻击场景
(1)Alice在购物网站X上修改个人资料。正常情况下修改资料的第一步是登录个人账号。Alice登录后对相关参数进行修改:
http://www.x.com/member/edit.php?name=Alice$phone=133xxxxxx&add=上海市XXX
这个请求跟正常请求时一样的,所以点击后便修改了资料
DVWA中的CSRF进阶
一.Medium级
1.按照Low级操作复现
(1)按照相同的步骤完成CSRF操作
(2)在攻击服务器的URL地址中点击按钮,提示:That request didn‘t look correct
2.分析问题原因
在页面中查看源码,发现
if(stripos($_SERVER['HTTP_REFERER']),$_SERVER['SERVER_NAME']) !== false)
源码会判断http协议中的referer字段
解决方案:
在攻击网站上创建懿个新的HTML页面,并命名为:change_192.168.19.130.html,内容为:
<a href="http://192.168.19.130/dvwa/vulnerabilities/csrf/? password_new=1234$password_conf=1234$Change=Chang"> <img src="http://192.168.19.130/dateme.gif"/></a>
此时referer变成