简要描述:对某标签和某属性过滤不严导致可以在邮件中植入恶意代码1 D: P% ]( m6 A( ?& I7 ]" c* \
详细说明:按照老习惯通过支持html编辑的邮箱往目标邮箱海量发送xss vectors然后看漏了什么' r! c* L8 R# x
$ n1 T- ]1 s9 d2 X! {5 E
9 i6 e0 U4 V i$ q; f可以看到我的svg被提前闭合了,rect里面的 width="1000" height="1000" fill="white"各种属性也和王力宏那首“你不在”一样,不见了。。不过貌似对于xlink:href没有过滤这是硬伤啊。接下来只要能让我插入math标签,这个问题基本上就算是解决了。% u' h z. f+ z! n1 R
而事实上。。。确实就那样成功了# W* `' @ f1 t& c) ~! U
有效的payload如下:- <math><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="javascript:alert(1)" target="_blank">abc q<rect></rect></a> </math>2 f9 U8 G, k& D( ^
6 }! S3 b: t F9 p3 e2 |" Y! i
复制代码
" C. W! D5 D$ ~% I当然也可以缩减一下,写成这样。- <math><a xlink:href=javascript:alert(1)>I'mshort
) j' @2 Y7 ?: K7 E6 R1 b1 o# R
4 l1 k0 y( n: F7 K. ?( w5 O复制代码* ^/ R% B- ?4 l
漏洞证明:
3 `. u% t" B" C9 Y! G$ {' C" ], _
4 q7 B; {6 l; j( W6 [: B% o) F) l
修复方案:对xlink:href的value进行过滤。
! X5 \. ]1 j3 s4 n) `3 P- }* _
. K# r7 l, r1 y- l; y9 e' m+ C+ w来源 mramydnei@乌云
e6 {, x3 H9 M: o$ R H
6 I8 E4 }. @. M, u- d2 X. G) u7 @
9 }4 W0 i' O( |- N |