基于Raspbian(树莓派)搭建web安全练习环境(二)

树莓派 网络安全 DVWA WooYun-DVWA bWAPP WackoPicko sqli-labs ZVulDrill MCIR OWASP Mutillidae II Hackademic

练习环境的搭建

搭建DVWA、DVWA-WooYun、bWAPP等练习应用需要服务器,经典的搭配就是LAMP了。笔者搜索相关资料后觉得nginx比Apache更适合树莓派,但无奈笔者尝试配置nginx均失败,搜索一番也找不到个所以然,故改用了Apache。根据DVWA的githubbWAPP的官网等信息,安装Apache、PHP5和MySQL(笔者用MariaDB代替MySQL好像 好像 好像 也没有什么问题)。

搭建服务器

  1. 安装 Apache

    sudo apt-get install apache2 
    
  2. 安装PHP相关

     sudo apt-get install php5 php5-gd libapache2-mod-php5 php5-mysql php5-curl
    
  3. 安装MySQL

    sudo apt-get install mysql-server 
    

    在安装数据库的时候需要设置数据库的密码,根据提示操作,记住密码即可。笔者安装的是MariaDB==


    安装MariaDB

MySQL远程登陆设置:

  1. 设置远程登录权限

    mysql  -uroot -p密码 
    
    
    
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.222' IDENTIFIED BY 'P@ssW0rd' WITH GRANT OPTION;
    /*允许root用户以 P@ssW0rd 密码从192.168.1.222(%则是任何地方)登陆*/
    
    FLUSH PRIVILEGES; -- 刷新,使修改生效
    
    SELECT user,password,host FROM mysql.user; -- 查看记录
    
    quit; -- 退出
    
  2. 设置MySQL允许远程连接

    设置允许远程连接是为了方便对mysql的操作,笔者在后面内容中对mysql的操作(例如导入数据库、创建数据库等)是从树莓派上演示的,笔者同样可以从电脑上连接远程操作。

     sudo nano /etc/mysql/my.cnf 
    

    ctrl+w搜索bind-address,将它注释掉

    # bind-address = 127.0.0.1
    

    重启MySQL

    sudo service mysql restart
    

    如果出现Job for mysql.service failed.错误,说明是配置文件出错了,查看一下是不是自己刚才修改了配置文件的什么,例如笔者就错误的修改了bind-address==,如果查不出来 就sudo apt-get purge mysql-server mysql-common卸载mysql后重新装,同时把缺少的包一同装上再重来即可。

    在电脑上用工具连接一下,如果还是远程连接失败,重启树莓派试试?或者可以查看一下防火墙的设置?

  1. 以上完成之后重启一下Apache

    sudo service apache2 restart
    

    笔者遇到Apache重启Job for apache2.service failed错误,笔者的解决的方法也是使用sudo apt-get purge apache2卸载Apache后再重装,就是这么玄学==,[笔者参考这](http://blog.csdn.net/u014271612/article/details/53765229

关于安装phpMyAdmin连接管理数据库,笔者认为可以不安装,因为不是很需要的。同时考虑到树莓派瘦小的身板,笔者认为MySQL都可以不在树莓派上安装,站库分离,可以远程连接。需要管理树莓派的数据库,建议使用电脑上的mysql连接管理工具(如果读者电脑上有的话,例如SQLyog、Navicat)连接管理。

测试服务器

打开浏览器输入树莓派的ip,看到Apache2 Debian缺省首页说明服务器正常运行。


apache默认首页

配置练习环境

注意!注意!!注意!!!笔者演示和安装是多个环境在同一站点,有可能在使用的过程中遇到未知的错误(很可能就是路径的问题)!如果可以,还是建议读者配置多站点或者一个一个环境的安装练习,练习完成删除再安装其他。

准备

  1. FTP软件用于上传文件到树莓派,还可以修改文件属性、重命名等操作,用root登录才能进行有效的操作。

  2. 下载一个php雅黑探针,下载DVWADVWA-WooYunbWAPPWackoPickosqli-labsOWASP Mutillidae IIZVulDrillMCIRHackademic Challenges(解压时sqli-labs提示什么什么已存在,选择覆盖即可)。

  3. 将解压后的tz.php和解压的文件夹(bWAPP解压后, 选bWAPP_latest中的bWAPP的文件夹,WackoPicko解压后把website文件夹里的东西和解压出来的current.sql文件)上传到网站的根目录 /var/www/html</font>,删除文件操作可以在FileZilla中右键删除。要注意WackoPicko!website文件夹里的所有东西要在默认的网站根目录下(多站点配置除外),否则配置会失败。

    记住文件夹对应的应用,修改文件夹的名称也要记住==。当然,读者可以动手尝试一下Apache的多站点配置,相关的一些配置说明在刚才的默认首页写有。

    站点服务器

上传完成后在浏览器中输入树莓派的即可浏览看到刚才上传的文件夹,点击访问tz.php,能看到服务器的相关信息,这说明服务器解析PHP正常。探针是多功能的,有PHPinfo,还可以检测MySQL连接是否正常。如果tz.php是空白的,再重新安装PHP试试?如果还是不行,重启再试试?


解析php

设置

配置练习坏境主要有两种方法,一是在本地修改配置文件好了之后再上传到树莓派,或是先上传文件到树莓派在树莓派上配置,二是通过git安装(部分支持)。两种方法修改的内容都是相同的。笔者主要演示的是第一种方法中的在树莓派上修改

DVWA和DVWA-WooYun**

DVWA-WooYun(乌云靶场)基于DVWA的修改的,同用一个数据库,配置方法一样。

点击dvwa 的文件夹会自动跳转到dvwa/setup.php页面,如果你的Setup Check里有状态是红的,则说明这些模块有问题,配置信息参考DVWA的github或者页面Instructions。

修改配置文件

sudo nano /var/www/html/dvwa/config/config.inc.php #编辑DVWA的配置文件
   
sudo nano /var/www/html/wooyun_dvwa/config/config.inc.php #编辑乌云靶场的配置文件

以下是笔者DVWA的配置信息

<?php
# 选择使用的数据库管理系统,一般是MySQL
$DBMS = 'MySQL';
#$DBMS = 'PGSQL'; #一般不用PGSQL,注释掉

# 设置DVWA的数据库变量.
$_DVWA = array();
$_DVWA[ 'db_server' ]   = '127.0.0.1'; # 数据库的ip,本地为127.0.0.1
$_DVWA[ 'db_database' ] = 'dvwa'; #数据库名就使用默认的dvwa,乌云靶场也是默认使用同样的数据库名
$_DVWA[ 'db_user' ]     = 'root';
$_DVWA[ 'db_password' ] = '数据库用户root的密码';

# PostgreSQL的数据库连接端口,用PGSQL才有用设置
$_DVWA[ 'db_port '] = '5432';

# 验证码设置要翻墙
# 以下密钥是来自poclist的CSDN博客http://blog.csdn.net/bfboys/article/details/52486044,感谢~
$_DVWA[ 'recaptcha_public_key' ]  = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';
$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

# DVWA的默认挑战等级,可以设置为'low', 'medium', 'high'或者 'impossible'
$_DVWA[ 'default_security_level' ] = 'low';

 #######################以下配置信息乌云靶场没有###########################

# PHPIDS(PHP入侵检测系统)的默认状态,可以设置为 开启'enabled'或者 不开启'disabled'.
$_DVWA[ 'default_phpids_level' ] = 'disabled';

# 冗余的PHPIDS信息,显示WAF防火墙拦截的原因
# 当设置PHPIDS的状态为disabled时,可以设置此值为 true 或者 false
$_DVWA[ 'default_phpids_verbose' ] = 'true';

?>

ctrl+o回车保存后 ctrl+x退出编辑器。

PHP相关功能需要到PHP配位文件中修改,其实在dvwa文件夹wooyun_dvwa文件夹下都有php.ini。

php配置文件

但是里面都有这样一句话This file attempts to overwrite the original php.ini file. Doesnt always work.在文件夹下的.htaccess文件好像也可以修改一些配置,笔者选择修改/etc/php5/apache2/php.ini

sudo nano /etc/php5/apache2/php.ini

使用组合快捷键ctrl+w搜索allow_url_includeallow_url_fopendisplay_errors

笔者是小白一个,所以基于挑战容易来配置,读者可根据需要自行修改,这是关于php.ini的官方文档

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
;是否允许远程打开文件
allow_url_fopen = On

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
;是否允许远程包含文件
allow_url_include = On

; http://php.net/sql.safe-mode
sql.safe_mode = Off

;magic_quotes_gpc这个选项已经PHP5.4中被移除。但好像在dvwa文件夹下的.htaccess文件可以设置

;以下设置好像笔者并感觉到没有起作用orz。。。
;显示出错误信息作为输出
display_startup_errors = On

;显示PHP的启动中的错误 
display_startup_errors = On

;html形式的错误信息
html_errors = On

ctrl+o回车保存后 ctrl+x退出编辑器

设置权限

sudo chmod -R 777 /var/www/html/dvwa/hackable/uploads/
sudo chmod -R 777 /var/www/html/dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt

重启Apache

sudo service apache2 restart

完成后访问/dvwa/即可


DVWAsetup

点击下面的Create / Reset Database按钮就可以创建或者重置数据库,创建完成后过一会会自动跳转到登录页面默认账号是admin,密码是password。开始吧,骚年!

DVWAsetup
DVWAindex

创建好DVWA后访问乌云靶场也可以用了。

wooyunDVWA
wooyunDVWA2


bWAPP

修改目录权限

sudo chmod 777 /var/www/html/bWAPP/passwords/ 
sudo chmod 777 /var/www/html/bWAPP/images/
sudo chmod 777 /var/www/html/bWAPP/documents/
sudo chmod 777 /var/www/html/bWAPP/logs/

修改配置文件

sudo nano /var/www/html/bWAPP/admin/settings.php

以下是笔者的配置文件

<?php

// 数据库连接设置
$db_server = "localhost";
$db_username = "root";
$db_password = '数据库用户root的密码';
$db_name = "bWAPP";

// SQLite数据库,使用默认就好
$db_sqlite = "db/bwapp.sqlite";

// 邮箱设置
$smtp_sender = "bwapp@mailinator.com";
$smtp_recipient = "bwapp@mailinator.com";
$smtp_server = "";

//   A.I.M.模式,笔者不太明白,望知情的读者告知,谢谢
// It can be used for testing web scanners and crawlers
// Steps to crawl all pages, and to detect all vulnerabilities without authentication:
//   1. Change the IP address(es) in this file to the IP address(es) of your tool(s)
//   2. Point your web scanners, crawlers or attack tools to this URL: http://[bWAPP-IP]/bWAPP/aim.php
//   3. Push the button: all hell breaks loose...
$AIM_IPs = array("6.6.6.6", "6.6.6.7", "6.6.6.8", "10.0.1.66");
$AIM_subnet = "6.6.6.0/30";

// A.I.M.模式中排除的文件
$AIM_exclusions = array("aim.php", "ba_logout.php", "cs_validation.php", "csrf_1.php", "http_verb_tampering.php", "ldap_connect.php", "ldapi.php", "portal.php", "sm_dos_2.php", "sm_obu_files.php");

// 邪恶模式,是蜜罐吗?笔者不太明白,望知情的读者告知,谢谢
// All bWAPP security levels are bypassed in this mode by using a fixed cookie (security_level: 666)
// It can be combined with the A.I.M. mode, your web scanner will ONLY detect the vulnerabilities
$evil_bee = 0;

// 设置账号密码
$login = "bee";
$password = "bug";

?>

ctrl+o回车保存后 ctrl+x退出编辑器。

浏览器访问/bWAPP/install.php,Click here to install bWAPP,点击here进行安装,稍等片刻提示bWAPP has been installed successfully!。再访问bWAPP文件夹即可,会自动跳转到login.php,输入刚才设置的账号bee,密码bug就可以开工了

bwapplogin
bwappindex


sqli-labs

sqlilabs解压文件夹下有个tomcat-files.zip,里面的关卡需要安装配置jsp,笔者就不演示配置了。(好吧ヽ(  ̄д ̄;)ノ,其实是笔者还不会将Apache和tomcat搭配。。。)

修改配置文件

sudo nano /var/www/html/sqlilabs/sql-connections/db-creds.inc

一下是笔者的配置

<?php

$dbuser ='root';
$dbpass ='数据库用户root的密码';
$dbname ="security";
$host = 'localhost';
$dbname1 = "challenges";

?>

ctrl+o回车保存后 ctrl+x退出编辑器。

访问/sqlilab/首页,点击左上角的Setup/reset Database for labs稍等片刻

sqlilabsdb

sqlilabs


WackoPicko

方法一:源码安装,参考WackoPicko的github

修改配置文件

sudo nano /etc/php5/apache2/php.ini

ctrl+w搜索short_open_tag ,去掉前面的分号,修改为

short_open_tag = On 

导入WackoPicko database进入MySQL

mysql  -uroot -p密码 < /var/www/html/current.sql

坑来了,MariaDB导入会报错 ERROR 1396 (HY000) at line 20: Operation CREATE USER failed for 'wackopicko'@'%'</font>笔者也不知道为什么。。。黑人问号.jpg

导入sql出错
导入sql出错2

应该是兼容性的问题吧,使用MySQL导入没有问题!

笔者MariaDB的导入数据库出错的决解方案:

  1. 先删除wackopicko数据库和名为wackopicko的用户,防止之前导入创建的数据报错

    mysql  -uroot -p密码
    
    drop database wackopicko; -- 如果不存在wackopicko数据库会报Can't drop database 'wackopicko'; database doesn't exist
    
    DELETE FROM mysql.user WHERE User = 'wackopicko'; -- 删除用户wackopicko
    
  2. 修改SQL文件

    sudo nano /var/www/html/current.sql
    
    /*
    这条语句
    CREATE USER 'wackopicko'@'%' IDENTIFIED BY 'webvuln!@#';
    替换为
    */
    
    INSERT INTO mysql.user (Host,User,Password) VALUES ("%","wackopicko",password("webvuln!@#"));
    

    ctrl+o回车保存后 ctrl+x退出编辑器。再次导入即可。

修改权限

sudo chmod 777 /var/www/html/upload

最后直接访问ip即可

WackoPickologin

方法二:通过git下载安装,参考WackoPicko的WiKi

github上的有的环境都可以通过这个方式下载安装和配置。

安装git

sudo apt-get install git-core

下载WackoPicko

cd /var/www/ #进入目录
git clone https://github.com/adamdoupe/WackoPicko.git #下载

导入数据库

如果已经使用过方法一,则MySQL中已经存在用户和数据库,导入会报错Can't create database 'wackopicko'; database exists,可以跳过这步

导入数据库有两种方式。

方法一:

手动导入

cd WackoPicko/ #进入目录
mysql  -uroot -p密码 < current.sql #导入数据库

方法二:

运行目录下的create_mysql_admin_user.sh文件,可能会出错,需要修改文件。

移动目录

sudo mv website/* /var/www/html

设置目录权限

sudo chmod 777 /var/www/html/website/upload

设置完成之后直接访问ip即可。

ZVulDrill

配置参考ZVulDrill的github

从ZVulDrill的github下载的压缩包中有漏洞注释版本ZVulDrill.zip,两个版本笔者认为用哪个都没什么问题。

创建并导入数据库

mysql -uroot -p密码 #登录数据库
CREATE DATABASE zvuldrill; -- 创建名为zvuldrill的数据库
USE zvuldrill; -- 切换数据库
SOURCE /var/www/html/ZVulDrill/sys/zvuldrill.sql; -- 导入数据库
quit; -- 退出

设置根目录

因为笔者的树莓派上并不是只有一个站点,所以没有将ZVulDrill文件夹下的文件直接部署在网站的根目录/var/www/html/,而是将整个文件夹放在网站根目录。

sudo nano /var/www/html/ZVulDrill/sys/config.php

以下是笔者的配置

<?php
//链接数据库
$host = 'localhost';
$username = 'root';
$password = '数据库用户root的密码';
$database = 'zvuldrill';
$dbc = mysqli_connect($host, $username, $password, $database);
if (!$dbc)
{
        die('Could not connect: ' . mysql_error());
}

//启用session
session_start();

//根目录
$basedir = '/ZVulDrill';  // 根目录是/加你文件夹的名称

//载入函数库
include_once('lib.php');
?>
zvuldrill

but。。。。。。发现这个平台有点有点"美中不足",比如注册或者登录用户名密码部分是空的会报404,比如登录后用户界面显示不正常。。。。。。

zvuldrillerror1

读者若是纠结,笔者的修复方案可以参考一下:

  1. 显示不正常是因为css的路径不对,修复方法如下

    sudo mkdir /var/www/html/ZVulDrill/user/css 
    sudo cp /var/www/html/ZVulDrill/css/* /var/www/html/ZVulDrill/user/css #把css复制到/user/css/
    
  2. 修复相关的php文件路径,编辑/user/user.php,在include_once('../sys/config.php');的后面加上$basedir = '..';即可。

修复userlogin后

修复后的效果 :-P


修复userphp后



MCIR

这个也是ZVulDrill的Chanllege里SQL注入绕过管理后台登陆的拓展练习。

修改配置文件

sudo nano /var/www/html/MCIR/sqlol/includes/database.config.php

以下是笔者的配置

<?php
$dbtype = 'mysqli';
$server = '127.0.0.1';
$port = '3306';
$username = 'root';
$password = '数据库用户root密码';
$database = 'sqlol';
$persist = '';

$hostspec = $username.':'.$password.'@'.$server.':'.$port;

?>

当然,你也可以配置PostgreSQL或者SQLite。修改完成之后直接访问/MICR/即可

MCIR


OWASP Mutillidae II

修改配置文件

sudo nano /var/www/html/mutillidae/classes/MySQLHandler.php 

修改以下语句

static public $mMySQLDatabaseHost = "127.0.0.1"; //数据库地址
static public $mMySQLDatabaseUsername = "root"; //用户名
static public $mMySQLDatabasePassword = "数据库用户root的密码";

ctrl+o回车保存后 ctrl+x退出编辑器,访问/mutillidae/即可

mutillidae

因为我们并没有进行https的相关设置,在点击Enforce SSL等涉及https链接时会显示Browsing via HTTP Forbidden。

Hackademic_Challenges

不需要配置,直接访问/Hackademic_Challenges/即可

Hackademic_Challenges


webug漏洞练习平台

这个平台是和我一起学习的朋友推荐给我的,这是webug的官网github,将网站的根目录传到树莓派Apache的根目录下/自己的文件夹即可。官网和下载压缩包中已经包含了详细的安装的方法了,我就不再复述。提醒读者注意一下在安装(包括各种cms)的时候运行sql文件时注意文件的编码,一些高级的功能需要安装cms才能使用。

webug练习平台


后记

闲置的树莓派算是利用起来了,在搭建环境的时候碰到了不少问题,基本是靠搜索引擎解决的。这是笔者的第二篇博客,从对编程感兴趣到现在的动手去实践,其中感悟感想不少,日后再专门写一篇记录吧。
业精于勤荒于嬉,行成于思毁于随。共勉!

本文同步发表在我的CSDN博客我的博客园

推荐阅读更多精彩内容