简要描述:对某标签和某属性过滤不严导致可以在邮件中植入恶意代码: N( o8 m; Q5 O! y: t5 W/ u
详细说明:按照老习惯通过支持html编辑的邮箱往目标邮箱海量发送xss vectors然后看漏了什么- D& |" K; L9 ~2 p. e( S5 N
2 G1 |) i8 g3 Q( E7 f( p
2 k! e0 l! p7 l( l5 ?; J3 }1 y7 c可以看到我的svg被提前闭合了,rect里面的 width="1000" height="1000" fill="white"各种属性也和王力宏那首“你不在”一样,不见了。。不过貌似对于xlink:href没有过滤这是硬伤啊。接下来只要能让我插入math标签,这个问题基本上就算是解决了。
" t' J) X3 G3 X, e3 D( a% f而事实上。。。确实就那样成功了 A( F4 L. M9 b5 h4 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>. ?, ?. G+ }7 z; k
4 o. F$ \' ^7 n0 K& a. _复制代码) `7 @$ ?) m4 ^* M F
当然也可以缩减一下,写成这样。- <math><a xlink:href=javascript:alert(1)>I'mshort) Q% F2 v0 S S; b3 v' Z. |
# F! d1 }# x! p" @* ]% F复制代码$ _- h) i% T( G8 u8 {
漏洞证明:
7 I6 k5 t1 `: `
* s) a' W" N! X
3 w1 Q+ Z- j* L" `0 d8 w# c% Q7 \, T! m% ?" C6 R& u" D! O% B
修复方案:对xlink:href的value进行过滤。+ E( l5 f" `% z7 t4 N. L- |2 Z: W+ ]
7 [2 [) V" K: \; @ k, t- A来源 mramydnei@乌云
: L* b* \" _. z! J ?! v! B, i, U: v( w# P) z+ S7 {9 ^
" b9 `3 [' x" r# Z, C$ [
|