普天同庆祖国六十大寿,墨尔本及高雄电影节官网漏洞揭露
首先,热烈庆祝中华人民共和国成立六十周年,普天同庆;其次,祝各位路过本blog的孩子们节日快乐,玩的开心~下面开始放两者的漏洞。
这个事情一直没在blog上说,因为有一些顾忌。趁着祖国六十周年大庆,利用揭露漏洞的机会稍微说一下:本人无党派,在私企工作,与gov无任何联系;本人所作所为无任何政治色彩,只是一个愤懑的中国人的软弱反抗。当然,如果我没去碰这两个站,也会有人去搞,坊间爱国的黑客太多了,我只是侥幸碰巧关注的早些从而把它们拿下来而已。
没太多技术含量,高手别见笑~好了,不多说,谈谈漏洞:
一、墨尔本电影节官网(http://www.melbournefilmfestival.com.au/):
墨尔本电影节官网貌似给一个开发CMS的company(MeccaMedialight Pty Ltd.)做的,那一套CMS(名称是Wrangler 8.0.0)写的很不错。
虽然写的很好,但明眼人一眼就看出了网站有注入,确实有注入,而且权限蛮大,可以load_file;mysql版本大于5.0,所有数据都可以猜出来;robots.txt可以知道后台目录是:wrangler8。也许很多人觉得这样子已经很容易拿了,可是我却绊在这里很久,问题是,1、mysql猜到的密码一个都破不了,虽然看上去很像MD5;2、这个服务器貌似就这一个站,根本没旁注的机会。
实在没办法了,还是从源码下手吧。花费时间半天拿到源码(这里不说了,业内人士都知道怎么去搞源码),然后大概读了下源码,基本没找到漏洞。整体系统是没啥严重的漏洞,为什么有注入呢,也许前台是后来写的。执行代码与包含的漏洞没找到,只好还是回归后台,从后台下手吧,看看是什么加密,原来是mysql的password函数,不过我没mysql的库,指定破不了了。不过,后台验证那我发现了问题:Cookie Manipulation。
看源码(不知道是否开源,为了保护开发者利益,cookie名称用xxxxxxxxxxxxx替代):
function ValidateUser () {
$this->UserLvl = 0;
$uid = inQuery('user_login');
$pwd = inQuery('password');
$logout = inQuery('logout');
$stay = false; //inQuery('createCookie');
// check for logout
if ($logout) {
setcookie('xxxxxxxxxxxxx','',time()-60000);
header("location:index.php");
exit;
}
if (!empty($_COOKIE['xxxxxxxxxxxxx']) and !$logout) { // cookie exists
@list($c_uid,$cookie_hash) = split(',',$_COOKIE['xxxxxxxxxxxxx']);
$q = "SELECT nonce, level, enabled FROM cw_administrators WHERE name='$c_uid'";
$r = db_getarray($q);
if (count($r) < 1) {
$enabled = false;
} else {
$nonce = $r[0]['nonce'];
$enabled = $r[0]['enabled'];
}
if ($enabled <> '1') {
$this->UserID = '';
$this->UserLvl = 0;
setcookie('xxxxxxxxxxxxx','',time()-60000);
$this->LoginMsg = 'This account ('.$c_uid.') has been disabled.';
LogEvent('Admin access', 'Login rejected (account disabled). Someone from '. $_SERVER['REMOTE_ADDR']. " could not log in with supplied credentials ('$uid')");
return false;
} elseif ((md5($c_uid.$nonce) === $cookie_hash) && $nonce) { // check nonce //这里满足就OK了,来源:http://www.oldjun.com
$this->UserID = ($c_uid); // cookie is good, create $user
$this->UserLvl = $r[0]['level'];
$safe_user = addslashes($c_uid);
$q = "UPDATE cw_administrators SET last_access = now() WHERE name = '$safe_user'";
$r = db_query($q);
return true;
} else {
// something's gone wrong
$this->UserID = '';
$this->UserLvl = 0;
$ok = setcookie('xxxxxxxxxxxxx','',time()-60000);
if (!$ok) $this->LoginMsg = 'Please enter your username and password (unable to delete bad cookie)';
else $this->LoginMsg = 'Please enter your username and password (bad cookie)';
return false;
}
} elseif ($uid and $pwd) {
sleep(3);
$userdata = $this->HandleLogin($uid,$pwd);
if (is_array($userdata)) {
extract($userdata);
if ($stay) {
setcookie('xxxxxxxxxxxxx', $uid.','.md5($uid.$userdata['nonce']), time()+3600*24*365);
} else {
setcookie('xxxxxxxxxxxxx',$uid.','.md5($uid.$userdata['nonce']));
setcookie('xxxxxxxxxxxxx_nostay','1', time()+3600*24*365);
}
$this->UserID = $uid;
$this->UserLvl = $userdata['level'];
RecordEvent('Admin access', 'Successful login by <strong>'.$uid.'.</strong> Remote address is '.$_SERVER['REMOTE_ADDR'], $uid);
return true;
} else {
$this->UserID = '';
$this->UserLvl = 0;
$this->LoginMsg = ('Could not log in with supplied credentials. <a href="'.ADMIN_URL.'?frm=rpwd"> Can\'t remember your password?</a>');
LogEvent('Admin access', 'Login rejected. Someone from '. $_SERVER['REMOTE_ADDR']. " could not log in with supplied credentials ('$uid')");
return false;
}
} else {
$this->UserID = '';
$this->UserLvl = 0;
$this->LoginMsg = 'Please enter your username and password';
return false;
}
}
$nonce注入可以得到,于是可以得到$cookie_hash,于是直接修改cookie进后台了,剩下的不多说了,大家都有数。
二、高雄电影节官网(http://www.kff.tw/):
高雄电影节官网貌似也是外包给电脑公司的,但跟墨尔本电影节官网的公司比起来差多了,网站很小,代码也写的比较烂,虽然美工还是有点酷的~
拿这个站只花费了我一分钟,也许很多人已经知道漏洞了,于是我稍微提一下,不多说了。不过这个站也有个有意思的地方,前台可以肆意注入,而且mysql版本大于5.0,表与列都可以得到,可是就是找不到后台密码,于是用工具跑花去半分钟,我觉得数据库找不到用户名密码后(很明显那些表都不像),随便尝试了个常用的方法,一下子进去了,进出无阻,同样是后台验证问题,具体参考这里:http://www.oldjun.com/blog/index.php/archives/41/。
看看源码(后台):
<?
//session_start();
if(!isset($_SESSION["ADM_AUTH"]) || $_SESSION["ADM_AUTH"]==""){
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript">alert("請登入");
location="login.php?refer=<?echo $_SERVER['SCRIPT_NAME']?><? echo $_SERVER["QUERY_STRING"]?"?".$_SERVER["QUERY_STRING"]:""?>";
</script>
</head>
</html>
<?
}else{
}
?>
问题一目了然了吧?好了,不多说了,那个网站上的某些新闻真的看得让人很不爽,真想删之而后快。
高雄电影节貌似还没开始,然后官网的漏洞也没有修复。请大家对它的官网手下留情,我不说其他,那电脑公司的网络管理员也是有老婆孩子的,你们别搞的他下岗,这样不好,毕竟这种事情与他无关,做人总是要有点良心的~~~








沙发~速度揭露漏洞啊~