织梦dedecms用的人越来越多,也就引来各种关注,然后就各种漏洞、入侵,最近又爆出了一个堪称全版本都有的漏洞,的确,我googlehack了一下,基本上 5.5-5.7 的版本测试都可4 $ * F 5以,不过MD5是个硬伤,多余的话k _ V , $ ; w Q就不说了.
其实就是在后台登录界面添加个表单验证而– a J A [已,管理认证,应该知道吧,动易、帝国的那种,本地字符验证,而不是数据库验证,所以SQL查询不了,入侵时碰到这种登录最纠结,最无奈的.
首先看看,我们要改的是这2个文件/(后台路径)/templets/login.htm 这是后台登G k O \ \ H b `录界面,/(后台路径)/login.php 登录消息的处理文件.
我们先来改login.htm文件,可能大家的模板不一样,不过自己改改吧,这是验证表单是否为空u k ~ 0 s : & % s的代码,可以直接放在HTML里,也可以link到JS文件里,代! ! s码如下:
<scc g @ Tript language=”javascript”>
<!–
var closestr=0;
function SetFocus() {
var df = document.form1;5 5 p H H v d |
if(df.userid.value == ”)
df.N d ` j luserid.focus();
el} W – c } Gse
df.userid.select();
}
function CheckForm() {
var df = document.form1;
if(df.userid.value == ”) {
alert(‘请输入用户名!’);
df.userid.focus();
return false;
}
if(df.pwd.value ==_ 5 K T _ B , ”) {
alert(‘请输入密码!’);
df.pwd.d } V | ` % Wfocus();
return false;
}
if (df.validate.valuj P n – t 5 k He ==s ; Q j ”) {
alert (‘请c 0 b 1 I输入您的验证码!’);
df.valr r cidate.focus();
return(false);
}
if (df.vacodes.value =C { ~ S 4 k m= ”) {
alert (‘请输入您的认证码!’);
df.^ Z Evacodes.focus();
return(false);
}
}
//–>
</script>
f H ~ ( – x ;是我的form框架和input提交,其实那个认证码的input 直接复制用户名的 input或密码的input| ~ 2 n \ Q u O !就可以,改下name名就可以了,代码如下:
<form name=”form1J P ) k q + L z I” id=”form1″ mb [ S M $ ]ethod=”post”| , % n / action=”login.php7 ; b w f” onsubmit=’return CheckFoU v r l r r \ Prm();’>
<input type=”hidden” name=”gotopage”q k n } S r J S value=”<?php if(!empty($goto0 / ) O * Xpage)) echo $gotopage;?>” />
<inputt ) x type=”hidden” name=”d} _ V q @ [opost” value=”login”/>
<ul>
<li><span>用户名:</span>
<input type=”text” name=”userid” class=”input_out” maxlength=”20″ onfocus=”this.clw D T * | @assName=’input_on’;thM O ) xis.onmouseout=’S q R N k G U C‘” onblur=”this.className=’input_off: } ? * 1 [ I x‘;this.onmousw ! Teout=function(){this.className=’input_out’};” onmousemove=”this.className=’input_move'” onmouseout=”this.className=’input_out'”/>
</li>
<li8 ` v b T k L c N><span>密&nbsp;&p L 3 oamp;nbsp;码:</span>
<input type=”px G Kassword” name=”pwd” class=”input_out” maxlength=”20″ onfocus=”this.className=’input_on’;this.onmouseout=”” onblur=”this.className=’input_off’;this.onmouseout=function(){this.claQ . U h 9 H v t jssName=’input_out’};E z | z } R” onmousemove=”this.className=’input_move'” onmouseout=”H \ j ^ N } 9this.className=’input_out'”/>
</li>
<li><sH W Hpan>认证码:</span>
<input type=”password” name=”vU \ Macodes” class=”input_out” maxlg [ z Yength=”20″ onfocus=”this.className=’input_on’;thF = W 2 _ T *is.onmouseout=”” onblur=”this.className=’input_off’;this.onmouseout=function(){this.classNa7 W {me=’input_o] v B 8 0 q W yut’};” onmousemove=”this.className=’input_move'” onmouseout=”this.className=’input_out'”/>
</li>
<li><span>验证码:&lm ( vt;/span&gX 9 F i ] )t;) h Z % } p +
<input name=”validate” type=”texY F : @t” id=”v! l }dcode” onfocus: { Z b T=”this.R t P E Y c c ( 8clR ! F / { Z g ~ %assName=’input_on’;this.onmouseout=”5 R 2 \ P =” onY = kblur=”this.className=’input_off’;this.onmouseout=function(){this.className=’input_out’};” onmousemov[ : B ; R f ] $ ye=”this.className=’iE i bnput_move'” onmouseout=”this.className=’input_out'” class=”input_out”/>
<img id=”vdimgck” src=b \ v y“http://www.dede58.com/ab c D P = G z/include/vdimgck.php” alt=”看不清?点击更换” align=”absmiddle”@ h * onclick=”this.srcT b H=this.src+’?'”/></li>
<span>&b e b x R Q \ *amp;nbsp;</span>
<input name=’Submit’ type=’image’ src=’http://www.dede58.com/a/dedejq/img/} T o = } p Q q rsubmit.gif’ wid ! / edth=’60’ height=’27’/>
</li>
</ul>
</form>
然后就是提交验证(/login.php)了,代码第5C 1 ] 3 K R w \ P0行x i ! # ] D @ \就有注释 //登录检测,我们把验证内嵌在如下代码:
if (!emptyempty($userid) && !emptyempty(@ * , j$pwd)) {
$res = $cuserLogin->checkUser($userid, $pwd);
//succeE 9 h 4 ess
if ($res == 1) {
//里,如下。
if (!emptyempty($userid) && !emptyempty($E = h ? – – Bpwd)) {
$res = $cuserLogin-&[ X 4 Z ; 8gZ t O } z ^ + Ot;checkUser($userid, $pwd);
//success
if ($res == 1) { //嵌套到这里面!
$uservacodes = $_POST[‘vacodes’]; //取出vacodes内容放入另一个变量
if ($uservacodes !=Z A u # z % 3 t Q ‘认证码自定义’) { //自行修改认证码自定义内容!
ResetVdValue();
ShowMsg(‘认证码` O N E K O不正确!’, ‘login.php’, 0, 1000); //不等于跑这里
die; www.111cn.net
} else { //等于就跑这里
$cuserLoJ % Pgin->keepUser();
if (!emptyempty($gotopage)8 0 H N a T e M 2) {
ShowMsg(‘成功登录,正在转向管理管理主页!’, $gotopage);
die;
} else {
$uservacoded b a / G K o Js = $_POST[‘vacodes’];
ShowMsg(‘成功登录,正在^ , o转向管理管z e D ` b n 4 W g理主页!’, ‘index.php’);
die;
}
}
解释:先验证图片验证码,在验证用户名,在验证密码,最后验证认证码,以免认证码被爆破.
注意:if的块语句{}一定要对应,不然会出错,可以用Notepad++来修改.
也可以把认证码比较那里设置成变量,链接到包含的文件里,比如config文件,自己操作吧,个人博客我就不讲究互动性了,其他的网站源码也大同小异,找到登录界面和提交页面,修改之即可.

免责声明:本站所有文章和图片均来9 t x x q F |自用V ; .户分享和网络收集,文章和图片版权归原作者及原出处所有U / o l { p R ! $,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注