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

news/2024/5/19 11:45:59/文章来源:https://blog.csdn.net/weixin_34110749/article/details/89995900

近来看到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 的原理,我们就结合原来讨论下为什么扫描大型网站时候可能遇到问题了。

 

 

<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 的扫描受到如下因素的影响:

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

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

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

     

 














本文转自hblxp32151CTO博客,原文链接:http://blog.51cto.com/starpoint/646155,如需转载请自行联系原作者

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

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

相关文章

关于工商银行网站打不开的问题终极解决办法

首先你应该试一试的:网银最好是用IE菜单: "工具"-->"Internet选项"-->"安全"选项卡, "可信站点", 将所有icbc相关的网站都删除(或者全部删除吧), 99%的错误都是由这个该死的地方产生的.以下是转载的:上面的不行再试试吧. 最近有…

大型网站应用之海量数据和高并发解决方案总结一二

转载地址&#xff1a;https://blog.csdn.net/xlgen157387/article/details/53230138一、网站应用背景 开发一个网站的应用程序&#xff0c;当用户规模比较小的时候&#xff0c;使用简单的&#xff1a;一台应用服务器一台数据库服务器一台文件服务器&#xff0c;这样的话完全可以…

新网站是否应该使用 Drupal 8?

前不久刚和大家探讨了是否应该将网站升级到 Drupal 8 的问题&#xff0c;并不建议大家进行升级&#xff08;详情可参考《是否应该立即将网站升级到Drupal 8&#xff1f;》&#xff09;。然而&#xff0c;如果是建立一个新的网站&#xff0c;使用 Drupal 8 是否又合适呢&#xf…

将不确定变为确定~本机是否可以调试带域名的网站

我们都知道&#xff36;&#xff33;在调试中会启动一个或多个&#xff08;根据你的解决方案中的&#xff37;&#xff25;&#xff22;项目而定&#xff09;WebDev.WebServer40.exe进程&#xff0c;这个进程为我们提供了.net运行时&#xff0c;就是你访问&#xff29;&#xf…

HAProxy实现网站高并发集群

简介&#xff1a;HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件…

大学学python,通过这些刷题网站成了别人眼中大佬

哈喽&#xff0c;大家好,这次为大家分享几个编程刷题网站&#xff0c;巩固基础知识&#xff0c;提升自己的能力水平 首先明确一:我们为什么要刷题呢? 1.通过刷题米提高自己所学专业知识的巩固程度&#xff0c;知道自己的不足之处 2.有可能你通过这些平台刷过的题&#xff0…

大流量、高并发的网站的底层系统架构

动态应用&#xff0c;是相对于网站静态内容而言&#xff0c; 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用…

手机站SEO优化需要外链吗

移动网站对于市场来说&#xff0c;也不是什么新鲜事情了。现在也越来越多的企业客户&#xff0c;更加关注企业网站的搜索效果。 甚至愿意为了网站的移动搜索优化效果&#xff0c;愿意再单独支付费用。也就是PC理PC的&#xff0c;移动理移动的。 百度官方上关于移动网站的基础建…

关于WordPress建站的原理二三事

2019独角兽企业重金招聘Python工程师标准>>> 在写关于仿站文章详情页如何制作之前&#xff0c;我觉得有必要就一些原理性的问题&#xff0c;做一些说明。文章详情页的核心模块和首页有很多相似的地方&#xff0c;比如调用文章的标题、文章的内容、文章分类、作者等&…

大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理

详见&#xff1a;http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt387 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索&#xff0c;默认会将 HTTP 请求跳转成 HTTPS。本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义。 2 HTTPS 协议概述 HTTPS 可以…

大型网站架构之分布式缓存

缓存是优化网站性能的第一手段。在大型网站中&#xff0c;缓存通常用来保存热点数据&#xff0c;或者保存应用上下文相关信息。比如之前提到的session服务器集群就可以用分布式缓存来搭建。当然&#xff0c;分布式缓存还可用于缓存数据库中的热点数据以减轻数据库的压力。 分布…

屏蔽网站广告插件:广告终结者

1. 上网站&#xff1a; http://www.adtchrome.com/ Chorme下载地址&#xff1a; http://www.adtchrome.com/%E5%B9%BF%E5%91%8A%E7%BB%88%E7%BB%93%E8%80%853.1.4.rar 2. 进入chrome扩展程序设置界面&#xff1a; 3. 将解压后的插件文件拖入此界面即可。 4. 后面再打开网页&a…

解读大型网站系统架构的演化

前言一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#xff0c;在这个过程中&#xff0c;开发模式、技术架构、设计…

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

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

秒杀网站系统设计详解

2019独角兽企业重金招聘Python工程师标准>>> 最近总有一些朋友问高并发问题&#xff0c;后来就想自己把一个秒杀系统作为例子详细分解一下&#xff0c;也是一个学习过程。 首先假设场景&#xff0c;预计该活动可能有1万人参加&#xff0c;那最大并发数为1万。 主要面…

办公资源:你曾错过的PPT视频教程网站

身边有好多小哥哥&#xff0c;姐说不会制作PPT模板&#xff0c;怎么办呀&#xff1f;我想说不会就学嘛&#xff01;可有人问了想学又不知道从哪里开始着手。诶呀&#xff01;真是令人脑壳疼的问题。其实现在网络发展这么快了&#xff0c;网上随便搜索就会有很多PPT制作教学的课…

在 Windows 的 IIS 上部署 .net core 网站

参考&#xff1a; .net core 2.0学习笔记&#xff08;二&#xff09;&#xff1a;部署到Windows和Liunx系统 - ZuQing - 博客园 使用 IIS 在 Windows 上托管 ASP.NET Core | Microsoft Learn 在 Visual Studio 2017 远程 IIS 计算机上的远程调试 ASP.NET Core 一、安装 SDK…

第一个在 Linux 下的 .net core 2.1 网站 ( Jexus )

制作最简单的 .net core Web应用程序 本文的主要目标是部署&#xff0c; 所以就不多在 Web 应用程序上赘述了&#xff0c; 如下图&#xff1a; 1. 用 VS 2017 创建 ASP.NET Core Web 应用程序项目 HelloCore&#xff1a; 2. 项目上右键生成&#xff0c; 再右键发布&#xff1a…

.net core 网站如何附加到进程 ?

.net core也用了一段时间了&#xff0c; 总觉得网站调试不方便&#xff0c; 直接 F5 运行不稳定&#xff0c;有时在网站输入验证码VS就直接退出了调试。于是改为附加进程&#xff0c;发布到 IIS 再来附加 dotnet 进程&#xff0c; 应用池名称都对上了&#xff0c; 打的断点还是…

.net core 网站 Linux 下部署 ( Docker )

参考&#xff1a;ASP.NET Core Docker部署 有改动。 一、docker 安装 见&#xff1a; https://blog.csdn.net/yenange/article/details/81703221 二、查找 dotnet 的镜像&#xff0c;拉取 https://hub.docker.com/ 下搜索 dotnet &#xff0c; 可以看到&#xff1a; 复制拉取…