如何更有效使用Rational AppScan 扫描大型网站

news/2024/5/20 1:32:59/文章来源:https://blog.csdn.net/weixin_34342992/article/details/90508100

 Rational AppScan 工作原理

  Rational AppScan(简称 AppScan)其实是一个产品家族,包括众多的应用安全扫描产品,从开发阶段的源代码扫描的 AppScan source edition,到针对 Web 应用进行快速扫描的 AppScan standard edition,以及进行安全管理和汇总整合的 AppScan enterprise Edition 等。我们经常说的 AppScan 就是指的桌面版本的 AppScan,即 AppScan standard edition。其安装在 Windows 操作系统上,可以对网站等 Web 应用进行自动化的应用安全扫描和测试

  来张 AppScan 的截图,用图表说话,更明确。

  图 1. AppScan 标准版界面

  请注意右上角,单击“扫描”下面的小三角,可以出现如下的三个选型“继续完全扫描”、“继续仅探索”、“继续仅测试”,有木有?什么意思?理解了这个地方,就理解了 AppScan 的工作原理,我们慢慢展开:

  还没有正式开始安全测试之前,所以先不管“继续”,直接来讨论“完全扫描”,“仅探索”,“仅测试”三个名词:

  AppScan 三个核心要素

  AppScan 是对网站等 Web 应用进行安全攻击来检查网站是否存在安全漏洞;既然是攻击,需要有明确的攻击对象吧,比如北约现在的对象就是卡扎菲上校还有他的军队。对网站来说,一个网站存在的页面,可能成千上万。每个页面也都可能存在多个字段(参数),比如一个登陆界面,至少要输入用户名和密码吧,这就是一个页面存在两个字段,你提交了用户名密码等登陆信息,网站总要有地方接受并且检查是否正确吧,这就可能存在一个新的检查页面。这里的每个页面的每个参数都可能存在安全漏洞,所有都是被攻击对象,都需要来检查。

  这就存在一个问题,我们来负责来检查一个网站的安全性,这个网站有多少个页面,有多少个参数,页面之间如何跳转,我们可能并不明确,如何知道这些信息?看起来很复杂,盘根错节;那就更需要找到那个线索,提纲挈领;想一想,访问一个网站的时候,我们需要知道的最重要的信息是哪个?网站主页地址吧?从网站地址开始,很多其他频道,其他页面都可以链接过去,对不对,那么可不可以有种技术,告诉了它网站的入口地址,然后它“顺藤摸瓜”,找出其他的网页和页面参数?OK,这就是“爬虫”技术,具体说,是“网站爬虫”,其利用了网页的请求都是用 http 协议发送的,发送和返回的内容都是统一的语言 HTML,那么对 HTML 语言进行分析,找到里面的参数和链接,纪录并继续发送之,最终,找到了这个网站的众多的页面和目录。这个能力 AppScan 就提供了,这里的术语叫“探索”,explorer,就是去发现,去分析,了解未知的,并记录之。

  在使用 AppScan 的时候,要配置的第一个就是要检查的网站的地址,配置了以后,AppScan 就会利用“探索”技术去发现这个网站存在多少个目录,多少个页面,页面中有哪些参数等,简单说,了解了你的网站的结构。

  “探索”了解了,测试的目标和范围就大致确定了,然后呢,利用“军火库”,发送导弹,进行安全攻击,这个过程就是“测试”;针对发现的每个页面的每个参数,进行安全检查,检查的弹药就来自 AppScan 的扫描规则库,其类似杀毒软件的病毒库,具体可以检查的安全攻击类型都在里面做好了,我们去使用即可。

  那么什么是“完全测试呢”,完全测试就是把上面的两个步骤整合起来,“探索”+“测试”;在安全测试过程中,可以先只进行探索,不进行测试,目的是了解被测的网站结构,评估范围;然后选择“继续仅测试”,只对前面探索过的页面进行测试,不对新发现的页面进行测试。“完全测试”就是把两个步骤结合在一起,一边探索,一边测试。

 AppScan 工作原理小结如下:

  通过搜索(爬行)发现整个 Web 应用结构

  根据分析,发送修改的 HTTP Request 进行攻击尝试(扫描规则库)

  通过对于 Respone 的分析验证是否存在安全漏洞

  图 2. AppScan 扫描原理:扫描规则库 + 爬行 + 测试

  步骤 1:探索(又叫爬行,爬网)

  图 3. 探索(爬网,爬行)

  步骤 2:测试(针对找到的页面,生成测试,进行安全攻击)

  图 4. 针对探索发现的页面和参数,进行安全测试

  所以,简言之,AppScan 的核心是提供一个扫描规则库,然后利用自动化的“探索”技术得到众多的页面和页面参数,进而对这些页面和页面参数进行安全性测试。“扫描规则库”,“探索”,“测试”就构成了 AppScan 的核心三要素。而在安全扫描过程中,如何进行优化,就要结合这三个要素,看哪些部分需要优化,应该如何优化。

  AppScan 结果文件

  同时,对于 AppScan 标准版来说,扫描的配置和结果信息都保存为后缀名为 Scan 文件,Scan 文件里面主要包括的内容如下:

  扫描配置信息:扫描配置信息,如扫描的目标网站地址,录制的登陆过程脚本等,选择的扫描设置等都保存在 Scan 文件中。

  所有访问到页面信息:针对每个发现的页面,即使没有进行测试,在探索过程也会访问该页面并纪录 http request/response 信息;所以如果探索的页面访问的时候返回的页面内容比较多,页面比较大,那么即使只做了探索根本没有扫描,整个 Scan 文件也会很大。

  测试阶段,记录测试成功的测试变体和页面访问信息:针对每个页面都会发送多次测试(测试变体),每次测试都会有 Request/response 信息,这些信息如果测试通过,即发现了一个安全问题,则会把该测试变体对应得 request/response 都会纪录下来,保存在 .scan 文件中;由于 AppScan 的扫描测试用例库全面,对于每种安全威胁漏洞,都会发送多个安全测试变体(Variant)进行测试,比如对于 XSS 问题,AppScan 发送了 100 个变体,其中 30 个执行失败,70 个变体执行成功,则会纪录 70 次执行成功的具体变体信息,以及每个变体对应的 Request/Response 信息。这就是一个很大的数据量。这些信息保存以后,就可以在不连接在网站的情况下进行结果分析,快速显示当时测试的页面快照等。

  我们以http://demo.testfire.net/bank/customize.aspx 为例,如下就有 74 个变体都发现了 Customize 页面的 Lang 参数存在跨站点脚本执行(XSS)类型的安全漏洞:

  图 5. 测试变体显示

  所以针对 AppScan 标准版来说,由于需要保存的信息比较多,结果文件是会比较大的,最根本的方法还是有针对性地进行扫描和测试,使用排除页面等排除冗余页面,把一个大的系统分解为多个小的扫描任务等。

  好的,了解了 AppScan 的原理,我们就结合原来讨论下为什么扫描大型网站时候可能遇到问题了。

  大型网站技术特点分析

  AppScan 扫描的对象是网站等 Web 应用,而网站规模的大小和使用的技术,都需要针对性的进行扫描设置,我们遇到的很多问题,都是在扫描规模比较大的网站时候遇到的,如一个网站页面数目超过 2000 个,需要执行的扫描用例是 50,000 个,在扫描这样的网站时候,默认情况下 AppScan 的扫描 scan 文件可能超过 100M 了,扫描效率就可能比较慢,需要长时间的扫描运行时间。

  下面,我们就来分析大型网站中存在的一些可能影响 AppScan 扫描的技术特点。

  网站页面多,页面参数多,则 AppScan 需要发送的测试用例多

  什么叫大型网站,顾名思义,网站规模大,提供内容多;具体说是页面很多,内容很全。比如 www.sina.com.cn,比如 http://music.10086.cn/,网站中都有多个频道,包括上万个页面。而且除了页面多,可能还有一个特点 --- 页面参数多,即要填写的地方多,和用户的交互多;比如一个网站如果都是静态页面(.html、.jpg 等),没有让用户输入的地方,那么可以利用,可以作为攻击点的地方也就不多。如果页面到处都是有输入有查询,要求用户来参与的,你输入的越多,可能泄露的信息也越多,可能被别人利用的攻击点也就越多,所以和页面参数也是有关系的。

  AppScan 产生测试用例的时候,也是根据每个参数来产生的,简单说,如果一个参数,对应了 200 个安全攻击测试用例,那么一个登陆界面至少就对应 400 个了,为什么?登陆界面至少有用户名(username)和密码(password)两个字段吧?每个字段 200 个攻击用例。

  这个简单吧,还可以更复杂:如果遇到下面的两个地址,那要扫描多少次呢?

