Java代码审计-JS脚本劫持 及 修复处理意见

 
先通过 iis7网站监控,输入自己的域名,就可以立马看到自己是不是遭遇JS劫持了,并且查询结果都是实时的,可以利用查询结果来更好的优化我们的网站。
 
以下情况,应用程序很容易受到js劫持的攻击:
(1)讲js对象用作数据传输格式
(2)处理机密数据
 
概念:
即在一个 函数运行之前把它劫持下来,添加我们想要的功能。当这个函数实际运行的时候,它已经不是原本的函数了,而是带上了被我们添加上去的功能。这也是我们常见的钩子函数的原理之一。
 
js中最常见的信息传输格式为 json(javascript object notation )。一个json数组会直接受到js劫持的攻击。
服务器使用json格式的数组 进行响应。响应中直接暴露json数组信息内容,json中包含了与当前用户相关的机密信息。
其他用户弱不知道该用户的会话标识,便无法访问这些信息,然而,如果受害者访问某一个恶意网站,恶意网站就可以使用js劫持提取信息。
 
使用一个script标签 去得到受害者数据:
恶意代码使用脚本标签以在当前页面包含json对象,web浏览器将使用该请求发送相应的会话cookie,换言之,处理此请求时 将认为其源自合法应用程序。
 
注:图中的序号表示的是JavaScript黑技术的实现顺序
这里面是通过在存在漏洞的信任网 站下正常登入,然后切换到已经恶意网站(这个时候信任网站不能登出),这时在恶意网站会吧返回的JavaScript脚本和信任网站返回的cookie一起重新发送给信任网站,从而获取信任网站的敏感信息
Java代码审计-JS脚本劫持 及 修复处理意见_第1张图片
注意事项:
     1、信任网站(步骤2)返回的内容必须是JSON数组,如果是 JSON对象的话那么会发生JavaScript错误,但是我们可以在返回的时候检测返回的类型,如果是对象的话,那么我们也是可以在对象的前后加上中括号
     2、劫持与JavaScript Hijacking技术的关系是在步骤五上面体现的,在步骤五的实现上是一定要通过JavaScript劫持去重写对象中的方法,从而记录信任网站中敏感信息的功能,所以JavaScript Hijacking的实现与劫持密不可分
     3、信任网站必须响应一个 GET请求
 
修复建议:
所有使用 JavaScript进行交流的程序需要采取以下防范措施:
1)拒绝恶意请求:在每个返同给 JavaScript的请求中使用一些人难以猜测的标识符,如会话标识符。
允许服务器验证请求的来源可以防范跨站点请的伪装攻击。
2)避免直接执会行 javascript响应:包括某些响应中的字符,这些响应只有经过了修改,才能成功地转到 JavaScript解释器进行处理,这样可以防止攻击者使用

你可能感兴趣的:(javascript,java,json)