IPS Community Suite PHP远程代码执行漏洞分析(CVE-2016-6174)


Sep 12 2016

IPS Community Suite PHP远程代码执行漏洞分析(CVE-2016-6174)

首页 » 代码审计 » IPS Community Suite PHP远程代码执行漏洞分析(CVE-2016-6174)   

Author: 知道创宇404安全实验室

Date: 2016-08-04

 一、 漏洞概述

 

1.  漏洞信息

"IPS Community Suite "是一款国外比较常见的cms。但在其4.1.12.3版本及以下版本,存在PHP代码注入漏洞,该漏洞源于程序未能充分过滤content_class请求参数。远程攻击者可利用该漏洞注入并执行任意PHP代码。

2.  触发条件

IPS版本:<=4.1.12.3

php环境:<=5.4.24和5.5.0-5.5.8

 

二、漏洞复现

1.   分析

在 /applications/core/modules/front/system/content.php 文件中有一段这样的代码,

这里程序通过 IPSRequest::i()->content_class 获取了我们通过 GET 请求提交的 content_class 参数,之后进行了一定的字符串的处理,之后就进入了 class_exists 函数,在这一过程中并没有对我们传入的数据过滤,这就有可能产生漏洞,下面我们进入到 /applications/cms/Application.php 文件中的  spl_autoload_register 函数,

最后我们可以构造特定的参数,进入 eval 函数,从而造成远程代码执行
程序处理流程如下:

ips

 

2.  IPS 官方修复分析

经过我们的分析对比

发现 /applications/cms/Application.php这个文件中 原来的 spl_autoload_register() 和更新后

ips_fix

我们可以看到,官方利用 intval() 函数对最后传入的 $class 进行来整数验证

使得传入的 $class 的第14位后被限定成为一个整数,防止传入字符串进入 eval()

 

3.  PHP版本升级分析

在 PHP 的新版本  >=5.4.25  或者  >=5.5.9  里变更了  class_exists  的机制

而低于的版本则没有此限制可以正常触发漏洞

此处 $class="IPS\cms\Fields1{}phpinfo();/*"  的时候不再触发  class_exists()  去加载 /applications/cms/Application.php  中的  spl_autoload_register()  ,故不再触发漏洞

 

4.  漏洞利用

由此,我们可以构造PoC:

效果如图:

phpinfo

Pocsuite:

pocsuite-verify

 

5.  漏洞修复

  1. PHP  5.4.x  升级至 5.4.25 以上, 5.5.x 升级至 5.5.9 以上
  2. IPS 升级至`4.12.3.1 以上

 

三、参考

https://www.seebug.org/vuldb/ssvid-92096
https://invisionpower.com/
http://windows.php.net/downloads/releases/archives/
http://karmainsecurity.com/KIS-2016-11
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2016-6174

如果您喜欢本博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容:

正文部分到此结束

文章标签:这篇文章木有标签

版权声明:若无特殊注明,本文皆为( mOon )原创,转载请保留文章出处。

也许喜欢: «Mysql代码执行漏洞,可本地提权(含exp,9/13 01点更新) | 逆向工程学习第三天--另外一个ShellCode»

你肿么看?

你还可以输入 250/250 个字

 微笑 大笑 拽 大哭 亲亲 流汗 喷血 奸笑 囧 不爽 晕 示爱 害羞 吃惊 惊叹 爱你 吓死了 呵呵

评论信息框

这篇文章还没有收到评论,赶紧来抢沙发吧~