我不会编程,也不会入侵。更不会写文章。我就只知道遇事说事。
话说我有一域名,http://www.yylover.com(算是广告:),我以前做了一个网站不过感觉不好,所以我想改用BLOG程序。
我不喜欢大型BLOG程序,喜欢小型BLOG。所以去chinaz.com一搜,找到了一个合适自己的ASP—BLOG程序,本来想用PHP的,但是我的空间不支持PHP所以很让我恼火。我现在就用着它。这个BLOG名叫msmax blog,四川老乡开发的,用百度一搜就能找到一堆堆。
好了,步入正题。
1、过滤失败的检查,简单代码分析。
我们要入侵一个WEB站点首先要得其后台。所以,我们直接检查后台程序,如下:
不知道大家看到没有。
|
admin/login.asp(部分)
//**************************************************************
<script language="javascript" type="text/javascript">
function check1()
{
if (document.form.admin.value=="")
{
alert("错误:请输入用户名!");
return false;
}
if (document.form.pwd.value=="")
{
alert("错误:请输入密码!");
return false;
}
return true;
}
</script>
<script type="text/jscript">
var uReg=/[^A-Za-z0-9]/ig;
function check3(vAlue){
if (uReg.test(vAlue)){
alert('错误:密码不能输入非法字符!');
document.form.password.value=""
form.password.focus();
}
if (vAlue.length>16){
alert('错误:密码只能输入16位!');
document.form.password.value=""
form.pwd.focus();
}
}
</script>
<script type="text/jscript">
var uReg=/[^A-Za-z0-9]/ig;
function check2(vAlue){
if (uReg.test(vAlue)){
alert('错误:用户名不能输入非法字符!');
document.form.admin.value=""
form.admin.focus();
}
if (vAlue.length>6){
alert('错误:用户名只能输入6位!');
document.form.admin.value=""
form1.admin.focus();
}
}
</script>
</head>
<body>
<div id="formwrapper">
<h3>yylover.com后台管理登录</h3>
<form action="" method="post" name="form" onsubmit="javascript:return check1();" >
<fieldset>
<legend>phper用户登录</legend>
<div>
<label for="Name">用户名:</label>
<input type="text" name="admin" size="17" maxlength="30" onchange="check2(this.value)"/><br />
</div>
<div>
<label for="password">密码:</label>
<input type="password" name="password" size="18" maxlength="18"onchange="check3(this.value)" /><br />
</div>
<div class="cookiechk">
<label><a href="#" title="选择是否记录您的信息"></a></label>
<input type="submit" class="buttom" value="登录" />
<input name="submit1" type="button" class="buttom" value="返回" onclick="javascript:history.go(-1)"
/>
</div>
<div class="forgotpass"></div>
</fieldset>
</form>
</div>
//**************************************************************
|
作者判断用户名和密码是先调用已先定义好的javascript脚本对输入框里的用户名和密码(包括长度)进行本地判断。这是作者天真的思想,他想通过本地脚本语言防止非法参数注入。这是不可能的,大家可以找网上找个程序试试。这到防线我们只需要粘贴2次已经准备好的字符就可以进行成功输入。
好了,既然CHECK已经过了,如果你在asp语言里没有写过滤,那你就完了。至于为什么,连我这重从来没写过1次ASP的人都知道。
我们再来看代码:
admin/login.asp(部分)
//**************************************************************
<%
dim admin,password
admin=request.form("admin")
password=md5(request.form("password"))
if admin<>"" then
dim rs,strsql
strsql="select * from users where admin='"&admin&"' and password='"&password&"'"
set rs=db.execute(strsql)
if not rs.eof and not rs.bof then
session("msmax")=rs("admin")
response.Redirect "admin_index.asp"
else
response.write "<script>alert('对不起,此用户名不存在!');</script>"
end if
end if
%>
//************************************************************** |
这家伙首先定义了变量。
然后密码从数据库去反MD5这些都是正常的。
下面程序进入流程控制if.进行了不等于判断。
值得注意的就是第7行,SQL语句,这条查询语句没过滤吧?哈哈
试试'or'='or', 我靠,进去了。
程序给我们直接response.Redirect "admin_index.asp"反回到了管理页。
2、其他检查,上传木马。
(新版可以上传文件到目录。我的旧版是把数据已2进制方式写入数据库。)
首先进入后台,我们就看有没有可以上传的地方,这里我们找到了。admin/add_img.asp文件,它可以不经过任何判断就可以上传任意文件,只是可惜,用它传上去的文件都被转化为2进制文件放到access库里。本人暂时还没有想到此文件有什么地方可以利用的。
3、100%判断后台的位置
这个话题才真正感兴趣,我想包括我在内的人都已经把后台地址给改掉了,或者不把后台放到WEB空间里。我们说前者,如果该掉了后台地址,即使有漏洞也进不去,这让很多初学者闹心。不过通过本人发现,有一个办法可以100%确认对方后台所在位置,您想知道吗?自己尝试吧。
今天我主要想说的是国内到目前为止写出如此程序的人还是很多,真是的。
如果您发现了后台的秘密,那千万不要弄我的BLOG。弄坏了很麻烦的-_-!!!谢天谢地。
其实我就是想宣传一下自己的BLOG罢了。如果想体验一下此漏洞请在百度搜关键字:MSMAX All Rights Reserved 没有修改关键子的朋友可要倒霉了。
我说的比较笼统,但是比较简单较易理解。因为我不懂编程,难免有写错的地方,请指正。谢谢~
经过大半天的对其他文件代码的分析:
http://www.msmax-blog.com(官方主站) 最新版被我黑掉啦 !呵呵
进去点击 [蜀ICP备06020522号] 就到偶网站啦!
我用的不是官方最新版,是1.0,官方用的是2.0版本。
简单看了一下官方后台,完全和1.0不是一个档次。不过嘛~~~
官方BLOG程序后台

官方BLOG程序后台
