测试开发必备技能:安全测试漏洞靶场实战

安全在互联网行业,是一个对专业性较强,且敏感的一个领域,所谓"一念成佛,一念入魔",安全技术利用得当,可以为你的产品、网站更好的保驾护航,而如果心术不正,利用安全漏洞去做一些未法牟利,则容易造成承担不必要的违法责任。

在日常很容易被大家忽略的一点,在非授权的情况下,对网站进行渗透攻击测试,也是属于非合规操作,是触及法律法规的。因此对于大家在学习安全测试过程中,通常建议是直接在本地直接搭建安全演练靶场环境,尽量避免直接对非授权的网站进行测试。

掌握安全测试是测试开发工程师进阶的一项硬技能,今天这篇文章,就来给大家分享两款常用安全测试演练靶场项目。

1. WebGoat

WebGoat是由OWASP组织研制出的用于进行Web漏洞实验的Java靶场程序。提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。

项目地址:

代码语言:txt
复制
https://github.com/WebGoat/WebGoat

1.1 安装前置条件说明

进入到项目地址,选择WebGoat的jar版本,由于WebGoat 8的jar文件已自带了tomcat和数据库,所以不需要再另外安装tomcat和mysql,只需要安装jdk用于运行jar文件即可。

需要说明的是,WebGoat8.0以上的版本,需要安装依赖JDK11以上。

下载完成后,其中:

  • webgoat-server-8.1.0.jar 对应的是webgoat服务,用于启动WebGoat
  • webwolf-8.1.0 另一个含有漏洞的辅助系统,非必需。

1.2 启动方法

通过java -jar xxx.jar分别启动webgoat和webwolf两个jar程序,例如:

执行成功后,就可以通过链接http://127.0.0.1:8080/WebGoat访问Webgoat。

首先需要注入一个账号,然后登陆后,按照WebGoat的侧边顺序一项一项进行测试。

目前WebGoat分为三类,LessonChallenges/CTFWebWolf

其中Lesson为课程,每个课程中包括漏洞描述,成因,以及练习,

WebWolf的启动方式基本一致,WebWolf的默认端口为9090,登录地址http://127.0.0.1:9090/WebWolf/login,WebWolf的账户与WebGoat是相通的,使用WebGoat的账户可以直接登录WebWolf。

2. DVWA

DVWA(Damn Vulnerable Web Application)是一款比较著名的漏洞靶场,采用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

官网:

代码语言:txt
复制
https://dvwa.co.uk/

DVWA共有十个模块,分别是:

  • 1.Brute Force(暴力(破解))
  • 2.Command Injection(命令行注入)
  • 3.CSRF(跨站请求伪造)
  • 4.File Inclusion(文件包含)
  • 5.File Upload(文件上传)
  • 6.Insecure CAPTCHA (不安全的验证码)
  • 7.SQL Injection(SQL注入)
  • 8.SQL Injection(Blind)(SQL盲注)
  • 9.XSS(Reflected)(反射型跨站脚本)
  • 10.XSS(Stored)(存储型跨站脚本)

2.1 搭建方法

如果是在Windows上搭建DVWA,安装过程主要分为两步:

  • phpstudy下载以及安装。
  • DVWA下载及配置。

1、 由于DVWA需要运行在有数据库/服务器等多种环境下,我们一般选用集成了这些环境的phpStudy: https://www.xp.cn/,这个工具可以在官网下载,如下:

2、下载完成,按要求,傻瓜式安装即可,安装完成后,打开启动ApacheMySQL两个服务。

3、下载DVWA,将压缩包解压到phpstudy的WWW目录下。并且找到DVWA\config下面的config.ini.php.dist文件,修改其中的用户名密码,按需修改即可。最后将后缀.dist删除,文件名为:config.inc.php,内容如下:

代码语言:txt
复制
<?php

If you are having problems connecting to the MySQL database and all of the variables below are correct

try changing the 'db_server' variable from localhost to 127.0.0.1. Fixes a problem due to sockets.

Thanks to @digininja for the fix.

Database management system to use

$DBMS = 'MySQL';
#$DBMS = 'PGSQL'; // Currently disabled

Database variables

WARNING: The database specified under db_database WILL BE ENTIRELY DELETED during setup.

Please use a database dedicated to DVWA.

If you are using MariaDB then you cannot use root, you must use create a dedicated DVWA user.

See README.md for more information on this.

$_DVWA = array();
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'root';
$_DVWA[ 'db_password' ] = '123456';
$_DVWA[ 'db_port'] = '3306';

$_DVWA[ 'allow_url_include'] = 'on';
$_DVWA[ 'allow_url_fopen'] = 'on';

ReCAPTCHA settings

Used for the 'Insecure CAPTCHA' module

You'll need to generate your own keys at: https://www.google.com/recaptcha/admin

$_DVWA[ 'recaptcha_public_key' ] = 'mikezhou';
$_DVWA[ 'recaptcha_private_key' ] = 'mikezhou';

Default security level

Default value for the security level with each session.

The default is 'impossible'. You may wish to set this to either 'low', 'medium', 'high' or impossible'.

$_DVWA[ 'default_security_level' ] = 'impossible';

Default PHPIDS status

PHPIDS status with each session.

The default is 'disabled'. You can set this to be either 'enabled' or 'disabled'.

$_DVWA[ 'default_phpids_level' ] = 'disabled';

Verbose PHPIDS messages

Enabling this will show why the WAF blocked the request on the blocked request.

The default is 'disabled'. You can set this to be either 'true' or 'false'.

$_DVWA[ 'default_phpids_verbose' ] = 'false';

?>

4、访问http://localhost/dvwa/setup.php,点击创建数据库。

5、创建成功,会自动跳转到登录页面,需要输入用户名密码。默认用户名:admin ,默认密码:password

到这里,我们已经完成了,安全漏洞靶场环境的搭建。怎么样,你学会了吗?

繁忙之余,原创不易,如果你觉得文章还不错,可点赞、转发、关注 ,因为这将是持续输出更多优质文章的最强动力!