六、跨站请求伪造(CRSF)-Low
六、跨站请求伪造(CRSF)-Low
一、漏洞原理
用户在使用浏览器访问正常网站的时候,该用户对网站具有合法访问权限,此时攻击者将正常网站中的链接做修改,构造成一个恶意链接,放置到其他网站中,欺骗该用户使用当前浏览器打开恶意链接,使得恶意链接中的恶意行为在正常网站中被执行,这种操作就是跨站请求伪造攻击。可以结合漏洞利用部分的演示做进一步的理解。
二、漏洞利用
当前演示的是跨站请求伪造(CRSF)漏洞的Low级别,先来看一下正常的网站功能,DVWA中是以修改密码功能做示例。
正常修改密码后链接部分会将密码修改的信息会以参数的形式发送给服务器,服务器执行成功密码修改的任务后会返回“Password Changed”(密码修改成功)的提示。
通过Low级别的源码可知,服务器对用户的访问没有做任何限制,攻击者可以直接将密码修改的链接复制下来,然后将password_new、password_conf的参数值修改成新的内容,比如同时改成"abc123",然后欺骗用户在当前浏览器中直接访问被修改过的链接,链接打开后即可看到密码已经修改成功。
提示密码修改成功后即可尝试使用新密码重新登录DVWA,验证密码是否被修改成功。
在真实的网络攻击中,攻击者在使用CSRF漏洞攻击用户时会做两方面的处理:一是被修改的链接比较容易被发现,攻击者会对修改后的链接做处理,比如生成短链接、使用HTML的a标签做掩饰等;二是修改成功后如果跳转到密码修改成功的提示页面,也会暴露攻击者的意图,所以攻击者会对修改成功后的跳转页面做处理,使浏览器跳转到攻击者准备好的其他页面。
三、漏洞防御
1.不要使用Get方法向服务器传送数据。
2.将请求头部(Header)中的Referer Policy设置成same-origin。
same-origin模式中,只有同源的链接和引用才会发送Referer,Referer值只有Host,不包含访问路径,而对于第三方网站的请求,Referer是不被发送的,因此可以通过Referer的same-origin策略来限制CSRF攻击。