如何更有效使用 Rational AppScan 扫描大型网站,第 1 部分: 工作原理及技术分析...

news/2024/5/21 0:14:47/文章来源:https://blog.csdn.net/weixin_33749242/article/details/85036052

近来看到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 文件里面主要包括的内容如下:

  1. 扫描配置信息:扫描配置信息,如扫描的目标网站地址,录制的登陆过程脚本等,选择的扫描设置等都保存在 Scan 文件中。
  2. 所有访问到页面信息:针对每个发现的页面,即使没有进行测试,在探索过程也会访问该页面并纪录 http request/response 信息;所以如果探索的页面访问的时候返回的页面内容比较多,页面比较大,那么即使只做了探索根本没有扫描,整个 Scan 文件也会很大。
  3. 测试阶段,记录测试成功的测试变体和页面访问信息:针对每个页面都会发送多次测试(测试变体),每次测试都会有 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 的原理,我们就结合原来讨论下为什么扫描大型网站时候可能遇到问题了。

 

 

在实际工作中,我们也很难在最开始的阶段,就把扫描规范制定下来,按照项目经理们的口头禅“渐进明细”,“滚动式规划”,在实践中,更多时候也是摸着石头过河,选择了一个扫描策略,然后根据结果分析,看是否需要调整,不断优化。比如选择默认的“缺省值”扫描策略,对网站进行扫描,发现其“敏感信息”里面会去检查页面上是否含有 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 的扫描受到如下因素的影响:

  • 网站规模(页面个数,页面参数)
  • 扫描策略的选择
  • 扫描设置

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

  • 选择合适的,最小化的扫描规则
  • 分解扫描任务,把一个大的扫描任务分解为多个小的扫描任务
  • 根据页面特点,设置可以过滤的类似页面(冗余页面)

     

 

 

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

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

相关文章

黄聪:Discuz X2.0 SEO:论坛面包屑导航伪静态 去掉面包屑导航forum.php(转)

自从Discuz被腾讯这头大牛收购后的确越来越强大了&#xff0c;云平台是最大的亮点&#xff0c;但是Discuz X2.0在伪静态方面仍然非常不尽人意。目前世面主流的论坛程序phpwind和Discuz都无法做到全站完美伪静态&#xff0c;这对SEO影响很大&#xff0c;如果网站的权重不够高&am…

22个优秀的网站后台模板

22个优秀的网站后台模板 2011年09月3日 发布在 设计 由ding 留下评论不错的后台模版&#xff0c;不过&#xff0c;需要自己去汉化。这个应该问题不大。 还有&#xff0c;看模版的话&#xff0c;建议用火狐或chrome。外国网站一向不是很兼容ie6的&#xff0c;你懂的。 1&a…

PrestaShop加速11招立刻加速PrestaShop外贸电子商务网站无额外插件

2019独角兽企业重金招聘Python工程师标准>>> 自从PrestaShop进入1.4时代&#xff0c;我们会发现PrestaShop越来越慢了&#xff01;比如你用的是justhost空间总会收到服务商提示你cpu超负荷的邮件&#xff0c;最后你的PrestaShop VPS被关闭了&#xff01; 今天&#…

推荐10个堪称神器的学习网站

天一早做了个恶梦&#xff0c;梦到被老板辞退了。虽然说在我们公司&#xff0c;只有我辞退老板的份&#xff0c;没有老板辞退我这一说&#xff0c;但是还是被吓得 4 点多都起来了。&#xff08;主要是因为我掌握着公司所有的核心源码&#xff0c;哈哈哈&#xff09; 既然 4 点…

发布网站详细步骤(.Net)

&#xff08;i&#xff09;打开需要发布的网站 右键需要发布的项目 点击下拉框新建配置文件&#xff0c;输入配置文件名称&#xff0c;点击确定&#xff0c;下一步 发布方法选文件系统&#xff0c;目标位置&#xff1a;项目的根目录 配置选Release 点击发布 &#xff08;ii&…

linux查看某软件是否运行,linux如何查看某个软件是否安装_网站服务器运行维护...

linux中如何重命名文件_网站服务器运行维护linux中重命名文件的方法&#xff1a;可以使用mv命令来重命名文件&#xff0c;具体用法为【mv 源文件名 目标文件名】。例如【mv aaa bbb】&#xff0c;表示将aaa文件重命名为bbb。linux有多种方式安装软件&#xff0c;查看某个软件是…

静态网站托管_MQ

静态网站托管_MQ 1、安装surge npm install --global surge2、将需要部署的静态网页放到一个文件夹 3、命令行进入到该文件夹下&#xff0c;执行surge命令 surge4、然后一直根据提示注册账号和设置密码&#xff0c;使劲敲回车回车&#xff0c;知道完成生成域名&#xff1b;然…

[转载]网站地址栏小图标favicon.ico的制作方法