http://www.Test.com/focus/satisfy/file.jsp?id=1
http://www.Test.com/focus/satisfy/file.jsp?id=2

  上面的两个地址有类似的,“?”号以前的 URL 地址完全一样,“?”号后面带的参数不同,这种可以认为是重复页面,那么对于重复页面,是否要重复测试呢?

  这取决于“冗余路径设置”,默认的是最多测试 5 次;即,这种类型 URL 出现的前 5 次,那么就是要测试 1000 个攻击用例了。

  如果再继续修改下:遇到下面的 URL 呢

http://www.Test.com/focus/satisfy/file.jsp?id=&Item=open
http://www.Test.com/focus/satisfy/file.jsp?id=2&Item=close

  每个 URL 里面都有 2 个参数,测试的次数就更多了。想象下,如果这个网页里面的参数如果是 10 个,或者更多的呢?比如很多网站提交注册信息的时候,要填写的栏位就很多,要进行的安全测试用例也就随之不断增加…

  这是网站规模的影响,还有一个问题,就出在“每个参数,发送 200 个安全测试用例”这个假设上。这个假设的前提来源于哪里?来源于我们选择的扫描规则库。即你关心那些安全威胁,这个需要在测试策略里面选择。同样来参照杀毒软件,你会用杀毒软件来查找一些专用的病毒吗,比如 CIH、木马;应用安全扫描也是一样的道理,如果有明确的安全指标或者安全规则范围,那么就选择之。这些可能来源于企业的规范,来源于政府的法律法规。就要根据你的理解,在这里选择。

  图 6. 选择测试策略

  在实际工作中,我们也很难在最开始的阶段,就把扫描规范制定下来,按照项目经理们的口头禅“渐进明细”,“滚动式规划”,在实践中,更多时候也是摸着石头过河,选择了一个扫描策略,然后根据结果分析,看是否需要调整,不断优化。比如选择默认的“缺省值”扫描策略,对网站进行扫描,发现其“敏感信息”里面会去检查页面上是否含有 Email 地址,是否含有信用卡号码等,如果我们觉得这些信息,显示在页面上是正常的业务需要(比如这样的链接:<a href=mailto:admin@www.test.com>有问题请联系admin@www.test.com</a>),我们就可以取消掉这些规则,所以扫描规则也很大程度上影响着我们的扫描效率。

  网站采用多种混合的技术,需要不同的扫描设置

  一些大型网站,往往是一个统一的入口,在里面提供不同的内容,而这些内容可能来源于不同的技术。如我们熟悉的门户网站,里面就有“财经”、“体育”、“娱乐”等多个频道;每个频道的内容,可能是采用不同的技术,对应不同的服务器。如一个网站的“论坛”频道,就有很多类似的页面:

