测试工程师是很多人迈进软件行业的起点。从负责很小的局部到把握整个产品的质量,每个人花费的时间长短不一——从功能到性能、可用性到容错性、从兼容性到扩展性、稳定性到健壮性……方方面面逐渐做广做深。

不过,大家逐渐发现,质量这条路的上升空间有层天花板,如果仅限于上面列举的内容但不够深入,固守着手工或半自动测试,则很难突破。很多处于这种状态的人会选择转型,去做产品经理、质量管理、配置管理等方向,甚至去做开发工作,以期获得更大的升职加薪空间。其实,测试的所谓出路未必,也绝不止上面种种,例如我在很多论坛上见到的各路性能优化大师们,在性能测试的方向上做得足够精深,是很受青睐和赏识的,收入自然也是丰厚的。而另一个方向,也是我今天要重点介绍的,则是安全测试。

如果说性能是伴随着互联网起步和电商等在线业务的爆发而崛起的刚性需求,那么安全则是在线业务成熟并进化路上欠下的最大债务,亟待解决。每天都有各式各样的网络欺诈、诱骗、盗窃,安全的互联网生活难道不应该成为每个网民的最低需求么?因此,市场决定了安全测试是一片蓝海,大有前途。

相信很多测试工程师和我有过同样的迷茫,想做自动化、想做性能、想做安全……但是入道无门。一方面企业在安全测试方面投入较少,除非进入圈内的企业,否则难以找到学习和积累的机会;另一方面可能是感觉安全测试有一定门槛,身边又没有资深的人给予指点,在繁重的测试工作压力下作罢。我时常庆幸这个时代入行的人,因为这个时代知识无所不在,只要利用好两样东西——一个是网络,而搜索引擎就是最好的导师;另一个则是圈子,多在业余参加论坛活动和技术分享会议,会很容易结识圈内的朋友,而这些技术大拿是乐于分享他们的经验和学习技巧的。

本人有幸加入了一款安全产品的初创团队,开始了安全测试的学习和摸索,正是源自一次技术分享活动。这个团队聘请了数位圈内资深的安全专家做顾问,在他们的指点下,我先了解了简单的网络攻防的概念和 OWASP 组织收集并整理的 TOP 10 安全漏洞,并复习了 Http 协议,以便于理解各种漏洞和攻击的原理。接下来,我便认识了一个词—— WebGoat。

这是一款由 OWASP 组织研发的开源安全测试和教学 web 应用,顾名思义,她包含所有最重要的安全漏洞,如 SQL 注入和 XSS 跨站脚本攻击等,每个漏洞类型作为一堂课程免费提供给所有人学习、尝试,如代罪羔羊一样任由人们折腾。她还提供提示和解决方案,以帮助同学们理解并收获成功的喜悦。下图就是 Webgoat 的主界面。

可以看到,左侧是课程的列表,以安全漏洞的首字母排序;右侧是对应的课程内容,包括:

  1. 对攻击的描述和对漏洞成因的分析
  2. 对漏洞的影响和后果的分析
  3. 对漏洞的防护方式
  4. 一个可以尝试的带漏洞的应用环境,攻击的目标说明,提示、最终解决方案以及 Java 源码。

下图是成功达成攻击目的后的课程页面:

看到这个形象且略带刺激的画面,你是否开始对直觉中冰冷黑暗的安全测试有了兴趣呢?通过这样的学习和尝试,有基础的测试人员可以很快掌握基本的渗透测试手段,以作为进一步学习的基础。

需要注意的是,使用 WebGoat 学习有以下要求:

  1. WebGoat 暂时似乎只有英文版,可见软件这一行缺不了基本的语言能力的;
  2. 部分课程需要使用源码自己编译再部署才能学习,这要求会基本的编译;
  3. 相当一部分课程需要使用 http 代理工具配合完成,需要对代理工具的原理有基本的理解,并且熟悉浏览器的代理配置;
  4. 由于很多漏洞是真对数据的窃取和篡改,所以要具备基础的数据库知识;

此外,利用好浏览器提供的 debug 工具也是提高学习效率的捷径。如在 Chrome 里打开开发者工具抓取网络请求和响应并分析其请求 header 和 body,可以更真实地看到网络应用是如何被攻击的。

说到这里,不能不提一下我们所做的安全产品——OneRASP。或许你们想象不到,这款产品在我学习使用 WebGoat 的过程中还发挥了不小的作用呢!RASP 即运行时应用自我保护,属于主动安全防护的概念,理解起来或许比较抽象。那么,到底 OneRASP 能怎样帮到学习安全测试的我们呢?

原来,WebGoat 固然提供了每种漏洞的攻击方法,并把效果展现了出来,但是攻击发生的具体位置还是看不到的。如前面的示例,数字类型的 SQL 注入可以使所有城市的天气信息一览无遗,那么具体是在源码的什么位置泄漏出去的呢?WebGoat 无法告诉我们,但是 OneRASP 可以——因为我们开发的安全探针可以植入 WebGoat 所在的容器 Tomcat,并在恶意请求访问数据库时发现并上报到可视化的 Web 控制台,使得攻击的手段和位置信息也一览无遗!如下图所示:


