软件安全测试详细总结

摘要

安全性测试从冷门的话题,随着国内各大知名网站频繁被攻击,重要社区用户信息被泄露,逐步被各方所重视。而具体怎么做软件安全性测试,防止骇客有机可乘,国内普遍处于才起步的状态。今天笔者就自己的经验,系统总结了我所了解和掌握的安全测试,希望抛砖引玉,让更多更好的软件安全测试技术、经验被分享出来,供大家交流、学习,让我们的安全测试迈步起到一定的推动作用。

软件安全测试

软件安全性测试

安全性测试(Security test)它是指:在测试软件系统中对程序的危险防止和危险处理进行的测试,以验证其是否有效。

软件安全具体测试方法

软件安全性测试包括了应用安全、数据,操作系统等方面。根据不同的安全测试指标,有不同的测试策略。最后,从社会工程学角度总结了出现非软件性安全的原因。下面总结了具体的安全测试项和对应的测试方法。

一、应用安全

应用安全的测试有包括了安全的审计、密码支持、标识与鉴别、用户数据保护和安全管理等五个方面。下面具体说每个方面需要做的测试项和具体的测试方法。

A安全审计

1、安全审计自动响应

①系统用户的安全属性作非常规的添加或修改操作,如:对所有用户赋予管理员角色或所有权限操作。系统中只能存在一个超级管理角色。

②查看系统的是否告警提示并记录相关操作信息,即日志中应该有相关记录。

2、安全审计数据产生

系统需要提供日志机制,并能够记录与安全相关的事件,可以定义审计的级别(如告警,紧急,提示级别)。

3、用户身份关联

查阅相关的日志记录,当审计数据产生时,审计数据是否能将每个可审计事件与引起该事件的用户身份相关联。

4、审计查阅

①在日志相关界面能否查看到审计数据。

②系统是否能提供一些功能方便查看,如选择“全部”,按涉及用户的审计记录信息,或按时间查看等等。

5、限制审计查阅

①使用日志管理员帐号登录系统,能查看系统审计信息;

②使用非日志管理员帐号依次登录系统,不能查看系统审计模块信息。

6、可选审计查阅

①测试系统是否提供分类查看审计记录的功能;

②测试系统是否提供排序功能方便查看审计记录;

③测试系统是否提供“与”/“或”的查询功能方便查看审计记录,是否直接模糊查询。

7、安全审计事件选择

①设置集中审计事件排除条件;

②模拟发生集中审计事件,观察系统反应。

8、受保护的审计记录存储

使用系统划分出的用户身份(不具有审计删除权限)登录系统:尝试删除审计记录,看是否成功。

9、防止审计数据丢失

模拟审计数据已满情况,查看系统是否可选择“忽略可审计事件、阻止产生特有特权的授权用户外的所有可审计事件、覆盖所存储的最早的审计记录”中的一种处理方式,以确保审计数据不发生丢失现象。

B密码支持

密码运算,检查密码的加密规则是否安全可靠,一般通用md5加密方式。

C标识与鉴别

1、用户属性定义

检查用户授权角色管理机制,验证用户属性定义有效性。即系统能够对每个用户的安全属性分别加以有效定义。

2、鉴别方式

检测系统采用的身份鉴别方式。

3、用户标识

①在用户登录界面中,使用匿名用户登录系统,执行需要访问权限才能执行的操作,查看系统响应;

②使用各种角色的用户进行登录,然后进行操作;

③不进行登录,通过匿名用户执行访问操作。

4、用户-主体绑定

检测用户的安全属性是否关联到代表用户活动的主体上。应该关联到活动主体上,即不同用户有不同权限。

5、口令强度

①检测口令复杂度,强度;

②使用大小写英文字母、数字和特殊字符等多种组合进行验证。

6、口令保护

检测口令是否进行加密传输字符。即不能以明文的方式进行口令传输。

7、任何动作前的用户鉴别

检查用户进行操作前,系统是否进行权限鉴别。即要对系统操作,必须使用正确的用户名和密码。

8、重新鉴别

检测系统是否提供重新鉴别机制,系统长时间不做任何响应或鉴别失败后,是否要求进行重新登录。

D用户数据保护

1、采用加密技术

检查系统是否对传输的信息采用安全加密技术。

2、信息存储安全性

对于重要数据保存是否采用加密方式。

3、数据传输安全性

检测系统对重要数据是否进行加密传输。

4、数据一致性

①检测系统是否对数据的有效性,数据项之间的逻辑关系进行校验;

②检测系统是否保证数据的完整性和一致性,是否会因删除或反复的更新而被破坏或留下垃圾数据;

③对不符合要求的输入数据,系统是否使用中文给出简洁、准确的提示信息。

5、密码设置

①进入系统是否需要密码身份验证;

