软件安全测试经典定义
2016-04-26 15:34:15 53 举报
AI智能生成
登录查看完整内容
软件安全测试是一种评估软件系统安全性的过程,旨在发现和修复潜在的漏洞、弱点和威胁。它涉及对软件进行深入的分析和检查,以确定是否存在任何可能导致数据泄露、未经授权访问或系统崩溃的问题。软件安全测试包括各种技术和方法,如静态代码分析、动态渗透测试和模糊测试等。通过这些测试,开发人员可以确保他们的软件在发布之前具有足够的安全性,从而保护用户的数据和隐私。总之,软件安全测试是确保软件系统安全可靠的重要步骤。
作者其他创作
大纲/内容
经典定义(web安全测试)
软件测试
IEEE对其定义(1983年):使用人工或者自动手段来运行或者测定某个系统的过程,检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
安全测试
安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,应用仍然能够充分地满足它的需求。
提供必要的证据和信息,以便业主就承担多少安全风险方面做出知情决策。
理解问题域并精心构造恶意输入。
软件安全
软件安全就是建立安全的软件,并使之在遭遇到恶意攻击时仍能正常运转的实践。
真正的软件安全实际上指的是风险管理。
只要能够满足业务所有者--当所有者意识到风险并充分理解自己所承担的风险时,这个软件就算是足够安全。
服务器
监听HTTP连接的计算机系统。
客户端
建立到服务器的连接,请求数据的计算机或软件。
请求
请求封装了客户端想要知道的内容。
URL(统一资源定位符)
一种特殊类型的统一资源标示符(URI)
参数
键-值对,键和取值之间以等号(=)连接。URL中可以有多组参数,以&进行分隔。
头信息形式的元数据
方法
向服务器发出的每个请求都需要采用某种方法。最常见的有GET和POST两种。
中间件
包含介于服务器和业务逻辑之间的、几乎任何种类的软件。
具有代表性的有:各种运行时环境(.NET和J2EE)以及像WebLogic和WebSphere等商业产品。
在软件设计中加入中间件的常见原因是:用于获得比服务器软件复杂的多的功能,你可以在此基础上简历自己的业务逻辑。
组件
通常将它看做是功能的封装单位
翻墙
指绕过相应的IP封锁、内容过滤、域名劫持、流量限制等,实现对网络内容的访问。
Web安全测试
使用多种工具,包括手动工具和自动工具,来模拟和激发我们的Web应用的活动
需求
ANSI/IEEE标准定义:用户为了解决问题或达成目标所需要的条件或功能,或为了满足合同、标准、规范或其他正式起效的文档,系统所必须拥有或满足的条件或功能。
安全测试的工具
Firefox(组件)
View Source Chart
Firebug
Web开发和测试工具中的“瑞士军刀”
允许跟踪和调整每一行Html,javascript和文档对象模型(DOM)
报告后台AJAX请求,提高载入页面需要的时间,允许实时编辑网页
但是,刷新页面后当前编辑就失效了,也就是无法将更改的内容保存到服务器。
作为一个组件,本身也存在附加组件,用以增强和扩展功能
Tamper Data
Edit Cookies
User Agent Switcher
SwitchProxy(目前禁用了)
OWASPD的WebScarab
Java Web Start版本安装
独立安装版本
WebScarab通常与Web客户端运行在同一台计算机上,而常规的代理则搭建起来作为网络环境的一部分
Webscarab用来显示、存储和操纵HTTP请求和相应中与安全相关的内容
安装Perl及其软件包
Perl是编程语言的胶带,可能不优美,但是非常有助于安全测试用例的自动化。
windows上安装
非windows上安装,包括Linux,UNIX和Mac OS
安装CAL9000
将许多安全工具机场在一个软件包中,典型的黑客工具,可以胜任攻击任务
主要以Javascript编写,直接在Firefox中运行
安装ViewState Decoder
windows可执行文件,主要测试asp.net应用包含的信息
安装cURL
命令行工具,支持许多web协议和组件,可以当浏览器使用
可以从任何普通的shell中调用它
处理Cookie,认证和Web协议
安装Pornzilla
不是一件工具,是一套有用的Firefox小书签和扩展
提供了大量方便的有助于Web应用安全测试的工具
安装Cygwin
能够在windows中使用Linux环境
其实提供了类似于Unix的环境,不需要重启,双启动或虚拟机
安装Nikto 2
开源、免费获取的Web漏洞扫描程序,扩展性非常好
实际上是一个perl脚本,在cygwin或者其他类似于UNIX环境中运行
外部依赖为:LibWhisker模块
从测试角度看,Nikto可以作为已经编写好的自动化脚本
安装Burp Suite
一套Web应用安全工具,但是不开源
包含了用于截获、重复、分析或注入Web应用请求的组件
安装Apache HTTP Server
开源的Web服务器
基本观察(安全测试)
查看网页的HTML源代码
检测源代码是否被恶意更改
输入验证:注意是否位经修改就直接显示在源代码中
使用firebug观察实时的请求头
使用WebScarab观察实时的POST数据
使用WebScarab可以观察并修改Web服务器发送的一切内容
查看隐藏表单域
使用TamperDate观察实时的响应头
高亮显示JavaScript和注释
检查JavaScript事件
修改特定元素的属性
在本地浏览器更改,不会影响服务器的源代码
刷新后更改失效
动态跟踪元素属性
面向Web的数据编码
辨别二进制数据表示
十六进制(Base-16)
八进制(Base-8)
Base-36
数字0-9和字母a-z(不区分大小写,要么全是大写,要么全是小写)
使用Base-64
使用Openssl加密和解密
大小写字母共计52个,加上0-9十个数字和+以及/共计64个
编码的字符数量始终是4的倍数,如果不够末尾补=(1个,2个或者3个)
末尾=是Base-64的标志,另外字母大小写混合也是其唯一一种使用的编码方式特征
在网页中转换Base-36数字
在Perl中使用Base-36
使用以URL方式编码的数据
使用CAL9000进行URL编码
使用HTML实体数据
计算散列值
散列值是单项的数学函数,给定任意数量的输入,它们会产生长度完全相等的输出。
没有办法能解码散列值,散列值是单项的数学摘要
辨别时间格式
解码多重编码
篡改输入
截获和修改post请求
使用WebScarab截获和修改post请求
WebScarab可以修改所有的请求头,甚至是请求将被发送到的URL
绕过输入限制
篡改URL
URL和查询字符串常常被用于设置参数
自动篡改URL
使用make numbered list of links
编辑cookie
cookie负责在页面请求之间保存用户信息
cookie通常包含身份验证信息
伪造浏览器头信息
使用TamperData
上传带有恶意文件名的文件
允许上传文件的应用提供了一种攻击途径
上传大文件
上传比正常使用大100倍的文件,测试限制
上传恶意XML实体文件
上传恶意XML结构
上传恶意ZIP文件
上传样例病毒文件
绕过用户界面的限制
firebug修改属性
自动化批量扫描
使用WebScarab爬行网站
勘察工具通常被称为“爬虫”,有各种各样的形式和规模
所谓的爬行网站是指系统地访问每个页面并跟踪每个链接的过程
将爬行结果转换为清单
减少要测试的URL
使用电子表格程序来精简列表
镜像
使用LWP对网站做镜像
使用wget对网站做镜像
使用wget对特定的清单做镜像
Nikto
使用Nikto扫描网站
理解Nikto的输出结果
使用Nikto扫描HTTPS站点
使用带身份验证的Nikto
在特定起始点启动Nikto
在Nikto中使用特定的会话Cookie
WSFuzzer
使用WSFuzzer测试Web服务
理解WSFuzzer的输出结果
模糊测试Fuzz testing
参数的模糊化
模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。
使用cURL实现特定任务的自动化
cURL是一种命令行URL工具,适用于自动化实现简单的Web测试任务
cURL完全掌握着HTTP,但与HTML无有任何关系
通过网络发送页面请求,但是完全不在意页面本身的含义
使用cURL获取页面
冒充特定类型的网页浏览器或设备
以交互式方式冒充另一种设备
使用cURL模仿搜索引擎
通过假造Referer头信息来伪造工作流程
使用LibWWWPerl(LWP)实现自动化
查找设计缺陷
bug:程序错误,是一种局部化错误,不需要重新设计或者更改需求。
flaw:缺陷,设计或需求出错导致的结果。
绕过必须的导航
尝试特权操作
纵向:获取更高级别管理员的权限
横向:获取同一级别其他账户的访问权利
滥用密码恢复
个人秘密(个人问题召回)
Email恢复
管理员恢复
滥用可预测的标示符
预测凭证
找出应用中的随机数
测试随机数
滥用可重复性
滥用高负载操作
当单个攻击能够禁用整个Web应用的时候,我们将它称为拒绝服务(DoS)攻击
滥用限制性的功能
例如输入已知的用户名和任意密码,直到该用户被锁定
自动化锁定批量一直用户名的用户,是个安全问题
典型问题:eBay竞拍事件
滥用竞争条件
竞争条件指的是两项操作案发生在同一块受保护的数据上的情况。
例如同一条数据库记录,同一个文件,甚至是内存中的一个变量。
攻击AJAX
AJAX:异步JavaScript和XML(web2.0时代)
观察实时的AJAX请求
识别应用中的JavaScript
从AJAX活动回溯到源代码
截获和修改AJAX请求
截获和修改服务器响应
使用注入数据破坏AJAX
注入纯文本
注入HTML
注入XML
注入JSON
破坏客户端状态
检查跨域访问
通过JSON劫持来读取私有数据
操纵会话
在最基本层面上,会话指的是网页浏览器在单次正常使用中对Web服务器所做的全部链接。
你可以讲会话看成是一次会议,从用户首次浏览到应用一直到用户注销之间的时间和活动称为一次会话。
在Cookie中查找会话标识符(TamperData或者Webscarab)
在请求中查看会话标示符(View Source Chart)
查找authentication头(TamperData)
分析会话ID过期
会话过期的几种常见方式
登录之后的固定时间
新请求之后的固定时间
浏览器关闭
从不
根据操作进行身份验证
使用Burp分析会话标识符
使用WebSccarab分析会话随机性
图表显示
更改会话以逃避限制
假扮其他用户
仅用户名
用户名和密码
访问控制和授权细节
固定会话
测试跨站请求伪造
CSRF:跨站请求伪造,允许攻击者利用服务器对标识的信任,并在未经用户了解或同意的情况下触发操作。
跨站请求伪造依赖于仅使用用户的身份对操作进行授权的应用。
使用WebScarab或者TamperData
多层面的测试
使用XSS窃取Cookie
使用XSS创建覆盖
使受害者认为在访问他们预期访问的站点,但其实是有攻击者控制的站点。
使用XSS产生HTTP请求
以交互方式尝试基于DOM的XSS
绕过字段长度限制(XSS)
以交互方式尝试跨站式跟踪
修改Host头
WebScarab
暴力猜测用户名和密码
以交互方式尝试PHP包含文件注入
制作解压缩炸弹
解压缩炸弹是一个非常小的压缩文件,但却能解压成与之不成比例的大量数据。
以交互方式尝试命令注入
命令注入:是可被攻击者用来在目标服务器上执行任意命令的一种方法。
系统地尝试命令注入
以交互方式尝试XPath注入
类似于SQL注入
以交互方式尝试服务器端包含(SSI)注入
SSI:一种服务器端的脚本语言,允许在网页中包含简单点额动态内容
系统地尝试服务器端包含(SSI)注入
以交互方式尝试LDAP注入
LDAP:轻量目录访问协议,管理凭证和对用户进行身份验证。
使用LDAP注入,攻击者的目标可能是想不用凭证而通过身份验证,或者获得对敏感信息的访问权限。
以交互方式尝试日志注入
日志注入是隐藏企图的或成功的攻击的迹象以及对操作员和管理员执行存储式XSS攻击的一种有效的方式。
0 条评论
回复 删除
下一页