简要描述:对某标签和某属性过滤不严导致可以在邮件中植入恶意代码
8 j/ ^) o. [0 n% x6 K, \3 x详细说明:按照老习惯通过支持html编辑的邮箱往目标邮箱海量发送xss vectors然后看漏了什么# O3 W) P) J/ K) W2 I9 ]! {) L; x7 ^
, e! c1 h5 c7 q# D
) O& e/ l8 C4 V2 U8 |7 s可以看到我的svg被提前闭合了,rect里面的 width="1000" height="1000" fill="white"各种属性也和王力宏那首“你不在”一样,不见了。。不过貌似对于xlink:href没有过滤这是硬伤啊。接下来只要能让我插入math标签,这个问题基本上就算是解决了。& p) F) A0 O# ~0 Z1 V. `$ e
而事实上。。。确实就那样成功了7 c9 ^8 {0 l! ^6 P
有效的payload如下:- <math><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="javascript:alert(1)" target="_blank">abc q<rect></rect></a> </math>1 r% S2 e) x% {" c; K
3 `1 q9 g+ g# v/ @1 p [复制代码+ t, R! U3 ]( x& q; A+ z2 N( b! f7 ]
当然也可以缩减一下,写成这样。- <math><a xlink:href=javascript:alert(1)>I'mshort* l0 W+ f5 v, Y* h0 h. O1 A
9 _- Z( ]5 m; E% z+ @1 P& \
复制代码
! {3 h! f4 P% Z4 k A) J8 u3 q漏洞证明:
& w* q+ g8 u& w) R: S% o5 I9 i+ g9 I: ~ r1 s' Q" u
8 t h( J* O( F: I o2 s" b
! J; T$ R- ~8 z+ l8 o% q) c4 q/ ?
修复方案:对xlink:href的value进行过滤。- h" P, c/ b0 I! G* z/ b
~3 {4 q( Z; y7 N$ Y2 ]6 y& ^来源 mramydnei@乌云 . c( L _$ q* x8 z' r
* U" @; i# P4 \3 z/ q+ x
: D1 |: x3 Q0 W; s9 h4 B
|