②是否有密码设置策略,是否包括有效期、最小长度、复杂度、非空设置、大小写敏感度等;

③所有的密码是否明码显示、存储与传输。

6、备份和恢复

检查是否提供数据备份与恢复手段,检测是否提供数据备份与还原手段。

E安全管理

1、安全属性管理

①查看系统是否具有用户权限分配权限的特定角色;

②对用户列表中的任意一个用户进行角色分配;

③使用不具有用户管理权限分配的特定角色用户进入系统,查看是否能对用户进行权限划分。

2、安全的安全属性

①进入新建用户界面,新建一个用户;

②输入其他必填项,不输入密码;

③输入纯数字用户登录密码;

④输入纯字符用户登录密码;

⑤输入数字和字符混和的用户登录密码。

3、静态属性初始化

①新增一个用户,对其初始状态的权限进行修改;

②使用新增加的用户登录平台,查看被编辑的权限,在系统中是否能实现。

4、数据的管理

①最高权限用户进入系统,查看是否具备安全审计功能模块;

②最高权限用户进入系统,修改角色。

5、数据限值的管理

①最高权限用户进入系统,添加用户;

②填写相关用户信息,并并限制登陆区域;

③使用新创建的用户登录系统,但登录的用户IP不在所填写的区域控制范围内。

6、安全的数据

①最高权限用户进入系统,添加用户;

②填写相关用户信息,录入无效的用户数据,观察系统反应。

7、撤销

①最高权限用户进入系统,选择一个用户,对所选用户的权限进行查看和撤销;

②选择权限已撤销的用户进行登录,查看用户是否具备已撤销的权限。

8、禁用

①具有用户管理权限角色用户进入系统,选择一个用户,对所选用户的权限进行查看和禁用;

②选择权限已禁用的用户进行登录,查看用户是否能够登入系统。

9、管理规范

查看系统是否具备安全管理项。

10、安全管理角色

①查看系统具备的所有角色,以及角色对应的权限分配;

②为角色选择不同的权限进行添加;

③检查是否需要明确的请求才赋予特定的角色权限。

④系统管理员对默认角色权限进行修改。

⑤管理员添加角色,分配角色的权限,检查分配角色的权限是否能大于该管理员所拥有的权限。

二、数据安全

1、原始数据的安全性

为了保证原始数据的原始性,原始数据一旦保存,便不能被更改。

2、互联网数据的安全性

采用数据库分离的策略,保证核心业务数据库不会受到攻击。

3、备份和恢复

检查是否提供数据备份与恢复手段,检测是否提供数据备份与还原手段。

三、安全漏洞检查

1、软件安全漏洞扫描

安全漏洞扫描旨在扫描出软件存在的SQL盲注、XSS(跨站脚本攻击)等漏洞。

这里需要推荐使用AppScan这款工具。

2、系统漏洞检查

①操作系统是否存在漏洞,是否有更新最新的安全漏洞补丁。

②系统是否有开启防火墙。

③系统是否存在弱口令。

④系统的IP是否远程可ping,是否有开放一些敏感的端口。

3、服务组件安全

①如apache、IIS、nginx等服务容器是否存在安全漏洞。

②数据管理软件版本是否过低,是否存在安全漏洞。

③其它,如easyui、discuz第三方框架模板是否存在安全漏洞。

四、社会工程方面测试

当一个软件可能做到尽可能安全了,但仍然可能存在泄露。除了漏洞是很难避免外,更可能是社会工程方面存在问题。原来笔者看过专门的一本黑客书籍,其中大部分的突破都是由于非软件性方面进行攻破的。有下列可参考原因:
1、服务器所在地安检不到位

①通过伪造证件混入机房。

②通过跟随、夜间安检薄弱情况下混入机房。

2、机房网络与外部网络隔离不彻底

①可任由大众进入的非隔离区域存在连入内部机房网络接口。

②内部网络存在可侦测的wifi信号,在非隔离区域可连接进入内部网络。

在非隔离区,存在其它可连入内部网络的方式。

3、内部安全意识不足

①管理上,存在安全隐患。比如大家的密码为员工号,或者“姓名+工号”等规则,让骇客有迹可循。

②对于重要的敏感纸质、光盘等资料保密不到位,如重要信息的纸质材料没有彻底销毁放入垃圾桶。

③没有内部安全保密协议和手册。

4、内部员工安全意识不到位

①重要的口令、密码非常傻瓜,比如为自己的身份证号码、生日日期等。

②自己的移动设备,如手机、IPAD等开启可供其它人访问的不安全的wifi信号,导致骇客的利用。

③主动和无意识的泄露内部的重要安全信息。

常用安全测试工具推荐

1、操作系统扫描工具

CIS-CAT

