当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号: WooYun-2015-100874

漏洞标题: 多市公共安全系统Getshell漏洞(通用)

相关厂商: 公安部一所

漏洞作者: pandas

提交时间: 2015-03-12 11:10

公开时间: 2015-06-14 11:36

漏洞类型: 文件上传导致任意代码执行

危害等级: 高

自评Rank: 16

漏洞状态: 已交由第三方合作机构(公安部一所)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: 无

3人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-12: 细节已通知厂商并且等待厂商处理中
2015-03-16: 厂商已经确认,细节仅向厂商公开
2015-03-19: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-05-10: 细节向核心白帽子及相关领域专家公开
2015-05-20: 细节向普通白帽子公开
2015-05-30: 细节向实习白帽子公开
2015-06-14: 细节向公众公开

简要描述:

.

详细说明:

类型并不算是文件上传导致的代码执行,应该是任意写文件操作,无奈没找到对应选项,请不要扣我分。

涉及案例:

mask 区域
1.http://**.**.**
2.http://**.**.**
3.http://**.**.**
4.http://**.**.**
5.http://**.**.**
6.http://**.**.**
7.http://**.**.**
8.http://**.**.**
9.http://**.**.**
10.http://**.**.**



等等,先列举10个案例,若需要更多案例,可私信。



漏洞文件:edittheme1.php

code 区域
<?php
function str2js1( $_obfuscate_R2_b )
{
$_obfuscate_R2_b = str_replace( "\\", "\\\\", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_replace( "\"", "\\\"", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_replace( "\r", "", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_replace( "\n", "\\n", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_replace( "\\v", "\\v", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_replace( "\t", "", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_ireplace( "?>", "?&gt;", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_ireplace( "<?", "&lt;?", $_obfuscate_R2_b );
$_obfuscate_R2_b = str_ireplace( "<?php ", "&lt;?php ", $_obfuscate_R2_b );
return $_obfuscate_R2_b;
}

$op = $_GET['op'];
if ( empty( $op ) )
{
$op = $_POST['op'];
}
include( "../common.php" ); //伪全局变量注册机制,比如下面的atc_content变量则默认可以由gp来传递
if ( empty( $siteid ) )
{
exit( "error" );
}
$v = $block_s;
if ( $op == "update" )
{
$atc_content = stripslashes( $atc_content );//act_content可控
$string = $atc_content;
$patterns = "/(http\\:\\/\\/)([0-9a-z-]*)(\\.pt\\.17oh\\.com\\/)/siU";
$patterns1 = "/(http\\:\\/\\/)([0-9a-z-]*)(\\.jy\\.17oh\\.com\\/)/siU";
$patterns2 = "/(http\\:\\/\\/)([0-9a-z-]*)(\\.qy\\.17oh\\.com\\/)/siU";
$patterns3 = "/(http\\:\\/\\/)([0-9a-z-]*)(\\.zf\\.17oh\\.com\\/)/siU";
$string = preg_replace( $patterns, "", $string );
$string = preg_replace( $patterns1, "", $string );
$string = preg_replace( $patterns2, "", $string );
$string = preg_replace( $patterns3, "", $string );
$string = str_replace( $_config_rooturl, "", $string );
$atc_content = str2js1( $string );//这个函数对html标签进行了html转义,对漏洞利用没有影响
$cat1 = str_replace( "f_con", "", $blockid );//blockid可控
if ( $cat1 == "2" )
{
$cat = "99";
}
else
{
$cat = $cat1;
}
$filename = SITE_CACHE."/tmp_".$mod."_".$cat1.".php";//mod可控
$h_bg = "<?\n";
$h_bg .= "\$fcon[".$cat."]=\"".$atc_content."\";\n";
$h_bg .= "?>";
file_put_contents( $filename, $h_bg );
}
?>





由于有伪全局变量注册机制,所以变量h_bg部分可控,且首尾有php标签,filename也是部分可控,所以最后的file_put_contents写入文件没有任何阻碍,可成功getshell,只是利用方式会有一点点绕,具体可见测试代码区。



漏洞证明:

随便选取一处案例写入phpinfo测试,未做破坏:

写入一句话木马的原理一样,厂商若需要,可以私信联系。

http://**.**.**.**

QQ20150312-1@2x.png





QQ20150312-2@2x.png

修复方案:

.

版权声明:转载请注明来源 pandas@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:17

确认时间:2015-03-16 11:35

厂商回复:

验证确认所描述的问题,已通知其修复。

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2015-03-12 11:45 | _Thorns ( 普通白帽子 | Rank:1712 漏洞数:261 )
    0

    来了来了,哈哈哈

  2. 2015-03-16 11:40 | Vig0r ( 普通白帽子 | Rank:108 漏洞数:18 | 十年磨一剑)
    0

    还是4rank?

  3. 2015-03-19 21:27 | xiaoL ( 普通白帽子 | Rank:361 漏洞数:67 | PKAV技术宅社区! Blog:http://www.xlixli....)
    0

    这些系统你都接触的到啊- -

  4. 2015-12-18 15:58 | phoenixne ( 普通白帽子 | Rank:286 漏洞数:102 | 小本毕业,向各位学习)
    0

    胆子太肥了

登录后才能发表评论,请先 登录