51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 11733|回复: 40
打印 上一主题 下一主题

大家还在迷信工具么

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-25 10:43:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做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,希望讨论这俩工具使用的,也可以跟我联系。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    擦汗
    2015-5-25 17:24
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    2#
    发表于 2009-9-27 12:00:56 | 只看该作者
    工具是死的,人是活的!
    喜欢这样的帖子!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2009-9-30 11:07:30 | 只看该作者
    恩手教了。论坛上好多xss脚本攻击例子看了后感觉都没有什么收获,都是给某个网站弹出个对话框啥的,没有一点对测试工作的指导意义。你这篇文章至少让我了解到工具的局限性。希望能和你一起讨论学习. 我的email:websect@163.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2009-10-23 16:18:00 | 只看该作者
    恩,刚学安全测试的时候,都依赖于工具指导。后来慢慢学习深入了,逐渐用工具辅助。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2009-10-25 12:59:44 | 只看该作者
    嗯,就是这样的,刚开始学测试的时候,不知道何谓漏洞的时候,可以跟着工具学,学会了之后就不要迷信工具了,应该积极发散思维,自己动手了,哈哈。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2010-3-29 16:16:12 | 只看该作者
    领教了,也回来了我的疑问
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2010-4-1 06:24:50 | 只看该作者
    不是迷信工具,但工具的重要性是显而易见的。
    小贩卖货算价钱,心算可以,要算公司财务可不行。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2010-5-25 08:59:05 | 只看该作者
    没有工具,最好有手工一些例子!如何做到比工具优越~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2010-8-27 17:28:07 | 只看该作者
    非常赞同楼主的见解,其实不管是什么类型的测试,原理是我们的基础点。这个没做好,去研究工具怎么使用,很容易就会依赖工具而不是使用工具辅助自己的测试设计了。学习!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2010-8-28 09:10:01 | 只看该作者
    了解原理才是王道,要知其然还要知其所以然,受教了呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-10-22 16:32:41 | 只看该作者
    受教了!顺便说说哪工具坐不了的手动怎么做呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-4-16 14:07
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2010-11-4 11:18:03 | 只看该作者
    谢谢楼主的分析,可是我还有疑问,像楼主这样资深的能发现安全测试工具的局限,但是如果是安全测试初学者呢?怎样才能判断出这些工具遗漏掉那些功能?可否请楼主再次牺牲一些时间,帮忙分析一下,安全测试工具和手工测试同时进行,手工测试需要检测哪些功能点呢,比如使用AppScan,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2010-11-4 12:01:05 | 只看该作者
    从来没迷过工具……

    工具,工具而已……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2010-11-9 19:42:32 | 只看该作者
    回复 12# lixiaoyer

    刚入门的测试人员可以跟着工具学习,通过工具逐渐了解安全测试。
    我发这个帖子的意思就是说工具有很多局限,测试的时候切忌工具扫描没发现问题就认为系统是安全的,很多情况是工具扫描不到的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    15#
    发表于 2010-11-11 20:59:29 | 只看该作者
    了解工具的同时,也提高了自己的能力,我觉得学习工具是有必要的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2010-11-16 17:38:53 | 只看该作者
    回复 15# msnshow


    学习工具,超越工具,就是这个意思吧。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    17#
    发表于 2010-11-17 08:49:04 | 只看该作者
    差不多是这个意思了,工具带给我们一种思维,一种解决问题的方法
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2010-11-30 10:18:54 | 只看该作者
    做了一段的安全测试,lz的帖子让我有了些思考,任何测试工具都无法代替人的思考和实践,在工具测试前后都可以通过手工验证发现些问题,而基础应该和对被测试系统的了解和其安全测试解决方案有很大关系。
    你所说的局限二和局限三,都是我曾经忽略的,局限二中情况我们还可以通过对工具输出报告的逐条核查并和开发人员沟通进一步锁定问题,而局限三则从未考虑过,谢谢lz的点拨!
    大家一起努力吧!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2010-12-28 05:28:30 | 只看该作者
    有够长,没有看完,只想说一下:
    工具真的是死的,但却不能没有,理由很简单,数据量大。在发现了一个漏洞,比如注入时你要弄出来数据这才 有说服力。这样一来:1,链接多时你不可能一个一个去看,这就要工具,并且这时工具A说不能注入,而工具B说可以注入,并且什么权限什么数据库类型/数据库名的。这你就可以手动去看。2,确定可以注入,好了,弄些数据吧,三五条可能没什么意思,三十五十吧,这样你更不会手动吧,还是工具啊。
    这时感觉一个合适的成长过程应该是:一开始工具用的多,上手快学习也快;中间时开始对工具怀疑或者就不用工具;最后能分析明确出来工具A和工具B两个差在哪,怎么样能让二者结合或者更加优化一下,直至最后自己写工具。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
     楼主| 发表于 2010-12-30 10:38:27 | 只看该作者
    楼上的,没说不用工具,而是说不要迷信工具。不迷信不等于不使用。
    工欲善其事必先利其器,使用工具事半功倍这样的道理大家都还是懂的。我发这个帖子的目的是大家测试的时候不要觉得工具测了没问题,系统就肯定没问题,太过夸大工具的作用而忽视了自身对漏洞的分析和理解。
    还有一点,你说“,确定可以注入,好了,弄些数据吧,三五条可能没什么意思,三十五十吧”,让我觉得你不是搞安全测试的,更像是一个黑客。安全测试,点到为止,确定漏洞即可,不会攻击的。
    你的最后一句所说的成长过程我比较赞成。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-7 07:43 , Processed in 0.078349 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表