牧星 php 网站信息管理系统 0day,脚本漏洞,分析。
一个小程序在拿站是发现了这个程序,于是跨过去看了下源码。悲剧就发生了!
admin/login.php 源码:
<?php
session_start(); include "../include/databaseConfig.inc.php";
$admin = $_POST['admin']; $pass = md5($_POST['pass']);
$codes = $_POST['codes']; if($_GET['action']){ //这里开始错误!
/*
if($result=$db->Execute("select * from x_admin where a_admin='".$admin."'")){
if($rs=mysql_fetch_object($result)){
if($rs->a_pws==$pass){ if($codes!=$_SESSION['code']){
unset($_SESSION['code']); echo "<script>alert('验证码错误!');location.href='Login.php';</script>";
} else{
$_SESSION['kgj_admin']=$admin; $result = $DB->query("UPDATE x_admin SET ip = '$_SERVER[REMOTE_ADDR]' WHERE id ='$rs->id'");
header("location:index.php"); }
} else
{ echo "<script>alert('密码错误!');location.href='Login.php';</script>";
}
}
else{ echo "<script>alert('帐号错误!');location.href='Login.php';</script>";
}
}*/ //这里注释掉了我们不管他的。
$sql="select * from xx_admin where adminuser='$admin'"; $result=$db->Execute($sql);
//print_r ($result); if($admin==$result->fields[adminuser]){
if($pass==$result->fields[adminpass]){ $_SESSION['kgj_admin']=$admin;
header("location:index.php"); }else{
echo "<script>alert('密码错误')</script>"; }
}else{ echo "<script>alert('帐号错误')</script>";
} $_SESSION['kgj_admin']=$admin; //这里致命了!不管密码是否正确只要是提交了数据那么这里就会赋予你session
//header("location:index.php"); }
while(($authnum=rand()%10000)<1000);
?> |
测试很简单随便输入帐号密码登录一遍,然后在直接访问后台管理页面 index.php 就 OK 了。
不过也没测试的站点吧,小程序只是给我们研究下的!
文章作者
Nuclear'Atk
上次更新
2011-04-01
许可协议
Nuclear'Atk(核攻击)网络安全实验室版权所有,转载请注明出处。