漏洞漫舞的飞骋
转载请保留以下文字:
——————————————————————————–
本文作者:玄猫[B.C.T]
本文原发表于《黑客X档案》2005年第7期,网上首发地址为B.C.T(http://www.cnbct.org/showarticle.asp?id=494)和黑色森林(http://www.blackwoosd.cn)
本文版权归《黑客X档案》和作者杂志社所有
——————————————————————————–
一、前言。
初识飞骋似乎还是2002年,那时它推出了一个似乎叫飞骋邮局的东西,提供280M的空间(在当时算很大了),当时学SQL Injection的时候,曾用它练过手,现在这个站发展的不小,于是再对它作次安全检测吧,发现漏洞漫天飞舞啊,而且很有意思,整个网站哪个栏目的系统都是各有特色,有.net的,有php的,还有asp的,真不知道他们是多少个人一点一点拼着开发起来的,而且他们用什么样服务器,怪啊~其实由此就可以看到他们的技术不专业性。从检测的结果来看,漏洞出的都很幼稚,好了,捡我发现的一些比较典型的漏洞给大家逐个介绍下(注入的漏洞就不说了吧,因为猫猫懒得找注入点了,大家可以自己找找看,有很多的,但是错误提示是关闭的。),争取能包含大部分常见网站程序漏洞吧。
二、网站程序漏洞介绍。
玄猫的习惯是先从系统功能来看,这个地方出的漏洞一般都是比较危险的。
1、取回密码验证不严导致可以修改任意用户的密码漏洞。
人在江湖走,难免忘密码,找回密码功能当然是现在涉及会员管理的网络程序的”标配”了,但是找回密码功能容易出现一个大的纰漏就是验证不严,我们来看:
注册一个用户名为BlackCat的用户,然后点击首页的”忘记密码”按钮找回密码,看程序的流程,先是输入用户名,然后是填写提示问题的答案,然后就是修改密码了(读者:又一个用废话骗稿费的)。我们把这个第三步的页面保存下来,用UltraEdit打开看源代码,读到118行的时候,我们看到这样一行代码<input name="g_username" id="g_username" type="hidden" value="blackcats" />为了照顾不懂Html的读者,我讲下这段代码的含义,这是一个隐藏的文本域,值为blackcats,即我们要找回密码的用户名,因为隐藏域在网页上是不显示的,所以许多程序员都用它来传递参数,但是这里用这种方法就导致了一个极其严重的漏洞,为了方便讲解,我们再注册一个叫”BlackWoods”的用户,密码设为123456。注册成功后,我们来修改保存到本地的网页文件,把value=”blackcats”改为value=”BlackWoods”,然后把文件第93行的action="getpassword_2.aspx"改为action=" http://www.fc****.com/reg/ getpassword_2.aspx",打开这个网页,在输入新密码的地方输入654321,然后提交,显示修改成功,我们用123456的密码登陆用户BlackWoods会发现密码错误了,再用654321登陆,成功,这就是严重的由于验证不严导致的随意修改用户密码的漏洞。
再来看它提供的服务有哪些漏洞。
2、网络曰记内容跨站漏洞。
首先来看曰记服务,一般来说对于像曰记这种一个人写,N多人看的东东,我们要考虑的就是XSS跨站漏洞了,(千万不要小看跨站,我觉得辐射鱼在这方面颇有研究,他经常能提出除了盗cookies的更强的利用方法,譬如直接利用管理员的表单来进行一些操作,大家可以看看以前的杂志)。在下面的内容中,我们试着用代码<sc太阳pt>alert(“玄猫啊玄猫,玄猫要高考咯”)</sc太阳pt>来测试能不能在页面上运行我们的Javasc太阳pt脚本。
我们打开一个写曰记的页面,先测试内容能不能写跨站脚本,曰记标题随便写,内容写个<sc太阳pt>alert(“玄猫啊玄猫,玄猫要高考咯”)</sc太阳pt>,然后去看看,不难看到,我们写的sc太阳pt被替换成了s c太阳pt
(图一)
中间多了个空格,再来改变大小写试试,内容写<Sc太阳pt>alert(“玄猫啊玄猫,玄猫要高考咯”)</sc太阳pt>,还是不行,看来要想个变通的方法了,我们找找还有哪些是可以输出的,对了,标题,可是有的朋友会有疑问,标题就让写10个字,不够啊,我们再来把文件保存到本地,研究form的验证:232行有个<FORM id=frmAnnounce name=frmAnnounce onsubmit="return checkform();"的代码,不难看出,这个onsubmit触发的函数就是检查标题字数的代码,我们删掉onsubmit=”return checkform();”,然后把action补全,标题内填入<sc太阳pt>alert(“玄猫啊玄猫,玄猫要高考咯”)</sc太阳pt>,内容随便写些东西,提交,在随后刷新出的页面里,优雅得弹出了我们的对话框,跨站成功。
(图二)
3、曰记本介绍跨站漏洞。
在登陆曰记管理后,总是显示一个页面要填写曰记介绍,我们不妨在这里写个跨站代码,这样别人浏览我们的曰记本的时候就会执行了。
4、随意以任何用户身份添加曰记漏洞。
老用UE面对一些枯燥的代码未免有些不爽,于是我又用DreamWeaver打开保存在本地的页面,发现有3个隐藏域,
(图三)
我们来看下,第一个隐藏域的值就是我们的用户名,这里是不是有文章可做呢,我们以blackcats登陆,把这个文件的隐藏域值改为BlackWoods,然后保存打开,写一些东西并提交,然后便在BlackWoods的曰记本中看到了我们提交的内容!My God!Session是干什么用的?!
额外的话:由于我在开始测试网站的漏洞的时候玩的比较凶(在一个JJ的曰记上写了”路过,路过而已”),结果第二天管理员就加了一个防止外部提交的代码,如果我们在本地修改再打开,提交的话会显示禁止外部提交。
(图四)
对于禁止外部提交的突破方法黑客X档案以前也是提过的,我这里再说下,我们完成一次合法的曰记提交,并用WinSockExpert抓包,可以得到:
POST /add_blog.asp? HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://diary.fc****.com/add_blog.asp?action=add
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)
Host: diary.fc****.com
Content-Length: 251
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: Logined=d738623c3a97ec40cb0b153fd94ade49; LoginedMd5=e10adc3949ba59abbe56e057f20f883e; LoginId=517609; LoginUserName=blackcats; IsGrade=0; last_time1=1115915788; last_time=2005-05-13+00%3A18%3A48; username=blackcats; use太阳d=517609; ASPSESSIONIDQSBASSBT=FFJHCNEBAJLBMIKJEFFAPCOF; ASPSESSIONIDQQBBRSCS=APNJNNEBMOBNGOGKPJIJMHEI
title=title&postyear=2005&postmonth=5&postday=13&sfsd=0&password=&blog_leibie=%CE%DE%C0%E0%B4%E6%B4%A2&xinqing=14.gif&weather=sun.gif&font=%CB%CE%CC%E5&size=3&color=%236495ED&Content=content&qiangzhi=0&ok=%CC%E1%BD%BB&username=blackcats&action=add&id=
这样我们用NC发下包就可以完美的绕过可爱的不验证session的程序而非法跨站或者帮别人写曰记了。
5、小朋友的曰记就安全吗-少儿频道曰记跨站漏洞。
飞骋有个少儿频道,办得不错,其中有个让小朋友写曰记的功能,呵呵,程序员大概觉得小朋友都比较乖,不会跨站,可是…我这个“大朋友”来了,搞的不安全了,我们直接在曰记的内容写<sc太阳pt>alert(“玄猫啊玄猫,玄猫要高考咯”)</sc太阳pt>,提交,浏览曰记,发现对话框弹了出来,跨站成功,呵呵,不要吓到小朋友,我们还是把曰记删了吧…
6、小朋友的留言就安全吗-少儿频道留言跨站漏洞。
当我们看了别的小朋友的曰记的时候,总该给他/她留个言鼓励下吧,当打开留言窗口后,我的双眼突然露出邪恶的目光,为了让小朋友注意我们的留言,我们来弹对话框吧:因为留言的标题只能写20个字,写起来很不爽,而且经过玄猫的测试,写入数据库之前程序还判断了标题的字数,所以我们直接在内容里写,最终的结果是跨站成功,由于前面已经讲的很详细了,这里就不再说了。
关于网站程序本身的漏洞,暂时就说到这里,这个站点存在的主要问题还是对于跨站防御不足,管理员对程序的逻辑处理有些小小的漏洞,我们再来看它给老用户提供的免费空间的漏洞。
三、免费空间漏洞介绍。
我们成功申请了一个免费空间,传一个Lcx的老牌木马海洋2006上去,很好,没有被杀,进去四处观察下,可以发现这个公司用的是蓝芒的主机系统,蓝芒主机系统是一个搭建在IIS,Serv-U,WebEasyMail环境的虚拟主机管理系统
(图五)
我没有在本机测试过这个东西,所以直接在服务器端研究推断下。
通过查看系统用户,我们可以发现,系统存在许多用户
(图六)
并且用户的描述都是蓝芒主机用户,用户组属guest,这样我们可以推断出,每个站点的Internet来宾用户是单独设置的,这样在一定程度上防止了web木马的越权操作,但是服务器的管理员忽略了一个重要的问题就是NTFS权限的继承,因为这些用户都继承着everyone的权限,而系统默认everyone有许多权限,导致未期料的越权操作易如反掌。
别的废话不多说了,我们直接进入Fso操作的功能模块。打开c:\\
(图七)
所有的文件尽在眼前,先老路子看看pca的文件,进入c:\\documents and settings\\all users\\发现没有symantec的影子,可惜了,没有pca,我们再来看看别的,program files文件夹中可以看到bluelights,这个是蓝芒的文件夹,除了下载其数据库,似乎没别的什么用途,下载数据库下来看,也没有用户密码,没什么用处
(图八)
当然,如果你无聊的话可以删除文件,当然,警察叔叔也不会饶过你了。
再来看D:\\盘
(图九)
由于服务器一共就分了2个区,所以D:盘存放了网站系统的一个文件夹,还有所有用户的文件,我们试着在网站的文件夹中创建一个文件,然后去访问,成功了,当然,我们还可以修改网站的文件或者其他用户的文件,由于玄猫很不喜欢改站,所以这里就不再提那么详细了。
D盘还有一个Serv-U的文件夹,我们仍然可以畅通无阻进去,有两种方案进行下面的渗透,一是修改ServUDaemon.ini这个文件,增加用户,或者是读取高权限用户的密码散列来本地破解。由于这个Serv-U是6.0.0的,我们可以用本地溢出工具,由于篇幅的原因,玄猫在这里也不详细的说了,大家可以自己去网上找找看相关的工具。
四、对飞骋的建议。
其实我还是比较喜欢飞骋这个站的,在玄猫决定写这篇文章的时候,联系了飞骋的管理员白菜和吴明,他们都很积极的研究并修补漏洞,这里还要给他们提出一些建议,同时也帮助各位读者提高警惕,严防入侵J。
首先说网站程序,一定要把访问者输入的东西考虑全面,并且在逻辑处理上多作工夫,譬如那个找回密码的功能,很大的一个漏洞啊,而且这个功能的实现其实许多网站都用给用户发送Email来提交一个新的密码,这样就能多做一次验证,使用户的信息也就更加安全。
再说跨站的那些漏洞,都是用一个替换函数就可以避免的,只不过因为可以输入的地方太多了(系统还有天气、心情等选项,其实都可以跨站的),容易忽略。这个是一个要求很仔细的活计啊…
然后是跨用户,仅凭隐藏域来判断用户是根本不保险的,应该用session或者cookies中同时保存用户名和密码散列,在网站端再加验证也勉强可以,但是这样跨站盗取了用户的cookies后也是可以伪造的,所以最好的方法是session。
我们再来说免费空间服务器的权限问题。
Everyone的权限继承的确很容易忽略,我们应该怎样作呢,首先应该去除权限继承,然后删除everyone的所有权限,最后再分别对各用户的文件夹给个用户所属的Internet来宾账号分配权限。
尤其要注意All users和serv-u的目录,这些都是高危文件,泄漏就会引起很大的问题。
[注:本文仅作研究漏洞的技术文章,请勿使用本文中的方法攻击任何网站,否则后果自负,为了保护网站,文中网址已作处理,在本文完稿时飞骋的管理员已修补了漏洞,所以大家就不要再盯着它不放了.
疯了好…疯了好…
:shock:
不是那个意思拉!
哈哈
猫猫知道杀了我怎么办?
:shock: 那我就来个英雄救美!
我倒~~
发现我blog的表情少..
表达不出来我的心情.. :mad:
恩恩!
你终于发现了啊!
我连汗都么得滴的说~~~~
嘿嘿~~~
:mad: :mad: :mad: :mad: :mad: :mad:
这个就是汗啊…
回家后换套表情.
不好看~
不用~
呵呵:)
:wink:
:lol:
猫猫最近发疯了,嘿嘿
这套表情大小正合适.
换别的表情的话Post Comment部分会有点乱.又懒得去改.