51Testing软件测试论坛

标题: 大家还在迷信工具么 [打印本页]

作者: 男孩子    时间: 2009-9-25 10:43
标题: 大家还在迷信工具么
做web的安全测试也有些日子了,以前没有到这个版块来过,今天看了看版面上大家都在讨论工具如何如何使用,而很少讨论安全漏洞的原理,我就给大家泼泼凉水,谈谈工具的局限。
先说下扫描工具的原理:
扫描工具可以看做由两部分组成:爬虫+校验机构。爬虫的作用是搜集整个被采集对象的链接,然后校验机构对这些链接逐一进行验证。
然后说扫描工具的局限:
局限1:扫描未必全面
一个网站,能不能被扫描全面,很大程度取决于爬虫搜集链接的能力。我做过爬虫的测试,所以大致知道爬虫的原理,就是对给定的入口地址发起请求,然后从返回的内容中抽取链接,然后再请求抽取到的链接,如此反复。包含在HTML中的链接,很容易被抽取到,但是由js生成的链接,抽取的时候就有些难度了,由Flash生成的链接,更是难于被抽取到。此时有人想说图片验证码了吧?我们做测试可以要求网站开绿灯,暂时屏蔽验证码,这个倒可以不考虑。目前ajax技术的流行,更让爬虫搜集链接的能力显得捉襟见肘。所以这就暴露出了扫描工具的第一个局限,扫描未必全面。
局限2:对屏蔽错误信息的网站效果不好
如果你觉得扫描不全面可以通过多分析和从不同的入口地址多测试几遍可以克服的话,这个局限就稍微比上边那个有点难度了。这个主要是“校验机构”的局限,校验机构的工作原理是对特定格式的链接或者特定格式的表单匹配特定的模拟攻击用例,模拟攻击。我们知道,攻击是一个请求的过程,也就是一个request,而攻击的结果怎么看?只能从response里看了。以SQL注入为例,当发送一个1'这样的参数值到后台之后,如果返回页面内容中包含了SQLException,那么扫描工具就认定它是一个SQL注入漏洞。但是如果网站设置了错误页面,在有异常发生时直接跳转到一个错误页面,告诉你“出错啦!”,然后再没其它信息,采集工具怎么判断是否存在漏洞?难道你去跟研发人员说“麻烦您把错误页面去掉”吗?要真说了,我们高傲的研发人员肯定不会给你好脸色的。
局限3:对特定的场景不适合
局限3跟局限2多少有些类似,但性质不太一样,局限3是指某些特定场景。扫描工具扫描bug的原理,1和2里叙述的差不多了,这里我们举两个例子吧,看了例子大家看看怎么用扫描工具来发现这俩漏洞,要是不能发现,那就是扫描工具的局限了。第一个:有个网站允许用户注册,用户注册后还允许用户修改个人信息,但是修改个人信息的这个地方有个SQL注入漏洞。我们知道,一般修改个人信息的SQL大致是这样的update [userinfo] set password='1111', email='abc@163.com' where uid='男孩子',如果一个用户修改自己密码的时候把密码设为了1111'--,这样,如果存在SQL注入漏洞,所有注册用户的密码都变成了1111。这里有漏洞吗?有!但是工具能发现吗?除非查看数据库,否则根本发现不了这问题。再看第二个:站内消息我们很多时候都用到,假设站内消息存在XSS漏洞,那么A给B发了这么一段恶意的脚本,但是从A那边看跟普通消息的发送是没什么区别的,所以扫描工具就发现不了这个问题,除非再用账号B来登录进行扫描。但是,这个看着简单,实际上操作起来却比较难。你怎么知道扫描工具模拟攻击的时候发消息给了B,而没给C或者D或者E呢?所以这个时限起来也是不现实的。同样道理的还有在外网提交了留言,到管理台审核这种模式,都存在类似问题。
以上只是列举了3点,算是提醒大家多注意一点工具以外的事儿吧,测试这个东西,不是拿个工具就能搞定的。我说这些不是说大家以后不要用工具,而是要正确的用工具。一个测试申请提交以后,应该首先分析哪些地方可能是工具覆盖不到的,把这些地方先人工检查,剩下的再用工具做全站覆盖扫描。

