当前位置: 首页 > news >正文

安全测试入门基础大全。。费了大功夫整理(超级全面)

随着互联网的发展,安全问题变得越来越重要。一个大型的互联网站点,如果每天查看日志,会发现有很多试图攻击的脚本。如果不是,证明网站的影响力不够大。信息集成背后隐藏着安全隐患。比如为Web应用编写的代码,由于开发人员的不严谨,质量堪忧,很可能被第三方恶意利用,使得未经授权的访问可以获得对敏感数据和Web服务器的控制。

目前很多所谓的安全测试工程师只是使用一些自动化的审计工具来检测系统,将工具检测到的bug整理出来,然后呈现给开发人员。当开发人员不知道原理和代码,对安全性一无所知时,无法从自动审计工具中整理出的bug。今天我们简单介绍一下安全测试,为以后想从事安全测试或者对网络安全和渗透测试感兴趣的人普及基本的设备技能。

安全测试基础知识

一、XSS简介

(1) 什么是XSS?

XSS(Cross Site Scripting)跨站脚本攻击,Web攻击的一种,通过对网页注入可执行代码(html代码或JS代码)成功被浏览器执行。

(2) 实施XSS具备的条件?

  • 需要向web页面能够注入恶意代码(输入框、url);
  • 恶意代码能够被浏览器成功执行;

(3) XSS攻击原理?

用户传入的数据被当做是程序,所以会执行程序。

(4) XSS攻击方式?

  • 反射型XSS:用户访问一个被攻击者篡改后的链接时,被植入的脚本会被用户浏览器执行,也称非持久型因为是一次性,仅对当次的页面访问产生影响;
  • 反射型XSS场景:带有XSS脚本的链接转成的短链;【在url后跟xss脚本】,网址跳转;
  • 存储型XSS:包含XSS攻击脚本的内容会被存储到服务器端,也称持久型,用户读取到内容时会自动执行脚本;
  • 存储型XSS场景:其他用户查看别人发布的留言、评论,管理员发布的公告,黑客发布的博客文章;反馈功能,投诉功能,聊天记录功能。

(5) XSS攻击注入点?

  • HTML节点内容:动态生成,包含用户输入的内容,从而包含XSS脚本;
  • HTML属性:像img的src、输入框的value等需要用户自行输入的地方;
  • JS代码:某个JS代码需要用户传值进入;
  • 富文本:富文本编辑框本身保存的内容就包含html标签,用户可输入XSS脚本。

(6) XSS攻击的危害性?

  • 获取页面数据:通过document即可获取指定元素的值,如获取用户名称、手机号、住址等【偷取网站任意数据包括用户资料】;
  • 获取cookies:通过document.cookies可以获取网站当前的所有cookies,盗取当前登录用户的登录态,从而冒充被盗用户登录网站甚至后台管理系统【偷取用户密码和登录态】;
  • 劫持前端逻辑:可以修改某个操作的反馈内容,譬如点击某个按钮本来应该只提交一个请求,但通过XSS脚本可篡改该请求地址,然后用户提交的信息发送到攻击者封装的接口;或可改变用户跳转的页面【欺骗用户,流量劫持】;
  • 发送请求:攻击者可以让用户在不知情的情况下发送某个请求收集用户信息。

(7) 如何防御XSS攻击?

  • 浏览器自带防御,X-XSS-Protection,主要防御反射型XSS攻击,如参数出现在HTML内容和属性;
  • 对html内容进行转义,譬如将【<>】转义成&lt; &gt; 存入数据库时即转义,或显示时转义;
  • 对html属性中的双引号和单引号【"" ''】转义成&quto; &apos;
  • CSP1(Content SecurityPolicy)内容安全策略,用于指定哪些内容可执行。

二、CSRF简介

(1) 什么是CSRF?

CSRF(Cross Site Request Forgy)跨站请求伪造,用户访问的网站对恶意网站发出了一些请求,且这些请求是用户不知情的情况下完成的;攻击者盗用受信任用户的身份,以他的名义向第三方网站发送恶意请求,对于服务器来说这个请求是合法的。

(2) CSRF是如何攻击的?

  • 站点B向站点A发送请求;
  • 请求带站点Acookies;
  • 不访问站点A前端;
  • referer为站点B;

