简要描述:对某标签和某属性过滤不严导致可以在邮件中植入恶意代码
2 Q# T9 F" H5 ]0 D& j详细说明:按照老习惯通过支持html编辑的邮箱往目标邮箱海量发送xss vectors然后看漏了什么
% m7 r# T: O& C( E2 ]8 I# A7 w8 n0 l" l' p+ d" V- G" d. w4 D
( H" r: A4 F+ D2 `4 R; D5 n! p! Y可以看到我的svg被提前闭合了,rect里面的 width="1000" height="1000" fill="white"各种属性也和王力宏那首“你不在”一样,不见了。。不过貌似对于xlink:href没有过滤这是硬伤啊。接下来只要能让我插入math标签,这个问题基本上就算是解决了。0 ?! Z$ n: U; @6 s
而事实上。。。确实就那样成功了; T6 V8 B# }# ?2 N2 l
有效的payload如下:- <math><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="javascript:alert(1)" target="_blank">abc q<rect></rect></a> </math>
) H* `0 y" D8 j+ [2 ~9 p5 W$ V0 k. [ - r( ?- q" U* r4 _& h
复制代码% w I7 V7 w; R& o3 }) w# Q: n/ `
当然也可以缩减一下,写成这样。- <math><a xlink:href=javascript:alert(1)>I'mshort
8 K$ W$ B: d9 ]+ C1 \
' S/ u+ \$ g) x3 U+ l复制代码
& J' T3 i0 e9 V. n漏洞证明:
6 B" ?: L! J% D" E$ Z# G. N7 h1 n/ S2 g* t1 @$ `& n9 `: q
- U# O# t1 G+ S" M, a% t
; O& R3 U5 u- H+ I
修复方案:对xlink:href的value进行过滤。
4 L; z" u5 r8 q# |2 s& V" {3 d* _. W) }
来源 mramydnei@乌云
7 E0 }+ Z; N% j2 X
% e1 r, Q7 x) J. K( f2 _4 c; Z9 M0 I h' y+ e) n( O
|