web平台安全测试方案

article/2025/10/2 6:43:26

平台安全测试方案

1、 测试目的

  • 能尽可能发现当前系统存在的安全隐患,在漏洞报告提供出有价值的建议
  • 通过报告修复漏洞后,能减少系统出现严重的安全事故

2、测试对象

  • Web应用程序
  • 服务器操作系统

3、测试工具及环境

  • AppScan(Windows10)
  • OpenVAS或者叫GVM(Kali)
  • Nmap(Windows10或kali)

3.1AppScan安装步骤

  1. 下载AppScan安装包
  2. 双击下载好的setup程序

在这里插入图片描述

  1. 开始安装,选择简体中文

在这里插入图片描述

  1. 勾选“我接受许可协议中的全部条款”,然后继续安装;

  1. 选择软件安装路径,默认或者修改成自己所需路径

在这里插入图片描述

  1. 安装完成后,点击完成退出引导;

3.2Nmap(win10安装)

  1. 下载地址 Download the Free Nmap Security Scanner for Linux/Mac/Windows
  2. 下拉选择windows版本,选择最新稳定版本下载

在这里插入图片描述

  1. 双击下载的setup安装程序

  2. 点击“I Agree”

  3. 默认勾选的内容,点击Next

  4. 点击所需的安装路径,确认后点击Install

  5. 安装进度完成后点击Next

  6. 选择创建快捷键和开始菜单,然后点击Next

  7. 最后点击Finish完成安装

3.3OpenVAS(又名GVM)

在kali系统中,都默认自带了GVM和Nmap工具,可以直接初始化使用

# 安装gvm
sudo apt install gvm# 初始化gvm
sudo gvm-setup# 检查gvm是否安装成功
sudo gvm-check-setup#出现类似“It seems like your GVM-21.4.1 installation is OK. ”语句说明安装成功!# 升级漏洞库 最好定期更新漏洞库,保持漏洞库处于最新状态
# 这一步如果不能科学联网的话将极度耗时,需要耐心等待。
sudo gvm-feed-update# 修改用户名和密码 示例:修改web 账号admin 密码为qwerty
sudo -u _gvm gvmd --user=admin --new-password=qwerty# 开启外部访问(可选项,根据需求选择,可以不开启)
vim /lib/systemd/system/greenbone-security-assistant.service
修改 ExecStart=/usr/sbin/gsad --listen 0.0.0.0 --port 9392
将 listen ip地址修改为 0.0.0.0# 启动 GVM
sudo gvm-start# 停止 GVM
sudo gvm-stop

4、测试流程

1、前期准备

需要告知开发此次测试的时间,沟通好后才能进行安全测试,并且将测试的范围,方法和相关风险提前告知,及时做好相关数据代码、环境的备份。

收集测试的资料:平台网页的URL,用户名以及密码(最好不是超级用户,可以测试越权),Web服务器的IP(可以提供服务器的远程登录账号,以便观察测试过程中对服务器的性能影响)。

2、测试步骤

  • 使用nmap对服务器进行端口扫描,获取开放的端口号,确认哪些端口是必要开放的。
  • 使用Appscan对web应用进行扫描
  • 使用OpenVAS对服务器进行扫描

2.1Nmap扫描过程

  1. 打开Nmap软件
  2. 复制这段命令进去,扫描对应IP里服务器的1-65536端口
nmap -p 1-65535 -T4 -v -Pn -oX text1.xml 扫描对象IP

在这里插入图片描述

  1. 点击扫描后,等待扫描结束,在Nmap的安装位置(结果末尾也有提示),进入目录后,就能找到我们自定义的扫描结果文件

在这里插入图片描述

  1. 重点查看开放的端口

在这里插入图片描述

2.2Appscan扫描过程

  1. 打开AppScan
  2. 点击扫描Web应用程序

在这里插入图片描述

  1. 在下列输入框输入目标URL,连接成功如图下,还可以点击旁边的”地球小按钮“来验证你要扫描的网
    站,点击”下一步“

  1. 若网站需要登录验证,点击”记录“按钮,记录登录的动作,选择AppScan IE浏览器(推荐)
    自动:提前输入账号密码,若遇到需要验证登录则自动登录;
    提示:遇到需要验证登录时,自动弹出页面手动输入账号密码;
    无:web端网站不需要登录操作

在这里插入图片描述

  1. 进入页面,输入账号密码成功登录后,点击我已登录此站点,AppScan会自动记录此次登录动作在这里插入图片描述

  2. 配置登录成功后,显示该页面,点击下一步