(3) CSRF攻击的危害性?

  • 利用用户登录态
  • 用户不知情
  • 完成业务请求(盗取用户资金、冒充用户发帖背锅)
  • 造成蠕虫攻击

三、SQL注入

(1) 什么是SQL注入?

SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。

(2) SQL注入原理?

  • 寻找到SQL注入的位置;
  • 判断服务器类型和后台数据库类型;
  • 针对不同的服务器和数据库特点进行SQL注入攻击;

(3) 如何防御SQL注入?

  • 检查变量数据类型和格式;
  • 过滤特殊符号;
  • 绑定变量,使用预编译语句; 

四、XPath注入

(1) 什么是XPath注入?

XPath注入攻击本质上和SQL注入攻击是类似的,都是输入一些恶意的查询等代码字符串,从而对网站进行攻击。

XPath注入攻击,是利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。

(2) XPath注入原理?

XPath注入攻击主要是通过构建特殊的输入,这些输入往往是XPath语法中的一些组合,这些输入将作为参数传入Web 应用程序,通过执行XPath查询而执行入侵者想要的操作。

(3) 如何防御XPath注入?

  • 数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。
  • 检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串。
  • 对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息。
  • 参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本。
  • 通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。

安全测试开展


一、安全测试类型

安全测试分为以下几种:

二、安全测试攻防手段

  • 冒充:一个实体假装成一个不同的实体,常和消息篡改和重演一起使用;
  • 重演:当消息为了产生非授权效果而被重复时,就出现重演了;
  • 消息篡改:数据所传送的内容被改变而未被发觉,并导致非授权后果;
  • 服务拒绝:通过向认证/授权服务发送大量虚假请求,占用系统带宽造成关键服务繁忙,使得授权服务不能正常执行,产生服务拒绝;

三、安全测试通用测试用例
以下总结一些通用的安全测试用例,但安全测试远不如此,欢迎补充。

(1) 漏洞扫描

对系统的URL进行漏洞扫描,扫描系统开放的端口、服务和存在的漏洞。

(2) 明文传输

定义:对系统传输过程中的敏感内容是明文&密文进行检查。

系统传输敏感信息场景:登录、注册、支付、修改密码。

系统敏感信息:登录密码、支付金额、注册的手机号码、身份证、邮箱等信息。

(3) 越权访问

定义:测试能否通过URL地址获取管理员及其他用户信息

1.出现admin、user、system、pwd等敏感目录的URL地址。

2.垂直越权场景:当系统存在多个不同权限的管理员时,低权限的管理员不能访问或操作到高权限的管理的资源。

3.水平越权场景:当系统存在多个需要登录用户,A用户不能访问B用户的资源。

(4) 反射性跨站脚本

定义:测试系统是否对输入进行过滤或转移,规避用户通过跨站脚本攻击造成风险。

跨站脚本攻击场景:搜索框、输入框、留言、上传文件。

(5) 文件上传

定义:测试能否上传木马、病毒、色情图片等恶意图片。

(6) 越权文件下载

定义:测试URL中是否包含文件名或文件目录,尝试提交参数值查看是否可下载或读取其他目录的文件内容。

文件下载场景:文件下载、文件读取功能。

测试url:包含文件名或文件目录的url。

(7) 短信/邮箱验证

定义:测试短信、邮箱验证方式是否进行安全设置。

触发短信、邮箱验证码验证相关的场景:找回或重置密码、注册、邀请注册、引流活动分享。

(8) 鉴权缺失

定义:测试需要登录、鉴权才可操作的系统中可修改资源的相关接口,鉴权是否可靠。

测试对象:可以修改资源的接口。

(9) 密码健壮性

定义:测试密码、验证码验证的方式是否可靠,是否可以被暴力猜测直至命中。

(10) 数据安全

定义:检查系统中敏感数据的存储是否安全。

敏感数据:密码、身份证、家庭住址、银行卡号、手机号、真实姓名。

安全测试常见问题

一、安全测试的好处?

