动易网站管理系统最新漏洞解析
Ii霖
地址呢7主要原因有两个,一是当用户访问我们的
页面时可能已经登录过了:二是即使对方没有登
录,也不一定非要在我们的页面上登录.而本文介
绍的方法会以覆盖掉原页面的方式强迫用户登录.
当然,我的那个表单制作得简单了些,如果把登录
的表单做得跟Sohu的极为相像的话,那么我相信大
部分人会中招.不过,我这里还是给大家提供一下
直接修改原Form表单的演示脚本吧,内容很简单,
只要在脚本里~BForm的Action进行重新赋值就可以
了,具体代码如下所示.
适合读者入侵爱好者
前置知识ASP语言
动易网
文/图TTFCT
好了,文章到这里就结束了.由于行文仓促,
文中不免有失误之处,望大家谅解!通过本文,希
望大家能借助我提供的思路扩散思维,发现更好的
新思路,比如用别人允许的东西做出想要的效果
来.最后,我祝大家新年玩的快乐,跨的快乐!
(文中所涉及的程序或代码,请到黑防官方网
站下载,详细地址请看公共论坛置顶帖)J
由于某种原因,一个朋友叫我帮忙分析动易网
站管理系统的漏洞.我们知道,前段时间动易暴出
了众多漏洞,官方肯定对代码进行了更严格的审
核,再加上动易好多代码都封装在DLL中,要出
其中的漏洞,我开始真的觉得没什么可能性.不过
自己还是按照朋友的要求到动易 www.powereasy下载了动易内容管理系统2006SP4 普及版进行分析.
嗣涓分析
看代码的那段时间是艰苦的,不过坚持者终会
胜利.第一次看动易代码,查了80%的文件,居
然没有看到~处可以注入的地方,后来开始查Admin目录下的Admin_Login.asp文件,发现了一点问题.Admin—Login.asp文件中第162~227行的代码如下所示.
SubChkLogin()//璧录捡童函数
Dimsell,rs
DimUserName,Password,CheckCode,
r0ld.AdminLoginCode
UserName=ReplaceBadChar(Trim(Request ("UserName")))
Password=ReplaceBadChar(Trim(Request
("P{Issw0州")))
CheckCode=LCase(ReplaceBadChar(Trim
(Request(,CheckCode"))))?
//R.}pl细∞r矗羹鼍jl了加亏.串孽It.
括号等,巴簟不蠢再夥囊注入
AdrainLoginCode=Trim(Request
("AdminI0ginC0[))
//取疆后台譬曩认崔碍网站程序下载
IfCSng(ScriptEngineMajorV ersion&tiff& ScriptEngineMinorV ersion)<5.6Then
FoundErr=True
ErrMsg=ErrMsg&qi>;服务器脚本解释
引擎(VBScript)版本过低,请联系
员更新.</1i>
ErrMsg=ErrMsg&"司i><ahref=http:/
/www.Ⅱli∞0fLo咖,d呻n妇ds/re】船蠲艘e蛔阮II)=33l36
target=r_blankr><fontcolor=rgreenr>;脚本解释引擎下载t@AJ[</ font></aX/1.i>rr
EndIf
IfUserName="Then
//晨户名者室嗣提示铮误:晨户名不蠢力室l
井农r-oundBrr=Tru#
FoundErr=
篓旦曼望)脚本小子)跗?iptsbollE蚕
ErrMsg=ErrMsg&,,<brxli>m~a<;能
为空!</1H
EndIf.
IfPassword:"II
/
/啻碍为室姻提示膏误啻碍不蠢为室l
冀gmmdErr=True
FoundErr=True
空!</1_
ErrMsg=ErrMsg&,,<brxli>;密码不能为
EndIf
IfCheckCode=HThen
//t证碍为室姻提示膏误;奠证碍不蠢为室l
井冀F~ndErr=True
FoundErr=True
ErrMsg=ErrMsg&"<br)司i>;验证码不能
为空!</1"
EndIf
IfTrim(Session(,CheckCode")):fillTh饥
FoundErr=True
ErrMsg=ErrMsg&"<br><u>;你在管理登
录停留的时间过长,导致验证码失效.请重新返回登录页面进行登录.</li>
EndIf
IfCheckCode◇Session(,CheckCode,,Then
//拳竞产生的■蕾碍和●入的不一致,财睫
晕巷●入的■证碍和拳竞产生的不一致,诗童新输入.井
冀F~ndErr=True
FoundErr=True
ErrMsg=ErrMsg&<br><li>;您输入的验
证码和系统产生的不一致,请重新输入.</li>
EndIf
IfEnableSiteManageCode=TrueAnd
AdminLoginCode◇SiteManageCodeThen
//后台警曩认证碍不对姻提示话误;巷●入
●,后台譬曩认证碍不对,请童新●入.井使Fa嚏mc乜兰rr=True FoundErr:True
ErrMsg:ErrMsg&l<br)司i>;您输入的后
台管理认证码不对,请重新输入.</li>?,
EndIf
IfFoundErr=TrueThen
//如果I=~ndErr:True,姻避出sl|b过疆.
ExitSub
EndIf
ComeUrl=Trim(Request.ServerV ariables
('HTTP_REFERER,))
//运置取得HTTP—REFERER的值,■干
HTTP_REFERER可伪造,故CouLIrL对魂们穰重要.
Password=MD5(Password,16)
Setrs=Server.CreateObject(.dset.)
sql=select?fromPE—
AdminwherePass-
word='"&Password&llandAdminName=,,,&UserName &H'"
码错误!
rs.()pensql,Corm,l,3
Ifm.bofAndrs.EOFTh既
//如果溲宥童我,l用户,姻使Fa"日t为True.
FoundErr=True
ErrMsg=ErrMsg&"<br>;司i>;用户名或密
!!</li
下面我们再看看InsertLog()函数是怎么写的.
同样,在admin—Iogin.aspR~第295~312行的代码如
下:
看完上面的代码后.我们来分析一下登录页面
的执行流程.
首先.用户名,密码和验证码都经过了j过滤.
然后判断用户名,密码和验证码是否为空.为空
的话再判断验证码.后台管理认证码的正确性,如
果上面任意一项没有通过,则退出Sub过程.如果退
出了Sub过程,我们就无法利用了.如果通过了.就
≯一0;譬髦《嚣
肇■一萎

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。