http://www.Test.com/bbs/showthread.php?id=1
Http://www.Test.com/bbs/showthread.php?id=2
Http://www.Test.com/bbs/showthread.php?id=3

  这里的 showthread.php 页面存在多次,每次都是参数值不同,访问后发现这些页面除了文本内容外,其他的页面结构等都相同,则这些页面只需要选择几个典型的扫描即可,没有必要全部扫描。

  而同时,在另外的一些频道,存在另外类型的页面:

http://www.Test.com/default.aspx?content=inside_community.htm
http://www.Test.com/default.aspx?content=inside_press.htm
http://www.Test.com/default.aspx?content=inside_executives.htm

  这些动态页面,也是网址相同,参数相同,但是具有不同的参数值,访问时候发现每种类型的参数值都指向了完全不同的页面,则需要每种参数值都要测试到。这种情况经常存在跳转页面中。

  而这两个频道中,第一种情况,可以选择典型的页面扫描之,而第二种情况则需要进行完全的扫描,每种参数值都需要考虑到。这就需要不同的扫描设置。

  同时,可能大家也注意到了,第一种情况下的是 php 页面,而第二种情况下的则是 aspx 页面,对应不同的开发技术,这也可能需要不同的扫描设置。

  所以,总结下,AppScan 的扫描受到如下因素的影响:

  网站规模(页面个数,页面参数)

  扫描策略的选择

  扫描设置

  而对于大型的网站,我们经常需要从几个方面来优化配置

  选择合适的,最小化的扫描规则

  分解扫描任务,把一个大的扫描任务分解为多个小的扫描任务

  根据页面特点,设置可以过滤的类似页面(冗余页面)