如果黑客利用了系统安全漏洞,对系统进行攻击导致而成,从而导致损失的代价也是不言而喻的。安全测试的好处有如下几个方面:

  • 提升产品的安全质量;
  • 尽量在发布前找到安全问题予以修补降低成本;
  • 度量安全等级(安全测试和找bug一样,我们不可能把系统所有的安全问题都能找到并解决,通过安全测试,我们可以大体的估计系统的安全等级);
  • 验证安装在系统内的保护机制能否在实际应用中对系统进行保护,使之不被非法入侵,不受各种因素的干扰。

二、安全测试能发现哪些问题?

安全测试是建立在功能测试的基础上进行的测试。简要的说安全测试主要发现包含如下问题:

  • 信息泄露、破坏信息的完整性;
  • 拒绝服务(合法用户不能够正常访问网络服务);
  • 非法使用(非授权访问)、窃听;
  • 业务数据流分析;
  • 假冒、旁路控制;
  • 授权侵犯(内部攻击即局域网攻击);
  • 计算机病毒、恶意软件;
  • 信息安全法律法规不完善;

三、安全测试与渗透测试的区别?

  • 安全测试不等同于渗透测试,渗透测试侧重于几个点的穿透攻击,而安全测试是侧重于对安全威胁的建模,系统的对来自各个方面,各个层面威胁的全面考量。安全测试侧重系统可能会来自哪个方面的威胁,正在遭受哪些威胁,以及系统可抵御什么样的威胁,安全测试涵盖渗透测试的部分内容。
  • 渗透测试着重点在攻击,渗透测试的目的是攻破软件系统,以证明软件系统存在问题。安全测试的着重点在防御,对整个系统的防御的功能进行一个系统的考虑。
  • 渗透测试的目的是攻破系统,所以只要选择一些薄弱的环节,选择一些点来攻击系统,达到攻破系统的目的就可以了。安全测试必须从整个的防御面上来考虑系统的安全性。

四、安全测试流程?

安全测试流程包括:提交申请、准备测试环境、收集基础信息、执行渗透测试、测试结果分析、编写报告。

五、安全测试平台有哪些?

  • 乌云网:http://www.anquan.us/
  • 漏洞盒子:https://www.vulbox.com/
  • 360网站安全检测:http://webscan.360.cn/
  • 其他:appsans、axws

六、安全测试工具有哪些?

安全测试如下:

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

  • [AIGC] Java List接口详解
  • 从0到1实现YOLOv3
  • linux在文件夹中查找文件内容
  • MySql 数据库、表常用语句
  • 微软如何打造数字零售力航母系列科普13 - Prime Focus Technologies在NAB 2024上推出CLEAR®对话人工智能联合试点
  • 短URL服务设计
  • onnx基本概念
  • .gitignore文件忽略的内容不生效问题解决
  • 车载学习:UDS诊断、ECU刷写、OTA升级、Tbox测试、CANoe实操
  • 通过Vue3+高德地图的JS API实现市区地图渲染
  • 知乎号开始运营了,宣传一波
  • 聚焦现代商贸物流愿景 构筑供应链金融服务体系|第二届京津冀现代商贸物流金融创新发展百人大会成功举办
  • Spring Cloud全家桶(上)【Nacos、OpenFeign、LoadBalancer、GateWay、金丝雀灰色发布】
  • vscode字符多行自动增长插件。
  • 百货商场:打造品质生活
  • [笔记] php常见简单功能及函数
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Docker入门(二) - Dockerfile
  • eclipse的离线汉化
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • k8s如何管理Pod
  • opencv python Meanshift 和 Camshift
  • pdf文件如何在线转换为jpg图片
  • Rancher如何对接Ceph-RBD块存储
  • SpriteKit 技巧之添加背景图片
  • 阿里云Kubernetes容器服务上体验Knative
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端路由实现-history
  • 浅谈web中前端模板引擎的使用
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 我与Jetbrains的这些年
  • ionic异常记录
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​iOS安全加固方法及实现
  • (1)bark-ml
  • (9)目标检测_SSD的原理
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Forward) Music Player: From UI Proposal to Code
  • (多级缓存)缓存同步
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (离散数学)逻辑连接词
  • (正则)提取页面里的img标签
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET 反射 Reflect
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET技术成长路线架构图
  • @ModelAttribute使用详解
  • @ResponseBody