跨站请求伪造 缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
可以这样来理解:
A为存在CSRF漏洞的网站,B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
在这过程中,受害者会代替攻击者执行这些攻击,攻击者中不会收到响应,受害者会代替攻击者执行这些攻击。 以你的名义发送恶意请求,对服务器来说这个请求是完全合法的。比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
下边以Ecshop3.6版本进行CSRF攻击实现任意目录删除漏洞复现过程。
开始安装 Ecshop3.6
安装过程中需要注册云起账号用来激活安装
安装完成后前往后台登录管理
以模板目录为演示这里装了两个不同名字但一样的模板
然后对其中20200206的模板删除进行拦截抓包
请求头中tpl_name处为删除文件的名称,下边尝试构造CSRF
CSRF是跨站请求伪造,所以请求类型一般为 POST 和GET 。
先以post方式写个HTML文件,命名为1.html
然后把文件上传到网站跟目录下,再点击 HTTP://域名/1.html
打开网页后,需要再点击,然后自动返回结果如下
然后查看网站themes目录已经消失,后台模板也被删除。
结果:CSRF攻击以POS形式,需要点击两次才能完成CSRF攻击。
把网站还原,用同样的步骤。
再用GET方式写个自动加载的img文件,在文件名前添加../../../../这样的,来删除文件夹以外的全部内容。命名为1.html 上传打开
然后发现全部被删除
结果: CSRF攻击以GET形式,只需要点一次链接。
这里要说的是,如果页面已经关掉,或者打开链接的浏览器不是登录网站的浏览器那么这个CRSF的攻击是都没用的。
CRSF跨站请求伪造可以用短链接伪装url,防止根据链接看出内容。
构造攻击页面部署好,然后链接发给其他人,当其他人点击链接的时候,会显示404,这时候会以为点了一个无效的链接。但是其中的img的src会请求一次。
CSRF跨站请求伪造防御解决方案:
验证HTTP Referer字段(访问一个安全受限页面的请求必须来自于同一个网站)
Anti-CSRF token机制 ( 在请求地址中添加token并验证 )
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