### 简要描述: 之前提交过,官方说补了 http://www.wooyun.org/bugs/wooyun-2014-053573 于是我看看修补以后的效果。 ### 详细说明: 这是最新版的过滤富文本xss的函数: [<img src="https://images.seebug.org/upload/201403/28184725ca6136d6893823bb97759faf0ec9ab0e.jpg" alt="14.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/28184725ca6136d6893823bb97759faf0ec9ab0e.jpg) 已经解决了之前的问题。用expressi0n替换了expression。看似似乎没问题了。 其实还有各种问题。IE还有一个容错特性,那就是expression,其中加斜杠\,在IE6789上是可以触发的(当然我没测试更高版本)。所以,利用这个特性,可以绕过dsafe函数的过滤。 这时候,我们测试: ``` <img style=xss:expre\ssion(alert(document.cookie))> ``` 照弹无误: [<img src="https://images.seebug.org/upload/201403/28185117aa050f836853cc20b07c56bb63a112c6.jpg" alt="15.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/28185117aa050f836853cc20b07c56bb63a112c6.jpg) 这是IE6789下都能触发的。比较鸡肋,来一个全部浏览器,点击触发的。利用超链接的伪协议来执行: ``` <a href=javascript:alert(/a/)>click</a> ```...
### 简要描述: 之前提交过,官方说补了 http://www.wooyun.org/bugs/wooyun-2014-053573 于是我看看修补以后的效果。 ### 详细说明: 这是最新版的过滤富文本xss的函数: [<img src="https://images.seebug.org/upload/201403/28184725ca6136d6893823bb97759faf0ec9ab0e.jpg" alt="14.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/28184725ca6136d6893823bb97759faf0ec9ab0e.jpg) 已经解决了之前的问题。用expressi0n替换了expression。看似似乎没问题了。 其实还有各种问题。IE还有一个容错特性,那就是expression,其中加斜杠\,在IE6789上是可以触发的(当然我没测试更高版本)。所以,利用这个特性,可以绕过dsafe函数的过滤。 这时候,我们测试: ``` <img style=xss:expre\ssion(alert(document.cookie))> ``` 照弹无误: [<img src="https://images.seebug.org/upload/201403/28185117aa050f836853cc20b07c56bb63a112c6.jpg" alt="15.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/28185117aa050f836853cc20b07c56bb63a112c6.jpg) 这是IE6789下都能触发的。比较鸡肋,来一个全部浏览器,点击触发的。利用超链接的伪协议来执行: ``` <a href=javascript:alert(/a/)>click</a> ``` dsafe函数将script过滤成了scr-pt,所以javascript就变成了javascr-pt。但还是那句老话,html属性中是可以用字符编码绕过的,所以我们可以把javascript写成javascript。 但还有一点要注意了,dsafe函数的第一个正则是/&#([a-z0-9]+)([;]*)/i,先就考虑了你使用html实体的情况,所以javascript又会被过滤成javacript,中间少个s,啥都干不了。 继续绕过吧。它既然把s替换成了空,我们就嵌套一层,变成&s#115;,这样中间的s被替换成了空,正好两边的组成了一个s。 所以最后我们的poc就是: ``` <a href="java&s#115;cript:alert(/a/)">click</a> ``` 我们试试,发送一封含有该poc的短消息,就是需要点击: [<img src="https://images.seebug.org/upload/201403/2818541603e65d87e98b3472c6203b078f4f2d95.jpg" alt="17.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/2818541603e65d87e98b3472c6203b078f4f2d95.jpg) 点击后触发: [<img src="https://images.seebug.org/upload/201403/281854380cb2bf9936e7b141fd85d0fbfbbd5035.jpg" alt="18.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201403/281854380cb2bf9936e7b141fd85d0fbfbbd5035.jpg) ### 漏洞证明: 见详细说明。