大部分网站都会要求用户登录后,使用相应的权限在网页中进行操作,比如发邮件、购物或者转账等都是基于特定用户权限的操作。浏览器会短期或长期地记住用户的登录信息,但是,如果这个登录信息被恶意利用呢?就有可能发生CSRF
CSRF的英文全称为Cross Site Request Forgery,中文名称为“跨站请求伪造”,可以分为两部分来理解:跨站请求和请求伪造。跨站请求,指请求是跨不同站点的,也就是说,向合法服务器发送的请求是来自第三方站点的。通常,这些第三方站点的网址(链接)会植入正常的网页、邮件中,吸引用户去点击,用户点击这些恶意链接后就可能会发生CSRF攻击。因此,CSRF有时候也被称为“One Click Attack”,即“一次性点击攻击”。需要注意,虽然定义了“跨站”,但是本站依然也是可以发出恶意请求的。
请求伪造,指用户的请求不是来自合法用户本人,而是他人恶意伪造的。大家在使用浏览器浏览网页的时候,使用的协议是HTTP/HTTPS。用户端与服务器端基于该协议进行数据的交互,使用“请求—响应”方式来实现Web应用的通信。如果用户端的请求被人恶意伪造,服务器是无法区分这个正常的请求是否真的来自合法用户本人,所以服务器只能对这个“表面”正常的请求进行正常响应,从而构成请求伪造。
(通俗来说,存在CSRF漏洞时,当一个网站包含了A网站的请求,都能执行,因为cookie在浏览器里)
CSRF攻击便是基于浏览器的Cookie机制来实现
CSRF攻击原理
CSRF是攻击者伪造合法用户的身份向合法网站发出请求,一般通过电子邮件发送短链接等形式,诱导受害者访问后发生。比如,合法用户通过浏览器登录自己的网银,这时用户收到一封电子邮件,便使用该浏览器又打开了邮件,并点击了其中的链接。该链接要求访问网银,攻击者就可以使用浏览器中存储的Cookie信息伪造合法用户的身份,从而进入网银,进行转账等操作。
在进行CSRF攻击时,首先需要根据Web页的回显信息判断是否可能存在CSRF漏洞。如果可能存在,攻击者则构造恶意网页,诱导合法用户去点击访问。只要合法用户去点击访问了这个恶意网页,攻击者就直接使用浏览器中存储的合法用户身份,去执行恶意网页中规定的非法操作。
新密码和旧密码都显示在url中,可以直接在url中修改密码。
用户、登录后生成Cookie,这样,在新打开的窗口中输入访问同一网站的URL(URL参数中携带修改密码的参数),攻击者不需要重新登录验证,就能利用浏览器的Cookie自动识别用户admin身份,以成功修改用户admin的密码。
在实际Web应用中,一般会将这个伪造用户身份修改密码的恶意链接发送给合法用户,吸引用户点击后实现CSRF攻击
构造一个url,内容如下
在dvwa登录状态下,打开新页面,访问这个url地址,这个文件里img的src属性就会把dvwa网站的密码给修改了。(跨域请求伪造,在新的url所在域,仍访问了dvwa的url,且成功了。)
查看源代码发现 不管是获取新密码、对新密码进行逻辑处理,还是数据库中的数据更新&