0.简介
CSRF,Cross-site request forgery,也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF。
简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
(百度百科)
- Security Level:Low
打开CSRF页面,输入两个不同的密码点击change尝试,可以观察到密码出现在url中,这是密码修改链接,并且密码也出现在了url中,显然,服务器以get方式获取新的密码。
http://192.168.142.133/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=1234&Change=Change#
复制上面的链接,打开另一个页面,粘贴到url框中,并改动password_new和password_conf参数,输入相同的密码,跳转后,页面上显示Password Changed,修改成功。
2.Security Level:Medium
调整难度后,打开另一个页面,输入密码修改链接跳转后,发现url下面有提示:未定义的索引HTTP_REFERER。并且,页面中显示该请求不正确。
用burp分别抓取原页面和新页面的密码修改请求报文,对比差别。发现在原页面多了行Referer。也就是说,修改密码的请求报文中要携带Referer字段。
所以,打开新的页面,输入修改密码的url后,用burpsuite拦截下这个报文,在其中加入“Referer: http://192.168.142.133/”,该referer的内容包括网站的主机头即可。点击forward,放行,便可以看到页面显示密码已修改,与在原页面修改密码的效果无异。
(未完)