功能:可以根据不同的操作系统,选择不同的基准进行系统漏洞扫描。

适用于:Unix/Linux,MS Windows,并且这些系统上装了java 5或以上。

SRay

功能:系统漏洞扫描。

适用于:Unix/Linux系统。

Nessus

功能:检查系统存在有待加强的弱点,通常使用它作为安全基线扫描工具。

适用于:Unix/Linux,MS Windows。

MBSA

功能:

适用于:

2、数据库扫描工具

NGSSQuirreL for Oracle

功能:为系统管理员、数据库管理员、专业安全人士提供了一个全面的安全分析组件。并且可以检查几千个可能存在的安全威胁、补丁状况、对象和权限信息、登陆和密码机制、存储过程以及启动过程。NGSSQuirrel提供强大的密码审计功能,包括字典和暴力破解模式。

适用于:Oracle 数据库扫描。

3、端口扫描工具

一个小巧的网络端口扫描工具,并且是绿色版不用安装即可使用。

NMap

NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。

4、WEB应用扫描工具

AppScan

作为应用的安全性测试工具,该工具必须了解。这款工具能扫描出应用中的各种SQL注入漏洞,XSS漏洞以及其它的一些安全性漏洞,并给出漏洞的使用示例,以及详细的解决建议和方法。笔者原来的公司具有省级专业评测的资质,安全工具也主要以AppScan为主。经典版本为AppScan8.0,但建议学习使用最新的版本。

5、抓包工具

Wireshark

Wireshark(前称Ethereal)是一个分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

6、SQL注入工具

Pangolin

Pangolin是一款帮助渗透测试人员进行SQL注入(SQL Injeciton)测试的安全工具。Pangolin与JSky(Web应用安全漏洞扫描器、Web应用安全评估工具)都是NOSEC公司的产品。Pangolin具备友好的图形界面以及支持测试几乎所有数据库(Access、MSSql、MySql、Oracle、Informix、DB2、Sybase、PostgreSQL、Sqlite)。Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注入开始到最后控制目标系统都给出了测试步骤。Pangolin是目前国内使用率最高的SQL注入测试的安全软件。

结束语

软件安全性测试在国内仍然还比较薄弱,需要各方的支持才能走的更远。也希望更多的骇客从一个破坏者转入到真正的黑客,让整个网络更加安全。

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

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

相关文章

大咖共探AGI时代机遇,腾讯云助力大模型规模化应用提速

引言 2023 年,科技圈的“顶流”莫过于大模型。自 ChatGPT 的问世拉开大模型与生成式 AI 产业的发展序幕后,国内大模型快速跟进,已完成从技术到产品、再到商业的阶段跨越,并深入垂直行业领域。 新技术的爆发,催生新的应…

网络安全内网渗透之DNS隧道实验--dnscat2直连模式

目录 一、DNS隧道攻击原理 二、DNS隧道工具 (一)安装dnscat2服务端 (二)启动服务器端 (三)在目标机器上安装客户端 (四)反弹shell 一、DNS隧道攻击原理 在进行DNS查询时&#x…

【Linux is not Unix】Linux前言

目录 二战军工的产物——第一台现代电子数字计算机ENIAC(埃尼阿克) Unix Linux Linux企业应用现状 如今计算机已经应用在我们生活的各个层面,像我们日常使用的笔记本是计算机的一类,可以解决我们生活中遇到的很多问题&#xff…

竞赛 基于视觉的身份证识别系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-sen…

根据文章段落内容自动插入图片php版

每篇内容根据段落判断插入图片代码附上&#xff1a; $chatd"<table>";if(stripos($content,$chatd)0){//随机输出三张图功能if($moduleid!37 &&$thumb){//判断是否存在图$idrand(1,999999);$midrand(1,9999999);$getimg"http://www.nongpin88.co…

c语言练习66:模拟实现offsetof

模拟实现offsetof #define offsetof(StructType, MemberName) (size_t)&(((StructType *)0)->MemberName) StructType是结构体类型名&#xff0c;MemberName是成员名。具体操作方法是&#xff1a; 1、先将0转换为一个结构体类型的指针&#xff0c;相当于某个结构体的首…

【Unity】LODGroup 计算公式

Unity 在配置 LodGroup 时&#xff0c;其分级切换的计算方法是按照物体在相机视野中占据的比例计算的。在运行时&#xff0c;如果相机视野范围&#xff08;Field of View&#xff09;没有改变&#xff0c;那么这个值可以直接换算成物体距离相机的距离。这里就讨论下如何计算得到…

线性表(1)

线性表即“把所有数据按照顺序&#xff08;线性&#xff09;的存储结构方式&#xff0c;存储在物理空间”。 线性表又分为 顺序表链表 单向链表双向链表 一、顺序表 数据依次存储在连续的物理空间中&#xff0c;就比如数组。 顺序表存储数据时&#xff0c;会提前申请一整块足够…

