IBM Rational AppScan 是一个面向 Web 应用安全检测的自动化工具,使用它可以自动化检测 Web 应用的安全漏洞,比如跨站点脚本攻击(Cross Site Scripting Flaws)、注入式攻击(Injection Flaws)、失效的访问控制(Broken Access Control)、缓存溢出问题(Buffer Overflows)等等。这些安全漏洞大多包括在 OWASP(Open Web Application Security Project,开放式 Web 应用程序安全项目)所公布的 Web 应用安全漏洞中
AppScan eXtension Framework 介绍
Rational AppScan 在 7.5 版本以后提供了一个扩展框架,称为 AppScan eXtension Frameowrk。利用 Appscan 提供的 eXtension framework,用户可以非常简单的为 AppScan 提供扩展。扩展的内容几乎没有任何限制,可以从一个简单的通知程序到一个非常复杂的安全分析工具,使得用户可以根据自己的需要来客户化 AppScan。AppScan eXtension Framework 支持多种语言,如 Python、C#、C++、J#、Jscript. 等等,本文主要介绍如何利用 C# 进行扩展。
下面是 AppScan eXtension Framework 的扩展接口 IExtensionLogic 的类图:
IExtensionLogic 是 AppScan 扩展的入口接口,它包含两个方法:
void Load(IAppScan appScan, IAppScanGui appScanGui, string extensionDir)
扩展点初始化方法,一般来说,都是在 AppScan 启动时调用。
参数:
ExtensionVersionInfo GetUpdateData(Edition edition, Version targetAppVersion)
用来获取当前扩展的版本更新信息,如果没有更新数据或不支持这项功能,可以返回空值。
参数:
Rational AppScan 插件开发 Step by Step
这部分提供一个 C# 开发的插件实例,在这个实例中会创建一个表单,内部有三个按钮分别用来扫描网站资源,进行测试和显示扫描结果。下面就一步一步来展示如何为 AppScan 做扩展应用。
前提条件:
第 1 步:创建项目和配置 Visual Studio 开发环境
创建 Visual C# Class Library 类型的项目,命名为 AppScanExtensionTest,Solution name 输入与项目名称一致,并选择“Create directory for solution”,如下图所示:
由于 AppScan 扩展开发中需要引用很多相关的类,需要添加 AppScanSDK.dll 链接库到项目引用中。在打开的项目中,选中目录 Reference,右键菜单选择“Add Reference…”,如下图所示:
稍等片刻,Add Reference 窗口就会被打开,转到 Browse 页,定位到 Rational AppScan 的安装目录,在其安装目录下选中 AppScanSDK.dll,然后点击 OK,如下图所示:
这时,在 Reference 下会多出一个 AppScanSDK 的命名空间。
第二步:编写插件代码
创建一个新的 C# 类文件,将其命名为 AppScanTestExtension,这个类就是这个插件实例的入口类。令其实现 IExtensionLogic 接口,该接口在命名空间 Watchfire.AppScan.Extensions 下,同时实现两个方法 load 和 GetUpdateData,如下面代码所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Watchfire.AppScan.Extensions;
namespace AppScanExtensionTest
{
public class AppScanTestExtension : IExtensionLogic
{
private static IAppScan _appscan;
private static IAppScanGui _appScanGui;
public void Load(IAppScan appscan, IAppScanGui appScanGui, string extensionDir)
{
_appscan = appscan;
_appScanGui = appScanGui;
}
public ExtensionVersionInfo GetUpdateData(Edition targetApp,
System.Version targetAppVersion)
{
return null;
}
}
}
|
如上面章节所说,利用 appScanGui 对象可以为 AppScan 插件定义界面入口点,在上面的 AppScanTestExtension 类中加入下面两个方法,方法 AddGuiToAppScan() 会在 AppScan 的“Tools”菜单下增加菜单项“My Extension”,点击“My Extension”时,方法 openExntensionForm() 将会被调用,在 openExtensionForm() 中可以书写一些逻辑来调用客户化的代码。在加入这两个方法后,要在 load 方法中调用 AddGuiToAppScan()。
private void AddGuiToAppScan()
{
IMenuItem |
利用 Visual Studio 2008 设计两个窗体,第一个窗体中有三个按钮,第二窗体的主体为 DataGridView,如下图所示:
为第一个窗体的三个按钮编写相应代码如下:
private void ResScan_Btn_Click(object sender, EventArgs e)
{
if (_appScan.Scan.Status.ExploreOpStatus == ExploreStatus.Finished)
{
return;
}
_appScan.Scan.ResetExploreAndTestData();
_appScan.Scan.ScanAsync(true, false);
}
private void ResTst_Btn_Click(object sender, EventArgs e)
{
_appScan.Scan.ScanAsync(false, true);
ResTst_Btn.Enabled = false;
}
private void ShowResult_Btn_Click(object sender, EventArgs e)
{
ResultForm. resultform. = new ResultForm(_appScan);
resultform.Show();
}
|
在上面的代码实现中,方法 ResTst_Btn_Click() 在执行中将按钮置成为不可用状态,需要在测试结束后再次将按钮激活,这就需要利用 AppScan 的事件。AppScan 定义了近四十种事件,来支持 AppScan 扩展能够对 AppScan 的处理做出相应,比如下面几种:
这里使用了 TestEnded 事件,表示当安全测试结束时,重新激活“Resource Test”按钮。在按钮窗体的构造函数中加入如下代码:
_appScan.Scan.TestEnded += new EventHandler |
上面代码中的 testEnded 方法负责激活按钮。
Appscan 的扫描结果是以树型结构存储在 appscan.scan.scanData 对象中,appscan.scan.scanData.AppTreeRoot 时这个树型结构的根节点。在 ResultForm 打开时,下面的代码就是递归方法从这个根节点中获取根节点及其所有子节点的扫描结果。
//Recusive to get all resources and related issues.
private void visit(IAppTreeNode node, ArrayList totalIssues)
{
if (node.Children.Count > 0)
{
违规广告ection |
public void Show()
{
Thread formThread = new Thread(new ThreadStart(ShowDialog));
formThread.SetApartmentState(ApartmentState.STA);
formThread.Start();
}
|
第 3 步:插件打包和运行
info.xml 文件是 AppScan 扩展点的定义文件,其中定义了如下元素:
Info.xml 示例以及插件安装后 info.xml 的每项对应的位置,如下图所示:
将上面项目生成的连接库文件 AppScanExtensionTest.dll 和 info.xml 放到同一个文件夹中,连同文件夹一起打包成一个 ZIP 文件,注意,一定要连同文件夹一起打包,否则 AppScan 将无法识别。
运行 AppScan,打开菜单“Tools->Extensions->Extension Manager”,如下图:
Extension Manager 窗口打开,如下图:
点击“Install”按钮,在文件选择窗口中选择之前打包的 zip 文件,点击“Open”按钮,如下图所示:
重新启动 AppScan,新的菜单项“My Extension”会出现:
点击上面的菜单,依次按下三个按钮,程序运行结果如下:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14780873/viewspace-582401/ ,如需转载,请注明出处,否则将追究法律责任。