?

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 個字

? 微笑 大笑 拽 大哭 親親 流汗 噴血 奸笑 囧 不爽 暈 示愛 害羞 吃驚 驚嘆 愛你 嚇死了 呵呵

評論信息框

這篇文章還沒有收到評論,趕緊來搶沙發吧~

?
?
河北11选5开奖