| 琳达 版主   
 | 
						1#
													大							中
							小												发表于 2016-1-12 11:54 																					显示全部帖子 
												
													天融信WEB应用安全网关任意命令执行+SQL注入(无需登录)漏洞概要
缺陷编号:        WooYun-2015-131155 
漏洞标题:        天融信WEB应用安全网关任意命令执行+SQL注入(无需登录)   
相关厂商:        天融信 
漏洞作者:        路人甲 
提交时间:        2015-08-03 08:11 
公开时间:        2015-11-01 16:06 
漏洞类型:        命令执行 
危害等级:        高 
自评Rank:        20 
漏洞状态: 厂商已经确认 
漏洞来源:        http://www.wooyun.org 
Tags标签:php源码审核 敏感文件操作参数未加过滤 
漏洞详情披露状态:
2015-08-03:        细节已通知厂商并且等待厂商处理中 2015-08-03:        厂商已经确认,细节仅向厂商公开
 2015-08-06:        细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航)
 2015-09-27:        细节向核心白帽子及相关领域专家公开
 2015-10-07:        细节向普通白帽子公开
 2015-10-17:        细节向实习白帽子公开
 2015-11-01:        细节向公众公开
 
 
简要描述:天融信WEB应用安全网关三个不需要登录的任意命令执行和SQL注入+几十个普通权限的命令执行。 
详细说明:天融信的WEB应用安全网关我感觉是安全做的相对较好的一套系统,但最终还是找到一个疏漏的地方,可执行任意命令,同时还存在SQL注入,另外该系统在登录的前提下,还是有许多处可以直接执行命令的地方,这里就不多说了,望厂商自行修复。 
 前面有人提交了该系统的命令执行漏洞,但需要登录,非常鸡肋
 
 
 code 区域 WooYun: 天融信WEB应用安全网关可任意命令执行
 
 漏洞一、命令执行漏洞
 
 这里首先给出不需要登录的命令执行。
 
 
 code 区域/function/ssh/file_ssh.php
 /function/ssh/file_ssh_exec.php
 /function/ssh/file_ssh_result.php
 
 直接访问
 
 
 code 区域https://122.156.42.163/function/ssh/file_ssh.php
 
 如图所示,并点击执行命令按钮
 
 
 
  
 
 跳转到如下的连接,输入命令,并点击提交命令:
 
 
 code 区域https://122.156.42.163/function/ssh/file_ssh_exec.php?action=user_query&id=2
 
  
 
 刷新页面,点击"查看"即可查看执行命令的结果,如下所示
 
 
 
  
 
 这里以执行 cat /etc/shadow 为例
 
 
 
  
 
 漏洞二、SQL注入
 
 
 code 区域/function/ssh/file_ssh.php
 
 部分代码为:
 
 
 code 区域/* 获取用户查询信息 */
 $id                 = getVar('id');
 $starttime         = getVar("starttime");         // 查询起始时间
 $stoptime        = getVar("stoptime");         // 查询结束时间
 $page_num                 = getVar("page_num");                                // 分页变量
 $lines                 = getVar('lines');                        // 每页显示记录数
 
 $page_num                = ($page_num != "") ? $page_num : 1;
 $lines                 = ($lines != '') ? $lines : 10;
 $offset                = $lines * ( $page_num - 1 );
 
 /* 构建SQL查询语句 */
 $sql = "";
 。。。
 }
 
 $lines参数,很明显的注入,但需要绕过系统本身的WAF,就不多说了
 
 漏洞三:无数个命令执行漏洞
 
 如下图所示
 
 
 
  
 
  
 
 这些文件(包括但不限于这些文件)均存在任意命令执行漏洞,简单贴下造成漏洞的代码
 
 命令执行一:
 
 
 code 区域/function/sysconfig/log_manage.php
 class Datamanage extends baseControl{
 public function doingSave()
 {
 $accesslog = getVar('accesslog');
 $accesslog2db = getVar('accesslog2db');
 $parselog = getVar('parselog');
 
 $accesslog = ($accesslog=='on')? 'start' : 'stop';
 $accesslog2db = ($accesslog2db=='on')? 'start' : 'stop';
 $parselog = ($parselog=='on')? 'start' : 'stop';
 
 $path = "/usr/local/waf/waa/bin/waf_system_config.sh ";
 
 $cmd1 = $path." $accesslog accesslog";
 @exec($cmd1, $out1, $ret1);
 
 命令执行二:
 
 
 code 区域/function/sysconfig/syslogng_configs.php
 class Datamanage extends baseControl
 {
 public function doingSave()
 {
 $accesslog = getVar('accesslog');
 $accesslog2db = getVar('accesslog2db');
 $parselog = getVar('parselog');
 
 $accesslog = ($accesslog=='on')? 'start' : 'stop';
 $accesslog2db = ($accesslog2db=='on')? 'start' : 'stop';
 $parselog = ($parselog=='on')? 'start' : 'stop';
 
 $path = "/usr/local/waf/waa/bin/waf_system_config.sh ";
 
 $cmd1 = $path." $accesslog accesslog";
 @exec($cmd1, $out1, $ret1);
 
 $cmd2 = $path." $accesslog2db accesslog2db";
 @exec($cmd2, $out2, $ret2);
 
 $cmd3 = $path." $parselog parselog";
 @exec($cmd3, $out3, $ret3);
 
 $this->redirect("log_manage.php");
 //jsAlert("操作成功");
 //echo("<script language='javascript'>top.window.frames['carnoc'].location.reload();</script>");
 //jsLocation('log_manage.php');
 exit;
 }
 
 命令执行三:
 
 
 code 区域/function/appconfig/alarm/alarm_ddos.php
 if(getVar("action") == 'save'){
 $weboc                         = getVar("weboc");
 $intervalValue                 = getVar("interval");
 if(getVar("yj") == 1){
 $emailValue                    = getVar("email");
 $isEmailAbstratValue = getVar("isEmailAbstrat");
 $emailValue = preg_replace("/[\r|\n]/i", "", $emailValue);        // 就剩下xxx,xxx,xxx了。
 }else{
 $emailValue                    = "NULL";
 $isEmailAbstratValue = "0";
 
 }
 if(getVar("fx") == 1){
 $smsValue                          = getVar("sjNum");
 $smsValue = preg_replace("/[\r|\n]/i", "", $smsValue);        // 就剩下xxx,xxx,xxx了。
 //add by haoyh,2011-8-19,BUG[52534]处理连续逗号
 $smsValuearray =explode(',',$smsValue);
 $smsValue="";
 foreach($smsValuearray as $value)
 {
 if($value!="")
 {
 $smsValue.=$value.",";
 }
 }
 $smsValue=trim($smsValue,",");
 }else{
 $smsValue                          = "NULL";
 }
 if($weboc == 0){
 $cmd = "/usr/local/waf/waa/alarm/alarm_config.py ddos ".$weboc;
 }else{
 $cmd = "/usr/local/waf/waa/alarm/alarm_config.py ddos ".$weboc." ".$intervalValue." ".$emailValue." ".$isEmailAbstratValue." ".$smsValue;
 }
 @exec($cmd, $out, $ret);
 error_show($message= array(
 'defaultUrl' => '/function/appconfig/alarm/alarm_ddos.php',
 'msg_content'=> ($ret ? "操作失败":"操作成功"),
 'label'=> '返回告警管理',
 'why' => $cmd,
 'where'=> 'DDos攻击告警修改',
 'status'=> $ret ? '1': '0',
 'menu'=>'appconfig'
 ));
 }
 
 其他的命令执行还有非常多,请官方自行检查!
 
 
漏洞证明:这里以执行 cat /etc/shadow 为例 
 
 
  
 
 
修复方案:过滤吧 
 
版权声明:转载请注明来源 路人甲 @乌云
漏洞回应 厂商回应:
 危害等级:高
 漏洞Rank:10
 确认时间:2015-08-03 16:04
 厂商回复:感谢您的关注
 最新状态:暂无
 原文:http://www.wooyun.org/bugs/wooyun-2015-0131155
 
 
[本帖最后由 linda 于 2016-1-12 11:58 编辑 ] 搜索更多相关主题的帖子:
								天融信 WAF 非授权访问 远程命令执行 SQL注入 PHP 源码泄露 密码泄露 Topsec 天融信 WAF 非授权访问 远程命令执行 SQL注入 PHP 源码泄露 密码泄露 Topsec 																 |