最新内容请见作者的GitHub页:http://qaseven.github.io/


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_742382.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

值得推荐的十大交互式可视化的网站

厌倦了静态图表&#xff0c;最近一直在看一些关于可以交互的数据可视化的案例&#xff0c;整理了一些有趣的交互式可视化的网站分享给大家。 01 Matt Daniels The Lasting Mark of Miles Davi 关于维基百科里提到“黑暗王子”迈尔斯戴维斯的页面次数统计&#xff0c;来证明这个…

云服务器 ECS 建站教程:Discuz安装教程

Discuz安装教程Discuz! 是全球成熟度最高、覆盖率最大的论坛软件系统之一。自 2001 年 6 月面世以来&#xff0c;Discuz! 已拥有 15 年以上的应用历史和 200 多万网站用户案例。目前&#xff0c;Discuz! 已经发展成为一个以社区为基础的专业建站平台&#xff0c;让论坛&#xf…

网站开发需要哪些技术_app开发需要哪些技术?4种app制作方法对比

开发一个完整的app需要哪些技术&#xff1f;App开发的到底要多少钱&#xff1f;如何简单快速低成本的开发app&#xff1f;现在&#xff0c;市场上的app开发可以分为4种不同的app开发方式&#xff0c;不同的app开发方式&#xff0c;对app技术、开发人员、开发成本、开发周期的要…

网站页面左右_网站优化都包括什么

SEO优化主要包括四个方向:内部结构优化&#xff0c;内容优化&#xff0c;内部链优化和外部链优化。 一&#xff0c;优化内部结构 1.TDK优化:此TDK不仅包括首页&#xff0c;还包括角页和文章页的TDK。因此&#xff0c;建议您在创建站点时自定义标签。T也就是title&#xff0c;网…

网站开发必备-快速浏览Asp.Net网站绿色小工具

< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> 选择此工具的理由&#xff1a;1.快速浏览Asp.Net网站 2.小巧 3.绿色 点击下载 前提&#xff0c;系统必须安装 .NET Framework 方法一. 将此程序放在网站根目录&#xff…

一步一步SharePoint 2007之十九:解决实现注册用户后,自动具备访问网站的权限的问题(1)——配置Provider...

考虑到实现注册用户后&#xff0c;自动具备访问网站的权限的文章共有近20幅截图&#xff0c;截图总大小近2M&#xff0c;为了尽量减少打开网页的时间&#xff0c;本篇文章将被分割成几个小的部分。因此而给大家带来的阅读不便&#xff0c;就请海涵了:)解决这个问题&#xff0c;…

网站服务器c盘在哪找,云服务器c盘在哪儿

云服务器c盘在哪儿 内容精选换一换根据磁盘ID&#xff0c;查询云服务器挂载的单个磁盘信息。GET /v2.1/{project_id}/servers/{server_id}/os-volume_attachments/{volume_id}参数说明请参见表1。参数说明参数是否必选描述project_id是项目ID。获取方法请参见获取项目ID。serve…

后台控制其他域名显示_SiteGround域名解析教程 | 如何将NameSilo 域名绑定到WordPress外贸网站...

我们在新购买的Siteground主机上成功安装Wordpress程序之后&#xff0c;下一步就是完成 Siteground 域名解析。你在浏览器中访问你的域名是无法正常打开网站的&#xff0c;这是因为&#xff0c;我们还没有把域名解析到Siteground的主机上。如下图&#xff0c;因为域名还未解析到…

搭建好域名服务器怎么设计网页,使用域名建站的几个步骤

相信大家都知道&#xff0c;建站第一步就是注册域名&#xff0c;然后购买主机服务器之类的&#xff0c;那么怎么使用域名去搭建网站呢?第一步&#xff1a;域名注册域名注册就是选一个合适自己的网址&#xff0c;域名非常重要&#xff0c;是我们迈出建站的第一步&#xff0c;也…

hive 的数据案例 统计网站的数据信息