在这里插入图片描述

  1. 测试策略默认选择缺省值(按照需要选择自己需要扫描的测试策略):

    1. 缺省值:包含多有测试,但不包含侵入式和端口侦听器
    2. 仅应用程序:包含所有应用程序级别的测试,但不包含侵入式和端口侦听器
    3. 仅基础结构:包含所有基础结构级别的测试,但不包含侵入式和端口侦听器
    4. 侵入式:包含所有侵入式测试(可能影响服务器稳定性的测试)
    5. 完成:包含所有的AppScan测试
    6. 关键的少数:包含一些成功可能性较高的测试精选,在时间有限时对站点评估可能有用
    7. 开发者精要:包含一些成功可能性极高的应用程序测试的精选,在时间有限时对站点评估可能有用
  2. 可以选择自定义,点击”完全扫描配置“可手动修改/自定义你的测试策略,自定义后,点击应用和确定,然后点击下一步

在这里插入图片描述

  1. 如果需要在登录页面上进行攻击测试,则需要勾选“发送登录页面上的测试”两个勾选框
    (如下图),然后点击下一步

在这里插入图片描述

  1. 选择扫描速度,不同速度扫描的仔细程度不一样,选择扫描速度后,点击下一步

在这里插入图片描述

  1. 选择启动模式:然后点击完成
    启动全面扫描:扫描和测试一起执行
    仅使用自动”探索“启动:仅探索
    使用”手动探索“:手动对Web端进行探索
    稍后启动扫描

  1. 在弹窗提示中点击“是”
    在这里插入图片描述

  2. 输入名称和选择保存路径,点击保存

  3. 至此,AppScan开始自动扫描和测试

在这里插入图片描述

  1. 点击”扫描日志“按钮,看到记录的扫描时间和事件
    在这里插入图片描述

  2. 点击”问题“按钮,可以看到扫描出的安全性漏洞
    在这里插入图片描述

  3. 点击“报告”按钮,选择报告模板、报告内容、布局等内容(按照需求选择),点击“保存报告”按钮,
    点击保存按钮

在这里插入图片描述

2.3OpenVas(GVM)扫描过程

  1. 在kali命令行中, 使用sudo gvm-start命令启动服务,通过https://1277.0.0.1:9392,即可访问:

在这里插入图片描述

  1. 账户密码为之安装时,命令修改的

在这里插入图片描述

  1. 点击Scans下的targets以后进入如下页面,然后再点击左上角的按钮,有两种新建任务模式即Task Winzard快速模式和Advanced Task Winzard 高级模式

在这里插入图片描述

Task Winzard快速模式
只需添加ip地址或域名即可新建扫描任务

在这里插入图片描述

Advanced Task Winzard 高级模式

在这里插入图片描述

  1. 使用快速模式创建任务后,就自动开始扫描了

在这里插入图片描述

  1. 等待扫描完成后,点击Reports下面的数字,进入报告页面

在这里插入图片描述

  1. 右侧可以看到各种等级漏洞的数量,点击左侧的数据源,进入报告详情页

在这里插入图片描述

  1. 点击下载按钮,导出扫描报告

在这里插入图片描述

  1. 选择导出的文件类型

在这里插入图片描述

  1. 点击ok后,在弹窗中选择sava file即可导出报告

3、过程中可能出现的影响

自动扫描器会发送数据到服务器,有可能在扫描过程中让服务器超过负荷,所以它可能会删除服务器上的数据,添加新记录甚至让服务器崩溃。因此扫描之前最好备份所有的数据。最好线下测试即可。

5、预期结果

扫描工具能输出报告,经过测试人员核对后,可以将报告给开发人员,通过让开发人员对报告中的漏洞问题进行筛选和修复,最后出具一份安全测试报告及修复记录文档

5.1Nmap报告部分内容

在这里插入图片描述

5.2AppScan报告部分内容

在这里插入图片描述

5.3OpenVas报告部分内容


http://chatgpt.dhexx.cn/article/jTfCL3Te.shtml

相关文章

什么是web安全测试

1.1什么是web安全测试? Web安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,web系统应用仍然能够充分地满足它的需求 1.2为什么进行Web安全测试 2005年06月,CardSystems,黑客恶意侵入了它的电脑系统&#x…

web安全测试内容

