简要描述:对某标签和某属性过滤不严导致可以在邮件中植入恶意代码8 Y& {7 @0 M0 ]# x0 U. Y, u
详细说明:按照老习惯通过支持html编辑的邮箱往目标邮箱海量发送xss vectors然后看漏了什么; U5 a* d4 U2 `- X2 t7 Y
; c2 i, L8 C) m+ i* Y o& _) V F
+ _+ _( m/ W- K3 o可以看到我的svg被提前闭合了,rect里面的 width="1000" height="1000" fill="white"各种属性也和王力宏那首“你不在”一样,不见了。。不过貌似对于xlink:href没有过滤这是硬伤啊。接下来只要能让我插入math标签,这个问题基本上就算是解决了。1 s$ C% [( y1 J$ g, S
而事实上。。。确实就那样成功了% X) r% m7 m5 h/ p3 P+ ^2 O! |
有效的payload如下:- <math><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="javascript:alert(1)" target="_blank">abc q<rect></rect></a> </math>
! Q. l3 s1 K$ x/ u& H* z8 n& x
) O- @$ S' G) l! P' a复制代码
1 P. k j0 I8 @2 `当然也可以缩减一下,写成这样。- <math><a xlink:href=javascript:alert(1)>I'mshort6 z- n8 V' J& q1 H! f! l2 z
5 I; T2 W, l# R( L+ @( }复制代码- Y+ Q: J0 ~6 {4 |! L% X# `
漏洞证明:- t6 k! W8 x/ s& X& C: [0 h* }. @
x+ H/ x% o0 j7 t3 D1 `: t$ y8 H/ Y0 H! C
9 m5 z* [6 t5 F+ O
修复方案:对xlink:href的value进行过滤。1 M8 E9 v W# p W5 g2 I
( b! R& I. L) |$ @+ m+ J. D0 D, C
来源 mramydnei@乌云 7 N% g* v! G* R. H3 @7 ]
( ^- @8 v. _3 m
/ T) e$ ?) T2 k2 e, [0 ~ |