根据hive的案例一增加需求一&#xff1a; 增加案例需求&#xff1a; 统计 pv , uv , 登录人数 , 游客人数 , 平均访问时长 , 二跳率 , 独立IP 用一张表去处理 1.1 查看track_log的分区 show partitions track_log ; 1.2 建立一张会话信息表&#xff08;session&#xff09;&am…

django搭建一个小型的服务器运维网站-最简单的实践之修改服务器时间

目录 项目介绍和源码&#xff1b; 拿来即用的bootstrap模板&#xff1b; 服务器SSH服务配置与python中paramiko的使用&#xff1b; 用户登陆与session;最简单的实践之修改服务器时间&#xff1b; 查看和修改服务器配置与数据库的路由&#xff1b; 基于websocket的实时日志实现&…

网站漏洞修复方案防止SQL注入攻击漏洞

SQL注入漏洞在网站漏洞里面属于高危漏洞&#xff0c;排列在前三&#xff0c;受影响范围较广&#xff0c;像asp、.net、PHP、java、等程序语言编写的代码&#xff0c;都存在着sql注入漏洞&#xff0c;那么如何检测网站存在sql注入漏洞&#xff1f; SQL注入漏洞测试方法 在程序代…

phpcms ajax加载列表,phpcms v9建站 ajax列表分页加载更多word文档教程

最新文章https: open weixin qq com 有这个的账号&#xff0c;给客户开通微信小程序不需要认证费直...https: open weixin qq com 有这个的账号&#xff0c;给客户开通微信小程序不需要认证费直...相关内容phpcms调用随机栏目 随机调用SQL语句&#xff0c;可以使用PHPCMS的get标…

谷歌运维新书《网站可靠性工作手册,SRE最佳实践》

为什么80%的码农都做不了架构师&#xff1f;>>> 最近谷歌发布了一本关于运维新书《The Site Reliability Workbook — Practical Ways to Implement SRE》&#xff08;网站可靠性工作手册&#xff0c;SRE最佳实践&#xff09;。这是继《Site Reliability Engineeri…

讲讲自己亲身经历网站备案的前前后后

终于是有了自己的个人备案&#xff0c;之前网站一直是挂在公司的服务器上&#xff0c;后来在阿里云买了一台虚拟主机&#xff0c;然后就把网站搬家了。其实在这次备案之前&#xff0c;我也只是对网站备案方面有个大概的了解&#xff0c;真正的还没有自己实际操作过&#xff0c;…

【转】高扩展性网站的50条原则

《高扩展性网站的50条原则》&#xff0c;利用一天半的时间快速浏览总结的电子书&#xff0c;对网站的建设有一个原则性的把握&#xff0c;书中提到的大部分原则现在已成为互联网行业的共识&#xff0c;但并不妨碍我们重新整理分类&#xff0c;从全局层面把控高扩展性网站的建设…

centos7云主机nginx+WordPress完整建站(博客)流程记录

一、安装nginx1、安装依赖#安装gccyum install gcc-c#安装 pcre-develyum install -y pcre pcre-devel#安装zlib yum install -y zlib zlib-devel#安装OpenSSL yum install -y openssl openssl-devel2、安装nginx#创建nginx.repo文件vi /etc/yum.repos.d/nginx.repo #然后写…

centos7服务器网站不能登录,centos7无法联网_网站服务器运行维护

linux怎么启动docker服务_网站服务器运行维护linux启动docker服务的方法&#xff1a;1、使用sudo yum install 命令安装Docker。2、使用“sudo systemctl start docker”命令启动docker服务。1、修改配置文件使用 vi 编辑器修改 /etc/sysconfig/network-scripts/ifcfg-eth0进入…

HTML CSS设计与构建网站

《HTML & CSS设计与构建网站》基本信息原书名&#xff1a; HTML and CSS: Design and Build Websites原出版社&#xff1a; Wiley作者&#xff1a; (美)Jon Duckett [作译者介绍]译者&#xff1a; 刘涛 陈学敏出版社&#xff1a;清华大学出版社ISBN&#xff1a;97873023110…

网站开发必备-快速浏览Asp.Net网站绿色小工具

< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> 选择此工具的理由&#xff1a;1.快速浏览Asp.Net网站 2.小巧 3.绿色 点击下载 前提&#xff0c;系统必须安装 .NET Framework 方法一. 将此程序放在网站根目录&#xff…