六一儿童节快到了,最近出了太多太多的漏洞,像前几天被爆出的cve-2019-0708漏洞,利用的是windows服务器远程桌面rdp协议进行的攻击,今天来给大家送一个礼物是关于网站方面的,jsonp漏洞可以导致csrf网站攻击。很多人会把jsonp跟json当成是一个东西,但真实情况不是这样的,先来介绍一下什么是jsonp,简单来讲就是一个可以解决网站跨域请求访问的一个语言,可以帮助网站跨域的去请求参数,使数据之间同步,很好的解决不同网站之间的通信问题。关于网站漏洞的JSONP劫持漏洞,我们来详细的分析看下。一般网站在设计功能过程加入jsonp实例代码,比如下面这一段,图1:
使用的是php语言开发的,很简单的一个第三方jsonp接口,返回用户名和密码,当get请求的时候就会返回我们需要的值,如果我们对callback值进行修改的时候,返回的值也会有所改变,那么这里就可以被我们利用,修改成恶意的代码,来欺骗用户点击,从而向服务器端里的json接口进行请求,当用户输入账号密码等信息的时候就已经不知不觉的提交到了攻击者的网站里,用户密码被泄露。如下图:
JSONP漏洞应该算是属于csrf攻击,诱导用户点击并获取用户的账号密码等敏感信息,CSRF攻击还远远不止光可以获取用户的账号密码,还是做其他攻击用途,我们在日常的安全检测当中还遇到过csrf防护使用了token动态值,使用token可以大大的防止csrf攻击的发生,但是我们可以绕过该token防护,具体该怎么绕过呢?
在网站的整个用户提交表单中我们发现有些token值被隐藏了,那么我们可以直接伪造代码,通过jsonp的提交方式来获取整个表单的内容,并将其中的token值获取出来,填充到我们构造的表单中,完成csrf攻击。
网站漏洞修复建议:
对调用到的json文件以及接口进行安全限制,判断用户来路Referer,对所有的用户请求设置token,统一值,对json格式的输出编码设置为utf8,对callbak回调参数以及json的数据通信严格的把控,jsonp请求与返回的值进行长度检查,对一些特殊字符尤其csrf攻击字符进行过滤,比如*&#斜杠等等的字符,如果对代码不熟悉的话建议联系专业的网站安全公司或网站漏洞修复公司来处理解决。
来源:oschina
链接:https://my.oschina.net/u/3887295/blog/3052078