深入浅出软件中所潜在的安全隐患(XSS漏洞篇)
深入浅出软件中所潜在的安全隐患——XSS漏洞篇(原创文章,转载请申明出处)
作者:黄启清
日期:2008-6-10
谨以此文献给我最亲爱的妈妈(http://mama520.cn/)
首先申明一点,我不是什么“客”,写这篇文章的目的只是让大家了解一下如何更好地检测你应用程序的安全性。
小时候,我的妈妈常告诉我,“清,在草丛杂乱的地方可能会有蛇,还有在有很多刺的地方,还有……当我们走过那些路段时,要先用棍子或者别的工具探探路!以免……“,所以,每当经过妈妈所提醒到的那些环境当中时,我就会按照妈妈的话去做,先用棍子或者别的工具探探路……
这里,我将以Cnblogs前段时间出现的闪存的XSS漏洞为例来详细讲解如何去挖掘一个漏洞(这个Bug我已经告诉dudu,这个漏洞现已经被修补了,文章中所介绍的只是我的一点思路,与大家一起分享,同时也请前辈们多多指教!)
妈妈说过,”在草丛杂乱的地方,在有很多刺的地方等都有可能有蛇“,也就是说,我们首先要了解“SQL注入”,“XSS漏洞”这条蛇(有可能是毒蛇)常出入的地方。——在我开始这篇文章之前,请大家先要对“SQL注入”,“XSS”漏洞有一定的了解。(大家可以通过Google来搜索这方面的文章)
一天,一个贪玩并对新鲜事物(.net)非常有好奇之心的我来到了http://www.cnblogs.com/,打开cnblogs特别好玩的闪存,一闪,闪进了我的思想,闪呀闪,闪着闪着,我又想起了妈妈的话,我在想,“我在闪的时候,会不会把”蛇“也给闪进去了?”!
好了,接下来,我们得用“棍子”或者别的工具探探我们玩耍的地方”CNBLOGS“路上有没有蛇了?
1、确认我们要检测的对象。(Cnblogs的闪存)
2、确认我们要检测的对象的输入点(也就是我们闪存让每天“闪”东西的地方!
- A、http://space.cnblogs.com/ing
- B、QQ、MSN、Gtalk
(用过Cnblogs闪存的朋友都知道,A与B都是我们的输入闪存的地方)
A这个地方有蛇吗?
检测方法:
- 1、在闪存录入文本框中输入“<script>alert("我最喜欢闪存啦!")</script>”
- 2、点击“马上发闪存”
哈哈,通过这个工具敲打了A所在地,没发现有蛇,证明目前这个地方还是挺安全的,继续玩耍!
慢着,还漏了B那个地方没检查了!哈哈,我想能够想到去检测B这个地方的朋友肯定也会比较小一点,
B这个地方有蛇吗?
检测方法:
- 1、通过任何一个你能够闪的IM工具(QQ、MSN、Gtalk)
- 2、在你的聊天窗口中输入“ing 有蛇?“
- 3、发送我们的信息。
妈妈说过,做人要诚实,不能够骗人,所以我还是告诉你B这个地方正确的检测方法:
- 1、通过任何一个你能够闪的IM工具(QQ、MSN、Gtalk)
- 2、在你的聊天窗口中输入“ing <script>alert("有蛇吗");<script>“ (如果恶意用户将这重定向到一个带毒页面,那这就有毒蛇了噢)
- 3、发送我们的信息
B这个地方检测结果:存在有安全隐患(可能有毒蛇噢),当我再次打开http://space.cnblogs.com/ing 后,网站弹出了我所检测的那个对话框
技术说明:网站输入端对我们输入的数据合法性进行了检测,而博客园闪存机器人端则将我们所输入的数据未进行合法性检测而直接存入数据库当中!(并未对ing指令后的数据进行合法性检测)
最后总结:我们检测一个网站是否有XSS漏洞都是通过其网站的输入端来输入我们检测的html Tag以达到测试网站是否存在XSS漏洞的目的,其实,只要是存在有输入端,并通过某种方式写入到数据库中,则这个输入端都有可能存在有安全隐患。(这不仅仅包括XSS漏洞,包括SQL注入在内)
实例部分因关系到Cnblogs,所以我经dudu同意后,才发表出来与大家一起分享这篇文章。
Cnblogs安全团队欢迎您的加入!