有人也许会好奇&#xff0c;有的网址前面有个漂亮的小图标而且有的网站图标还会动&#xff0c;这是怎么做到的呢&#xff1f; 如下图所示&#xff1a; 那个小图标有个名字叫favicon.ico&#xff0c;网站图标虽小但可以起到很好的点缀作用&#xff0c;尤其是当浏览者将你的网站放…

一个引号导致1个小时网站打不开

咱们就说下这个例子&#xff0c;提醒广大开发在写SQL的时候一定要仔细&#xff01;当时情况是这样的&#xff0c;一个慢SQL把数据库CPU连接数跑满&#xff0c;由于并发压力大&#xff0c;CPU空闲瞬时为0&#xff0c;过一会机器被HANG死&#xff0c;连接不上。因涉及公司隐私问题…

java已被阻止因为它已过时_Win7系统访问网站提示Silverlight已被阻止因为它已过时怎么办...

在win7系统中自带有IE浏览器&#xff0c;很多用户都喜欢使用IE浏览器来访问一些网站&#xff0c;有时候会遇到提示Silverlight已被阻止因为它已过时需要更新的提示&#xff0c;这是怎么回事呢&#xff0c;现在随小编一起来看看Win7系统访问网站提示Silverlight已被阻止因为它已…

google快速翻译英文网站

查资料、访问英文网站&#xff0c;看不懂英语&#xff1b;使用翻译器、翻译网站等等又嫌太麻烦&#xff01; 直接、快速简单一键直接翻译英文网站所有内容&#xff1b; http://translate.google.com/translate?u网址 ‘网址’换成你要翻译的英文网站&#xff1b;直接把上面地址…

java 企业 网站源码 后台 springmvc SSM 前台 静态化 代码生成器

前台&#xff1a; 支持四套模版&#xff0c; 可以在后台切换系统介绍&#xff1a;1.网站后台采用主流的 SSM 框架 jsp JSTL&#xff0c;网站后台采用freemaker静态化模版引擎生成html2.因为是生成的html&#xff0c;所以访问速度快&#xff0c;轻便&#xff0c;对服务器负担小3…

服务器上无此文件自动转到404,网站服务器经常性出现404错误的解决方案

网络上浏览页面呈现的过错链接提示多种多样&#xff0c;呈现404notfound也算是一个很普遍的问题&#xff0c;信任上网族都遇到过该情况&#xff0c;当咱们翻开某网页时会呈现提示&#xff1a;404NotFound&#xff0c;看到该页面心境本就糟糕了&#xff0c;404notfound首要用于浏…

(其他)80个提升自我的网站,只收藏,但并不看系列.

转载于:https://www.cnblogs.com/historylyt/p/9165686.html

网站首页怎么总是php,页脚总是相同怎么办

页脚总是相同的解决办法&#xff1a;首先打开要设置页脚的文档&#xff1b;然后点击菜单栏中的【插入】选项&#xff0c;并选择【页脚】选项&#xff1b;接着依次点击菜单栏中的【页面布局】、【分隔符】选项&#xff1b;最后取消勾选【与上一节相同】选项即可。页脚总是相同的…

python爬取网页代码_爬取某网站写的python代码

代码如下&#xff1a; import requests from pyquery import PyQuery import re import os import csv import datetime """ 说明&#xff1a;该代码是专门为爬取http://www.kgtmall.com.cn/商品而设计的。 使用方法&#xff1a; 1、在本地提前安装好python3的环…

python 爬带端口的网站_Python爬虫之爬取情话网站并绘制词云

一、爬取网站1.分析目标网站首先我们需要分析目标网站的源代码分析html得知所有的情话都是在标签<div class”content”>下&#xff0c;而且一个<p>标签对应着一句情话。2.编写代码import bs4 import requests #摘要&#xff1a;根据传入的url&#xff0c;爬取网站…

安卓php服务器_从0开始写个能接单的跑腿网站之搭建手机开发php服务器1

本人也是菜鸟&#xff0c;写这个网站的目的是学习与分享。没有编程基础也可以学习&#xff0c;因为我也好不了多少。上个图大概是这样&#xff0c;在地图上选择发货和送货地&#xff0c;然后再在地图标记出来&#xff0c;单眼佬看老婆——一目了然。今天讲怎样在安卓手机上搭建…

如何把睡袋转给别人_呕心沥血做的网站,被他人一夜全抄走...如何防止JS代码被抄?...

近日看到有人提出这样的需求&#xff0c;场景是这样的&#xff1a;“大牛在哪&#xff01;我呕心沥血做的网页设计和网站&#xff0c;做了几个月才做完&#xff0c;JS代码写了好几个月&#xff0c;被他人一夜全抄走&#xff0c;毫无办法.... 如何是好&#xff1f;&#xff01;”…

大数据Spark案例实操1–统计电商网站的用户行为数据Top10 热门品类(三种方法)

文章目录 1.准备数据2. 需求分析3.代码3.1方法一3.2方法二3.3方法三4.输出1.准备数据 链接:https://pan.baidu.com/s/14RxFpmXun7Wj-unDUvjyVg 提取码:mjk6 <