555,写这个花了一个多小时,一天的1/8就没了。不知道说这点有没有用,大家看看一起讨论吧。测试人员待遇低,还得被研发甩脸子,一起团结起来学习进步吧。
欢迎大家多回帖多讨论,本人原创哦。
我平时用到的工具有WebInspect和AppScan,希望讨论这俩工具使用的,也可以跟我联系。
作者: houzeal    时间: 2009-9-27 12:00
工具是死的,人是活的!
喜欢这样的帖子!
作者: cafard-haibin    时间: 2009-9-30 11:07
恩手教了。论坛上好多xss脚本攻击例子看了后感觉都没有什么收获,都是给某个网站弹出个对话框啥的,没有一点对测试工作的指导意义。你这篇文章至少让我了解到工具的局限性。希望能和你一起讨论学习. 我的email:websect@163.com
作者: jessies    时间: 2009-10-23 16:18
恩,刚学安全测试的时候,都依赖于工具指导。后来慢慢学习深入了,逐渐用工具辅助。
作者: 男孩子    时间: 2009-10-25 12:59
嗯,就是这样的,刚开始学测试的时候,不知道何谓漏洞的时候,可以跟着工具学,学会了之后就不要迷信工具了,应该积极发散思维,自己动手了,哈哈。
作者: 小鱼oO    时间: 2010-3-29 16:16
领教了,也回来了我的疑问
作者: bill_hen    时间: 2010-4-1 06:24
不是迷信工具,但工具的重要性是显而易见的。
小贩卖货算价钱,心算可以,要算公司财务可不行。
作者: pzj228    时间: 2010-5-25 08:59
没有工具,最好有手工一些例子!如何做到比工具优越~
作者: over_skying    时间: 2010-8-27 17:28
非常赞同楼主的见解,其实不管是什么类型的测试,原理是我们的基础点。这个没做好,去研究工具怎么使用,很容易就会依赖工具而不是使用工具辅助自己的测试设计了。学习!
作者: yzylion    时间: 2010-8-28 09:10
了解原理才是王道,要知其然还要知其所以然,受教了呵呵
作者: cncnily    时间: 2010-10-22 16:32
受教了!顺便说说哪工具坐不了的手动怎么做呢?
作者: lixiaoyer    时间: 2010-11-4 11:18
谢谢楼主的分析,可是我还有疑问,像楼主这样资深的能发现安全测试工具的局限,但是如果是安全测试初学者呢?怎样才能判断出这些工具遗漏掉那些功能?可否请楼主再次牺牲一些时间,帮忙分析一下,安全测试工具和手工测试同时进行,手工测试需要检测哪些功能点呢,比如使用AppScan,谢谢!
作者: 愚人    时间: 2010-11-4 12:01
从来没迷过工具……

工具,工具而已……
作者: 男孩子    时间: 2010-11-9 19:42
回复 12# lixiaoyer

刚入门的测试人员可以跟着工具学习,通过工具逐渐了解安全测试。
我发这个帖子的意思就是说工具有很多局限,测试的时候切忌工具扫描没发现问题就认为系统是安全的,很多情况是工具扫描不到的。
作者: msnshow    时间: 2010-11-11 20:59
了解工具的同时,也提高了自己的能力,我觉得学习工具是有必要的
作者: 男孩子    时间: 2010-11-16 17:38
回复 15# msnshow