可见,OneRASP可以帮助我们理解攻击发生时的很多细节,并且可以定位到源代码的具体文件和具体行上。当然,这款产品的真正目的是帮助企业在不必立刻修复漏洞的情况下实现安全生产,用在学习上则是有点大材小用了,但毕竟锦上添花,何乐不为呢?

本文系 OneASP 质量架构工程师王新泉原创文章。如今,多样化的攻击手段层出不穷,传统安全解决方案越来越难以应对网络安全攻击。OneRASP 实时应用自我保护技术,可以为软件产品提供精准的实时保护,使其免受漏洞所累。想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

用 Webgoat 撬动地球,看安全测试的引路石!的更多相关文章

  1. paip.提高效率---微信 手机app快速开发平台—微网络撬动大市场

    paip.提高效率---微信 手机app快速开发平台-微网络撬动大市场   手机app快速开发平台 尤其适合crm系统,呼叫中心等业务功能...    作者Attilax  艾龙,  EMAIL:14 ...

  2. 我看TDD测试驱动开发

    今天在实验室给大家介绍了一下TDD和Docker,大家对TDD都比较感兴趣,包括老板,也问了一些问题. 还是从头来说TDD吧,TDD作为敏捷开发领域的领头军,充满魅力,同时也充满争议.一切从三大军规说 ...

  3. QTP基本方法4------手动写入信息到测试结果报告中

    可以使用写代码的方式添加结果信息到测试结果报告中. 结构:reporter.ReportEvent result,object,details,path result:状态:4种状态:micPass. ...

  4. 华为中兴借eBay出海 靠零售渠道撬动市场

    在跨境电商领域,大多数中国商家依靠“中国制造”的优势和价格战策略打拼出一条血路,在海外市场占领了自己的一席 之地.不过,山寨货纷纷出海的同时,中国本土的品牌商们也开始了探索海外市场之旅.目前,华为.中 ...

  5. css知识笔记:水平垂直居中(别只看,请实操!!!)

    css实现元素的水平垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目 ...

  6. css知识笔记:垂直居中(别只看,请实操!!!)

    css实现元素的垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

  7. css知识笔记:水平居中(别只看,请实操!!!)

    css实现元素的水平居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

  8. teprunner测试平台Django引入pytest完整源码

    本文开发内容 pytest登场!本文将在Django中引入pytest,原理是先执行tep startproject命令创建pytest项目文件,然后从数据库中拉取代码写入文件,最后调用pytest命 ...

  9. HTML5模仿逼真地球自转

    查看效果:http://hovertree.com/texiao/html5/8.htm 给我一个支点,我就可以撬动地球 阿基米德 下载 http://hovertree.com/down/h/ear ...

随机推荐

  1. 关于weight属性使用的一些细节

    之前被这个属性困扰过好久,今天一个偶然的机会,终于把这个搞清楚了,现在与大家分享一下. 假设我们要在一个LinearLayout布局中显示两个按钮,button1和button2,button2的宽度 ...

  2. VS2010项目转化为VS2008项目

    第一步: 打开VS2010项目的SLN文件有如下代码: Microsoft Visual Studio Solution File, Format Version 11.00# Visual Stud ...

  3. Linux Bash算数运算方法小结

    A= B= 方法1:let(中间无空格) let C=$A+$B 方法2:$[  ] C=$[$A+$B] 方法3:$(()) C=$(($A+$B)) 方法4:expr(中间有空格) C=`expr ...

  4. (转)一个form表单实现提交多个action

    方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 ...

  5. git使用备忘

    简单的记录下现在使用git的时候,暂时或者常用到的命令,纯粹自己备忘,没用到过的命令就不写了,日后有用到了在补充. 1.把远程仓库克隆到本地:git clone 远程地址 2.分支操作 新建分支:gi ...

  6. CentOS&nbsp;6.4&nbsp;图文安装教…

    点评:CentOS 6.4是最新的出的系统,这里分享下安装教程,有些设置大部分教程没出现过,特分享下,方便需要的朋友 CentOS 6.4 下载地址: http://www.jb51.net/soft ...

  7. 我的插件のinput文本框实现宽度自适应

    先来最后结果:DEMO 介绍一下如何让一个文本框的宽度能够随着文本框中的内容的宽度增长而增长,也就是能够实现宽度自适应效果. 代码实例如下: <!DOCTYPE html> <htm ...

  8. JS手动创建标签

    代码: <html> <head> <title>js标签属性的添加</title> <script > function setxxx() ...

  9. JavaScript获取网页属性包括宽、高等

    function getWindowInfo() {var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidt ...

  10. [转载]Oracle基础知识

    一.oracle安装过程略 二.sys用户和system用户 (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限 默认密码是change_onins ...