一. 首先你得了解Web Web分为好几层,一图胜千言: 事实是这样的: 如果你不了解这些研究对象是不可能搞好安全研究的。 这样看来,Web有八层(如果把浏览器也算进去,就九层啦,九阳神功……&#xff…

解决报错RuntimeError: set_sizes_and_strides is not allowed on a Tensor created from .data or .detach().

完整报错信息如下 RuntimeError: set_sizes_and_strides is not allowed on a Tensor created from .data or .detach(). If your intent is to change the metadata of a Tensor (such as sizes / strides / storage / storage_offset) without autograd tracking the change…

基于keras的卷积神经网络(CNN)

1 前言 本文以MNIST手写数字分类为例,讲解使用一维卷积和二维卷积实现 CNN 模型。关于 MNIST 数据集的说明,见使用TensorFlow实现MNIST数据集分类。实验中主要用到 Conv1D 层、Conv2D 层、MaxPooling1D 层和 MaxPooling2D 层,其参数说明如下…

Grad strides do not match bucket view strides.This may indicate grad was not created according to th

家人们来看看是不是报这个 warning: [W reducer.cpp:283] Warning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the params strides changed since DDP was constructed.…

Python多维数组跨度strides(学习笔记)

Python多维数组跨度 今天就来搞明白有关于多维数组的跨度 strides的知识 先构建一个四位数组: arrnp.arange(1,25.0).reshape(2,2,2,3) print(轴(维度):,arr.ndim) arr分析:arange(1,25.0)是1~24共24个数字,注意到25.0是float类型 再来看看…

RuntimeError: sparse tensors do not have strides

这是一个可以复现的问题。 归根结底在于 torch不支持Sparse与Sparse的矩阵乘法(mm)。 也不支持Dense 与 Sparse的矩阵乘法。 只支持Sparse与Dense的矩阵乘法。 torch.mm是消边的矩阵乘法,mm matrix multiply。 而torch.mul是同形矩阵的element-wise点乘。 所谓s…

Warning: Grad strides do not match bucket view strides pytorch利用DDP报错

遇到报错: [W reducer.cpp:362] Warning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the param’s strides changed since DDP was constructed. This is not a…

Python ndarray.strides用法

用法 ndarray.strides: 跨越数组各个维度所需要经过的字节数元组 a np.array([[10,2,4],[3, 4,11]],dtypenp.int32) print(a.strides) #(12,4) 12表示在内存中a[n, 0]到a[n1, 0]跨过多少byte; 4表示在内存中a[n, 0]到a[n, 1]跨过多少byte# 查看数组a所有元素占用内存大小&…

神经网络:CNN中的filter,kernel_size,strides,padding对输出形状的影响

输入数据在经过卷积层后,形状一般会发生改变,而形状的变化往往与以下四个超参数有关。 1,filter(out_channel) 该超参数控制着输入数据经过卷积层中需要与几个卷积核进行运算,而输入数据与每个卷积核进行…

tf.keras.layers.Conv2D用法总结

概述 tf.keras.layers.Conv2D()函数用于描述卷积层。 用法 tf.keras.layers.Conv2D(filters, kernel_size,strides(1, 1), paddingvalid, data_formatNone,dilation_rate(1, 1), activationNone )1.filter:卷积核的个数 2.kenel_size:卷积核尺寸&…

CNN中stride(步幅)和padding(填充)的详细理解

步幅:卷积核经过输入特征图的采样间隔 填充:在输入特征图的每一边添加一定数目的行列,使得输出的特征图的长、宽 输入的特征图的长、宽 两个参数的核心: 设置步幅的目的:希望减小输入参数的数目,减少计…

java输出(java输出语句快捷键)

java最简单的输入输出 java输出语句怎么写 去百度文库,查看完整内容> 内容来自用户:白岸海歌 System.out.print ——标准输出流 Java的流类,主要是:输入流类InputStream输出流类OutputStream Java系统预先定义好3个流对象,静态…

Java程序入口+输出语句+数据类型

一(Java程序入口):要想执行一个java程序,就必须有一个程序入口,且该入口为固定格式:public static void main(String[ ] args){}。注意:是main而不是mian,Str…

JAVA 循环控制语句以及输入输出

JAVA 循环控制语句以及输入输出 顺序结构分支结构if 语句switch 语句 循环结构while 循环for 循环do while 循环 输入输出输出到控制台从键盘输入 JAVA 里的程序控制语句主要分为顺序结构、分支结构(选择)和循环结构。 顺序结构 顺序结构比较简单&#x…

JAVA输出语句及变量

文章目录 语句输出在.java文件里一共能存在2样东西;注释的分类:变量标识符变量名的命名规范: 语句输出 格式一:println.带有换行效果 格式二:print.不带换行效果 (语句是程序执行的最小单元,是以";"结束的.) “ System.out.println();”输入快捷方法…

java的打印语句_java打印输出语句是什么?

打印输出语句有:换行打印“System.out.println();”,不换行打印“System.out.print();”,字节输出“System.out.write();”,按格式输出“System.out.printf();”。 Java中的输出语句有以下四种:System.out.println(111…

Java输入/输出

File类文本(Text)输入/输出 输出用PrintWriter类try-with-resources来自动关闭资源用Scanner来读取文本流式处理文本文件和二进制文件 二进制(Binary)文件输入/输出 二进制输入/输出到文件FilterInputStream/FilterOutputStream D…

Java输入输出

源代码见:点击打开链接 引言:在平时java开发中,被输入输出搞得头疼。特此写下这篇博客,一是为了总结输入输出,二是为了和大家分享。如果大家觉得写得好,就请高抬贵手点个赞呗!!&…

JAVA的输入输出

1.Java的输出 System,out,println(); //输出且换行 System.out.print(); //输出不换行 System.out.printf(); //提供字符格式化 示例 class Output{public static void main(String args[]){System.out.println("1.println");System.out.println("2.println&qu…