csrf漏洞称为"跨站请求伪造",跟XSS一样,属于web攻击的一种,CSRF利用服务器对用户网页浏览器的信任,而XSS利用的是用户对网页,服务器的信任,要区分开
原理
攻击者构造一个特殊的网页或者url,发送给被攻击者,被攻击者打开后,会以被攻击者的名义向这个服务端发送一个恶意请求,但是这个请求在服务端看起来是完全合法的,从而处理了攻击者发送的恶意请求!
可以这样子理解:
用户A:正常用户
网站B:具有csrf的网站(http://127.0.0.1/shop.php?money=10000&name=用户D)
攻击C:攻击者
用户A登录了某个银行的界面,并且在本地保存了登录的cookie,打算转账给用户D10000元,此时攻击C也在这个网站中有账户,并且还发现了有CSRF漏洞,漏洞就在于
http://127.0.0.1/shop.php?money=10000&name=用户D
这一个url中,如果将name=用户D改成name=攻击C的话,然后将这个url的页面发送给用户A,如果服务端没有经过各种验证的话,就会直接相信这是用户A需要执行的转账操作,然后用户A在浏览器打开后,就会执行转账操作
利用条件
综合上述: 1.用户A需要登录进网站,并且保存Cookie 2.用户A点击恶意构造的连接 3.服务端没有任何防护
实例
靶机:DVWA
在左侧找到CSRF,然后点进去
原账户密码:
username:admin
password:password
这里的意思就是改密码,改了之后,当前账户的密码就更换了
更改后的账号密码:
username:admin
password:123
更改之后用admin:123重新登录
完了以后,抓包看看url构造
抓包或者在url地址栏,看到GET请求
代码语言:javascript复制http://xxxxxxxxx/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change#
如果我们将password_new=123&password_conf=123中的123改成其他的字符数字会不会更改密码?肯定会的啦
如果发动一波csrf攻击呢?看