基于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博客我的博客園

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容