树莓派上使用kettle将文本文档导入mariadb

目录 1 连接MariaDB的前置条件 2 test.txt 3 在mariadb中创建数据库和数据表 4 在kettle中的操作 4.1 新建任务 4.2 连接数据库 4.3 文本文件输入 4.4 表输出 4.5 运行 4.6 结果 1 连接MariaDB的前置条件 首先你的mariaDB要有密码&#xff0c;我当前的用…

MQ - 32 基础功能:消息查询的设计

文章目录 导图概述什么时候会用到消息查询消息队列支持查询的理论基础消息数据存储结构关于索引的一些知识点内核支持简单查询根据 Offset 查询数据根据时间戳查询数据根据消息 ID 查询数据借助第三方工具实现复杂查询第三方引擎支持查询工具化简单查询总结导图 概述 从功能上…

智慧农业系统源码 智慧农业小程序源码

智慧农业系统源码 智慧农业小程序源码 一&#xff1a;智慧农业功能 1、有效改善农业生态环境 将农田、畜牧养殖场、水产养殖基地等生产单位和周边的生态环境视为整体,并通过对其物质交换和能量循环关系进行系 统、精密运算,保障农业生产的生态环境在可承受范围内,如定量施肥不…

【前端】零基础快速搞定JavaScript核心知识点

文章目录 1.初识JavaScript1.1.JavaScript语言简介1.2.JavaScript引入方式和注释1.3.Javascript变量声明详解1.4.JavaScript变量提升详解 2.JavaScript基础数据类型2.1.JavaScript基础数据类型简介2.2.基础类型数据-Number2.3.基础类型数据-String2.4.基础类型数据-Boolean2.5.…

javaee之黑马乐优商城6

商品品牌的查询 上面就是我们需要根据分类id去找品牌 假设我们现在拿到的是 商品的分类id&#xff0c;我们需要根据分类id查询出对应的品牌即可 下面我们拿到上面的接口&#xff0c;直接撸代码 这个是和品牌相关联的操作&#xff0c;因为先去看一下BrandMapper,这个mapper是…

Vue3 动态组件 component:is= 失效

错误代码 用Vue3&#xff0c;组件无需注册&#xff0c;所以就会提示“注册了不不使用”的报错&#xff0c; 于是用了异步注册&#xff0c;甚至直接为了不报错就在下面使用3个组件&#xff0c;有异步加载&#xff0c;但还是实现不了预期效果 <script setup> import { re…

Linux内核启动流程-第二阶段rest_init函数

一. Linux内核启动 上一篇文章简单了解了 Linux内核启动第二阶段&#xff0c;涉及的 start_kernel函数。start_kernel 函数最后调用了 rest_init 函数&#xff0c;接下来简单看一下 rest_init 函数。 本文续上一篇文章的学习&#xff0c;地址如下&#xff1a; Linux内核启…

距离矢量路由协议RIP(含Cisco模拟器实验命令配置)

距离矢量路由协议RIP(含Cisco模拟器实验命令配置) 简介 距离矢量路由协议&#xff08;Routing Information Protocol, RIP&#xff09;是一种内部网关协议&#xff0c;它位于应用层&#xff0c;使用520 UDP端口。RIP基于距离矢量算法&#xff08;Bellham-Ford&#xff09;根据…

MSF的安装与使用教程,超详细,附安装包和密钥

MSF简介 Metasploit&#xff08;MSF&#xff09;是一个免费的、可下载的框架 它本身附带数百个已知软件漏洞&#xff0c;是一款专业级漏洞攻击工具。 当H.D. Moore在2003年发布Metasploit时&#xff0c;计算机安全状况也被永久性地改变了&#xff0c;仿佛一夜之间&#xff0…

MySQL进阶篇4——锁+InnoDB引擎+MySQL管理

锁 概述 保证并发访问数据库数据的一致性和有效性等。 全局锁-库锁 ​ 加锁后&#xff0c;整个数据库实例就处于只读状态&#xff0c;后续的DML语句&#xff0c;DDL语句&#xff0c;以及更新操作的事务提交语句都将会被阻塞。 典型使用场景&#xff1a; ​ 对全库做逻辑备…

PY32F003F18之DMA串口

PY32F003F18使用DMA串口&#xff0c;官方程序省FLASH&#xff0c;但不省内存。单片机内存够大&#xff0c;节省没意义&#xff0c;故做了修改&#xff0c;少用HAL库中的发送和接收&#xff0c;从里面抠出有用的部分&#xff0c;修修改改就可以了。 一、DMA串口初始化流程&…

人生第一个java项目 学生管理系统

开始编程 建类 开始主要部分 main()部分 方法部分