简要描述:对某标签和某属性过滤不严导致可以在邮件中植入恶意代码
# M3 l5 w& P+ x: H& I/ F" X3 B详细说明:按照老习惯通过支持html编辑的邮箱往目标邮箱海量发送xss vectors然后看漏了什么
! `$ X4 ~" S L6 K3 S7 B1 |9 T8 }+ N! P
2 ^' q4 _* r* p/ E
可以看到我的svg被提前闭合了,rect里面的 width="1000" height="1000" fill="white"各种属性也和王力宏那首“你不在”一样,不见了。。不过貌似对于xlink:href没有过滤这是硬伤啊。接下来只要能让我插入math标签,这个问题基本上就算是解决了。* K# r+ L8 f q! i' \5 g# U4 d
而事实上。。。确实就那样成功了
- b& l n& w& M) y* w有效的payload如下:- <math><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="javascript:alert(1)" target="_blank">abc q<rect></rect></a> </math>0 E2 Q6 N! e! u; f
' S( W( B/ ]2 x V9 U( d复制代码
/ ]0 `( r9 @* c: N) T. {) I7 u当然也可以缩减一下,写成这样。- <math><a xlink:href=javascript:alert(1)>I'mshort
0 \/ G+ l: V6 h& S4 ^/ Y
" {$ C4 i" N: l3 [0 e) I# Q复制代码
7 ~+ j6 r5 l4 f3 ]漏洞证明:% C- ^" B T7 K; \7 | `2 w- k! Z
' n4 f- [8 {) j8 x6 X, _' ?% J4 h; P$ I$ z7 b u/ a
! h9 |2 ]0 ?9 O
修复方案:对xlink:href的value进行过滤。
8 U6 s9 H) e9 O5 k
4 P% n( C' Y) B/ Y来源 mramydnei@乌云 4 O& X6 A5 m- k& j
8 U$ g5 M. B9 x8 F1 U
4 c' R. A* |7 Q4 z |