概述前几天我们公布了海洋CMS(SEACMS)的一个0day漏洞,官方据称是在10月2日发布的V6.55版本中进行了修复,而实际上漏洞并没有被实质性修复,而是仍然存在任意代码执行的问题。 V6.55修复方式新版本在main.class.php的parseIf函数中增加了黑名单的方式来过滤: 首先用黑名单过滤的方式来解决问题就没有找准漏洞根源,而且这个黑名单也是非常不全面的。 绕过方法由于php存在大量可执行代码的函数,仅仅过滤上面这些是远远不够的,这里甚至连最常用的assert都没有过滤。对于引入shellcode的地方,仅仅过滤了$_GET、$_POST、$_COOKIE、$_REQUEST,然而HTTP请求数据可以进来的地方还有很多,例如$_SERVER。我们随便构造一个请求即可绕过: 最终在eval中执行的代码是: 而在php中$_SERVER[QUERY_STRING])会被等同于$_SERVER['QUERY_STRING'])执行,这样就不用考虑绕过addslashes的问题了。然后就是把要执行的代码放在query_string中即可。 修复方案要不就按照你们的修复方案继续补充黑名单,要不就还按照我的修复方案在echoSearchPage()函数中增加一条过滤语句: *本文作者:天择实习生,转载请注明来自 FreeBuf.COM |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|