学习工具,超越工具,就是这个意思吧。
作者: msnshow    时间: 2010-11-17 08:49
差不多是这个意思了,工具带给我们一种思维,一种解决问题的方法
作者: 雅丹咔咔    时间: 2010-11-30 10:18
做了一段的安全测试,lz的帖子让我有了些思考,任何测试工具都无法代替人的思考和实践,在工具测试前后都可以通过手工验证发现些问题,而基础应该和对被测试系统的了解和其安全测试解决方案有很大关系。
你所说的局限二和局限三,都是我曾经忽略的,局限二中情况我们还可以通过对工具输出报告的逐条核查并和开发人员沟通进一步锁定问题,而局限三则从未考虑过,谢谢lz的点拨!
大家一起努力吧!
作者: smilex    时间: 2010-12-28 05:28
有够长,没有看完,只想说一下:
工具真的是死的,但却不能没有,理由很简单,数据量大。在发现了一个漏洞,比如注入时你要弄出来数据这才 有说服力。这样一来:1,链接多时你不可能一个一个去看,这就要工具,并且这时工具A说不能注入,而工具B说可以注入,并且什么权限什么数据库类型/数据库名的。这你就可以手动去看。2,确定可以注入,好了,弄些数据吧,三五条可能没什么意思,三十五十吧,这样你更不会手动吧,还是工具啊。
这时感觉一个合适的成长过程应该是:一开始工具用的多,上手快学习也快;中间时开始对工具怀疑或者就不用工具;最后能分析明确出来工具A和工具B两个差在哪,怎么样能让二者结合或者更加优化一下,直至最后自己写工具。
作者: 男孩子    时间: 2010-12-30 10:38
楼上的,没说不用工具,而是说不要迷信工具。不迷信不等于不使用。
工欲善其事必先利其器,使用工具事半功倍这样的道理大家都还是懂的。我发这个帖子的目的是大家测试的时候不要觉得工具测了没问题,系统就肯定没问题,太过夸大工具的作用而忽视了自身对漏洞的分析和理解。
还有一点,你说“,确定可以注入,好了,弄些数据吧,三五条可能没什么意思,三十五十吧”,让我觉得你不是搞安全测试的,更像是一个黑客。安全测试,点到为止,确定漏洞即可,不会攻击的。
你的最后一句所说的成长过程我比较赞成。
作者: smilex    时间: 2010-12-30 20:36
搞安全测试,做黑客,界限很模糊,记得在哪个帖子里这里的老大讲可以把安全测试理解为是走公开黑客的路线。一个站点三五十条的数据也只是很小的一点,也是点到为止了。看看那些官方免费的CMS或BBS程序吧,打开他们的数据库,各个表的垃圾数据或者说是他们开发时的测试数据综合起来,三五十条,嗯,差不多。至于付费的,没有买过不下结论
作者: 男孩子    时间: 2010-12-31 00:48
我以前测试的漏洞,比如一个SQL注入的,基本上就是注入一个select给开发看看就完事了,不会做drop或者insert,呵呵,可能个人习惯吧,具体情况具体分析。
安全测试做好了的确可以做黑客能做的事情,但是这两个职业差别太大了。测试是天使,黑客是恶魔,呵呵。
作者: cm5122590    时间: 2011-1-13 12:50
楼主的QQ号是多少!有时间可以沟通
作者: moyiyun    时间: 2011-11-9 09:45
正在学习安全测试,学习啦!
作者: wower1985    时间: 2011-12-12 11:15
工具是死的,得到的结果,太没说服力了,必须还是能知道原理,能实现漏洞利用,希望楼主来点更深入的东西
作者: Drayce    时间: 2012-1-9 20:13

作者: wangy19841020    时间: 2012-2-13 11:10
的确不错,才学习工具就是这样,但是一开始很多不懂只能依赖工具啊,主要就是缺少在现实中自己手动实际操作,但是在自己操作的过程中不是所有的自己都能研究会,主要缺少一些相关的引导,而工具的很多说明没有通用性,所以学习起来就是比较困难的,所有这就是测试人员目前的一个瓶颈。
作者: Diana_zhaozhao    时间: 2012-6-6 14:51
收藏,以后看,不过目前也没迷信,嘿嘿
作者: cheryl    时间: 2012-7-26 14:33
不错的贴,初学者还在靠工具学习。
作者: cheryl    时间: 2012-7-26 14:33
不错的贴,初学者还在靠工具学习。
作者: 小脚丫的追求    时间: 2012-8-16 09:52
有够长,没有看完,只想说一下:
工具真的是死的,但却不能没有,理由很简单,数据量大。在发现了一个漏洞 ...
smilex 发表于 2010-12-28 05:28



    这个过程我还处于入门,其实连门都没入,只是蹭了点皮毛,很受教,但是对于安全测试本人现在还是完全依赖于工具,甚至工具检查出来的结果我都无法验证,网上关于工具的结果分析资料很少啊
作者: wower1985    时间: 2012-11-27 10:36
确实工具是死的,要用工具,但不能全信工具,要知道道理,会分析问题。
总体来说,工具是必须使用滴,不用工具手工做安全测试显然是明智的,也是几乎不可能的
作者: 愚人    时间: 2012-11-27 12:30
没有迷信过
作者: berryone    时间: 2012-11-27 12:35
受教受教。。。
作者: msnshow    时间: 2012-11-27 13:19
工具还是有用的
作者: SandyMonk03    时间: 2012-11-27 14:40
回帖接分
作者: sandy-guo    时间: 2015-1-7 13:16
恩,不错,很赞同
作者: sandy-guo    时间: 2015-1-20 16:40
厉害,很赞同,学习了
作者: 猫星人    时间: 2015-3-27 10:33
很好,学习了。。。
作者: A1111    时间: 2015-4-21 14:23
受益匪浅~
作者: 飞过江湖    时间: 2015-5-5 11:26
都是大神啊。新手小白跟各位学习。刚装上appscan,现在还在摸索中。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2