安全性测试:OWASP ZAP使用入门指南
免责声明:
本文意在讨论使用工具来应对软件研发领域中,日益增长的安全性质量测试需求。本文涉及到的工具不可被用于攻击目的。
1. 安全性测试
前些天,一则12306用户账号泄露的新闻迅速发酵,引起了购票用户的一片恐慌。
且不论这次账号泄露的漏洞究竟是发生在哪里,网络安全性这个话题再次引起了我们的关注。
做为IT从业人员,我们的研发产品是否具有足够的安全性,是不是能够在亿万用户的?我们是不是应该更多的关注产品安全性,投入更多的安全性测试资源?
从行业发展的趋势来看,答案是肯定的。
2. OWASP
OWASP是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。其使命是使应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策。目前OWASP全球拥有220个分部近六万名会员,共同推动了安全标准、安全测试工具、安全指导手册等应用安全技术的发展。
近几年,OWASP峰会以及各国OWASP年会均取得了巨大的成功,推动了数以百万的IT从业人员对应用安全的关注以及理解,并为各类企业的应用安全提供了明确的指引。
OWASP被视为web应用安全领域的权威参考。2009年发布的美国国家和国际立法、标准、准则、委员会和行业实务守则参考引用了OWASP。美国联邦贸易委员会(FTC)强烈建议所有企业需遵循OWASP十大WEB弱点防护守则。
OWASP 颁布并且定期维护更新的web安全漏洞TOP 10,也成为了web安全性领域的权威指导标准,同时也是IBM APPSCAN、HP WEBINSPECT等扫描器漏洞参考的主要标准。
3. ZAP
OWASP ZAP,全称:OWASP Zed Attack Proxy攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助我们在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。
3.1 ZAP的工作原理
在安全性测试领域,安全性测试主要可以由以下几种测试策略来覆盖:
- 漏洞分析 - 对系统进行扫描来发现其安全性隐患
- 渗透测试 - 对系统进行模拟攻击和分析来确定其安全性漏洞
- 运行时测试 - 终端用户对系统进行分析和安全性测试(手工安全性测试分析)
- 代码审计 - 通过代码审计分析评估安全性风险(静态测试,评审)
ZAP主要是用于应用上述的第二种测试,即渗透性测试。
ZAP以架设代理的形式来实现渗透性测试,类似于fiddler抓包机制。他将自己置于用户浏览器和服务器中间,充当一个中间人的角色,浏览器所有与服务器的交互都要经过ZAP,这样ZAP就可以获得所有这些交互的信息,并且可以对他们进行分析、扫描,甚至是改包再发送。
3.2 ZAP下载
下载地址:github: https://github.com/zaproxy/zaproxy/wiki/Downloads
现在的稳定版本是2.7.0版,推荐下载windows64位安装包来初试安全性扫描机制。
3.3 ZAP安装
本文推荐的windows64位版的ZAP安装非常简单,跟普通的安装程序过程没有太大不同,本文不再赘述。
当然遗憾的是,现阶段ZAP的中文支持做得还不是很好,基本的操作界面以英文为主。
3.4 初步使用ZAP
进程保留:
初次打开ZAP时,会看到以下对话框,询问是否要保持ZAP进程。
保存进程则可以让你的操作得到保留,下次只要打开历史进程就可以取到之前扫描过的站点以及测试结果等。
一般来说,如果对固定的产品做定期扫描,应该保存一个进程做为长期使用,选第一或者第二个选项都可以。
如果只是想先简单尝试ZAP功能,可以选择第三个选项,那么当前进程暂时不会被保存。
设置代理:
打开ZAP以后看到的是如下界面:
在开始使用他进行渗透测试之前,如前文所述,首先需要将他设为我们的浏览器代理。
ZAP的默认地址和端口是标准的localhost:8080,如下图:
如果端口可用,接下来我们只需要去修改浏览器代理,以火狐为例:
在设置-常规-连接设置里,选择手动代理,并将http代理设为与ZAP一致:
完成这一设置以后,我们再用这个浏览器去访问站点时,都会通过ZAP这个中间人,于是这就给ZAP提供了抓包、分析、渗透测试的可能性。
快速测试:
ZAP右上方区域是快速测试窗口,可以开启非常傻瓜式的渗透测试:
输入网址,点击‘Attack’,搞定,so easy。
在快速攻击过程中,ZAP做了以下几件事:
- 使用爬虫抓取被测站点的所有页面
- 在页面抓取的过程中被动扫描所有获得的页面
- 抓取完毕后用主动扫描的方式分析页面,功能和参数
结果分析:
等待上述快速测试完成以后,我们就可以拿到ZAP提供的测试结果进行分析。
快速测试中,ZAP会产出以下一些产物:
- 被测站点地图及页面资源
- 所有请求、反馈记录
- 安全性风险项目列表
其中我们最关注的当然是安全性风险项,ZAP将做出以下标识:
由上到下分别为:高、中、低、信息、通过
在窗口最底部,切换到Alert界面,可以看到所有扫描出的安全性风险:
其中的所有风险项可以展开,ZAP在右侧窗口会对该风险项提供说明和解释,并且在右上部response区域高亮展示具体风险项由来(从反馈中分析得出的)。
如果只是简单的安全性测试需求,或者只是为了学习安全性测试知识,到这一步为止ZAP给出的风险项分析和报告,已经可以一定程度满足要求了。
通过主菜单Report选项,可以选择输出HTML、XML等多种格式安全性测试报告。
主动爬取网站
之前介绍了使用ZAP做为浏览器代理,配置好代理的情况下,使用浏览器进行任何站点的访问都会经过ZAP,这时就会在ZAP的context记录里留下该站点记录,如图:
右键点击需要测试的站点,选择Attack->Spider,弹出的选项窗口点击Start Scan,则会开始手动爬取网站。
主动扫描
与节操作类似,右键点击目标站点,选择Attack->Active Scan,就可以触发主动扫描:
扫描完毕后,同样可以切换到Alert界面,查看安全风险项,或者输出测试报告。
关于ZAP的入门使用就介绍到这里,学会以上使用技巧,就已经可以应付初级的安全测试需求了。
安全性测试:OWASP ZAP使用入门指南的更多相关文章
- 测试人员学Java入门指南
目标读者 本指南特别适合有Python基础的同学学习Java入门,对于没有任何编程经验的同学可能会存在困难. 为什么测试人员要学Java 选择Java,应该不错.TesterHome测试论坛知名大佬基 ...
- 安全性测试入门:DVWA系列研究(一):Brute Force暴力破解攻击和防御
写在篇头: 随着国内的互联网产业日臻成熟,软件质量的要求越来越高,对测试团队和测试工程师提出了种种新的挑战. 传统的行业现象是90%的测试工程师被堆积在基本的功能.系统.黑盒测试,但是随着软件测试整体 ...
- 安全性测试:OWASP ZAP 2.8 使用指南(四):ZAP扫描移动应用安全
在做移动应用(APP,小程序等)测试时,需要关注应用安全性. ZAP是可以用来进行手机移动应用渗透性测试扫描的. 正因为ZAP是采用“中间代理”的形式,截取并扫描所有客户端与服务器的交互请求,作为客户 ...
- 安全性测试:OWASP ZAP 2.8 使用指南(一):安全测试基础及ZAP下载、安装
概览 本文意在对于OWASP's Zed Attack Proxy(ZAP)软件做一个基本使用指南介绍. ZAP是一个用于实施安全性测试的工具,即使没有很强的安全测试背景也可以很好的使用. 为了达到这 ...
- OWASP固件安全性测试指南
OWASP固件安全性测试指南 固件安全评估,英文名称 firmware security testing methodology 简称 FSTM.该指导方法主要是为了安全研究人员.软件开发人员.顾问. ...
- 安全性测试入门 (五):Insecure CAPTCHA 验证码绕过
本篇继续对于安全性测试话题,结合DVWA进行研习. Insecure Captcha不安全验证码 1. 验证码到底是怎么一回事 这个Captcha狭义而言就是谷歌提供的一种用户验证服务,全称为:Com ...
- 安全性测试入门:DVWA系列研究(二):Command Injection命令行注入攻击和防御
本篇继续对于安全性测试话题,结合DVWA进行研习. Command Injection:命令注入攻击. 1. Command Injection命令注入 命令注入是通过在应用中执行宿主操作系统的命令, ...
- kali linux 网络渗透测试学习笔记(二)OWASP ZAP工具扫描SQL injection漏洞失败
按照惯例,利用OWASP ZAP工具扫描SQL injection漏洞时,应该很快就可以扫描出来,但是在笔者进行扫描的时候,却遇到了以下状况: 这说明了该工具根本就没能够扫描出SQL注入的漏洞,不知道 ...
- 安全性测试入门 (四):Session Hijacking 用户会话劫持的攻击和防御
本篇继续对于安全性测试话题,结合DVWA进行研习. Session Hijacking用户会话劫持 1. Session和Cookies 这篇严格来说是用户会话劫持诸多情况中的一种,通过会话标识规则来 ...
随机推荐
- Mysql 查询条件中字符串尾部有空格也能匹配上的问题
一.表结构 TABLE person id name 1 你 2 你(一个空格) 3 你(二个空格) 二.查询与结果 select * from person where `name` = ? 无论 ...
- build.gradle使用gradle.property中定义的字段及乱码问题的解决
gradle.property文件可以用来定义一些字段 而这些字段可以被build.gradle文件引用到 例如:给大家贴出来一个gradle.property文件 # Project-wide Gr ...
- django优化和扩展(一)
mysql优化基础 进行django产品开发或上线之前,有必要了解一下mysql的基础知识,orm太过抽象,导致很多朋友对于mysql了解得太少,而且orm不像sqlalchemy那样可以跟mysql ...
- mvc中路由的映射和实现IHttpHandler挂载
首先我们了解一下一般的方法 我们只需要在web.config配置文件中做映射处理即可. 第一种形式: <system.web> <urlMappings enabled=" ...
- Mysql:查询每个月下的数据,根据状态或者年份的sql语句
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本次的MySQL开篇记录了一道面试题,我给其扩展一下 这面试题它难点在什么地方,不外乎是操作月份和将其展示的 ...
- 搭建Hadoop完全分布式
Centos7搭建hadoop完全分布式 虽然说是完全分布式,但三个节点也都是在一台机器上.拿来练手也只能这样咯,将就下.效果是一样滴.这个我自己都忘了步骤,一起来回顾下吧. 必备知识: Linux基 ...
- 传统IT公司/创业公司/互联网大公司的offer如何选择?[转载+原创]
背景介绍: 第一家工作的公司是一家跨国外企安全公司, 骄傲的称自己不是互联网公司而是传统软件公司, 第二家公司是当下最热的知识分享社区, 创业公司. 第三家公司是挤走谷歌, 曾一度称霸中国的搜索引擎公 ...
- 超实用的JavaScript代码段 Item1 --倒计时效果
现今团购网.电商网.门户网等,常使用时间记录重要的时刻,如时间显示.倒计时差.限时抢购等,本文分析不同倒计时效果的计算思路及方法,掌握日期对象Date,获取时间的方法,计算时差的方法,实现不同的倒时计 ...
- java基础之接口(抽象类与接口的区别)
概述 猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯的,这应该属于经过特殊的培训训练出来的,对不.所以,这些额外的动作定义到动物类中就不合适,也不适合直 ...
- nagios监控mysql主机,nginx,磁盘IO,网卡流量
http://blog.chinaunix.net/uid-28685162-id-3506260.html nagios安装完成,打开/usr/local/nagios/etc/nagios.cfg ...