Ubuntu 16.04 零环境搭建LAMP部署DVWA

Ubuntu 16.04 零环境搭建LAMP部署DVWA

  • Ubuntu 1604 零环境搭建LAMP部署DVWA
    • Apache安装
    • MySQL安装
    • PHP安装
    • 部署DVWA
    • 我觉得应该先看一下的

1. Apache安装

  1. 下载httpd源码并解压缩
    目前最新版为2.4.29,若是老版本记得在patches目录下查看是否有相应的补丁
  2. 查看官方说明文档 为什么就第一页是中文的 (╯‵□′)╯︵┻━┻
  3. 从官方文档中Requirements项看到我们需要
    • APR and APR-Util
    • PCRE
    • Disk Space 最少50M
    • ANSI-C Compiler and Build System
    • Accurate time keeping
    • Perl 5 (可选,当然选上好了,方便PHP和Apache的连接)
  4. Ubuntu 16.04 Desktop中有gcc、g++、
  5. 安装APR和APR-Util
    • 下载APR和APR-Util
    • 分别将APR和APR-Util解压到httpd源码文件夹/srclib/aprhttpd源码文件夹/srclib/apr-util 这里要把版本号去掉
  6. 安装PCRE
    • 下载解压源码包
    • ./configuresudo makesudo make install三件套

      这里要安装pcre,不要pcre2,若是pcre2的话会在最后编译Apache时提示有函数未定义(被移除了)

  7. 下载安装expat

    这个东西官方没说,但是编译的时候报错,提示缺少expat.h
    可以直接 apt-get install libexpat1-dev
    也可以从expat的git上的项目下载安装

  8. 配置编译选项

./configure --with-included-apr --with-pcre=/usr/local/bin/pcre-config
  1. 编译安装
sudo make
sudo make install
  1. 修改配置文件

    • 配置文件为/usr/local/apache2/conf/httpd.conf
    • 找到ServerName一项,将www.example.com:80改为localhost:80
  2. 启动测试

sudo /usr/local/apache2/bin/apachectl start
curl http://127.0.0.1

若返回

It works!

则启动成功

2. MySQL安装

  1. 下载源码,在官网选择对应自己的版本
  2. dpkg -i下载来的.deb包(Ubuntu对应的源码包为.deb格式)

  3. 下载安装Boost 1.59.0ncurses库 (其他版本不可用)

    • ncurses下载
    • boost下载
    • ncurses解压后./configuresudo makesudo make install三件套boost解压缩即可

    编译会出现问题,参见http://blog.csdn.net/weiyuefei/article/details/73287391自行解决
    删掉注释就好,105行的空行保留

  4. 进入源码文件位置/usr/src

  5. 按照官方文档安装官方文档是root下进行的
  6. 修改默认密码
    • 初始化时会创建随机密码,在命令行中显示,同时保存在/root/.mysql_secret文件中
    • 若是没有参考这篇文章的方法2把其中password换成authentication_string
    • 设置完之后退出mysql,sudo mysql.server stop停止mysql,sudo mysql.server start以正常方式启动,/usr/local/mysql/bin/mysql -uroot -p用新密码重新登录,执行操作时会提示设置密码 (这个地方不要用restart,restart之后启动的还是安全模式)
    • 使用SET PASSWORD FOR 'root'@'localhost'=PASSWORD('你的密码');

3. PHP安装

  1. 下载安装libxml2libxml2-dev
  2. 下载PHP源码并解压缩
  3. 查看说明文档官方文档给出一个在有 MySQL 支持的 Apache 2 上进行配置的范例
  4. 关闭apachesudo /usr/local/apache2/bin/apachectl stop
  5. 配置编译选项

    ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
  6. 编译并安装

    sudo make 
    sudo make install
  7. 配置php.ini
    可以编辑 php.ini 来设置 PHP 运行时的选项。如果想要把此文件放到另外的位置,需要在步骤 4 添加 --with-config-file-path=/path 选项。

    sudo  cp php.ini-development /usr/local/lib/php.ini
  8. 编辑 httpd.conf 文件(默认在/usr/local/apache2/conf/)告知 Apache 将特定的扩展名解析成 PHP

    找到 IfModule dir_module
    DirectoryIndex修改为DirectoryIndex index.php index.html
    找到 IfModule mime_module
    下边添加 AddType application/x-httpd-php .php
    在默认web根文件夹下建立测试php页面test.php内容为

  9. 启动apachesudo /usr/local/apache2/apachectl start

  10. 浏览器访问127.0.0.1/test.php若可以看到php信息页面即为成功

    官方文档使用了新的办法来告诉Apahce来解析PHP,是为了避免潜在的危险,例如上传或者创建类似 exploit.php.jpg 的文件并被当做 PHP 执行,但是这样就没法做解析漏洞的实验了ヽ( ̄▽ ̄)ノ,不过DVWA里边没有

  11. 安装模块
    DVWA需要GD模块和pdo_mysql模块,GD模块需要一些依赖包(libpng、zlib、libjpeg),这里偷懒一下使用apt install 安装安装依赖环境

    sudo apt-get install python-dev
    sudo apt-get install libpng-dev
    sudo apt-get install libjpeg-dev
    sudo apt install autoconf
    • 安装GD模块
      • 进入gd拓展模块文件夹cd 你的php源码文件/ext/gd/
      • 使用phpize配置configure
      • ./configure编译配置
      • sudo make && make install
      • 记录下生成的Installing shared extensions:后边的路径,这个是你拓展模块的安装路径
    • 安装pdo_mysql模块
      • 方法同上
    • 修改php配置文件
      • 打开/usr/local/lib/php.ini(可能需要超级用户权限)
      • 找到 Dynamic Extensions
      • 在下边添加
      • extension = "拓展模块的安装路径/gd.so"
      • extension = "拓展模块的安装路径/pdo_mysql.so"
      • 顺便把dvwa需要的allow_url_include改成On

4. 部署DVWA

  1. 下载DVWA
  2. 将DVWA压缩包解压到web目录下(默认为/usr/local/apache2/htdocs
  3. 修改配置文件(dvwa下config/config.inc.php

    $_DVWA[ 'db_user' ] = '你的mysql用户名';
    $_DVWA[ 'db_password' ] = '你的密码';
    $_DVWA[ 'db_port '] = '你的端口';#默认是3306
    $_DVWA[ 'recaptcha_public_key' ] = '你的公钥';
    $_DVWA[ 'recaptcha_private_key' ] = '你的私钥';
    公钥和私钥在https://www.google.com/recaptcha/admin/create申请,也可百度一个直接拿来用或者直接不用(反正我没用也可以使)

  4. 为DVWA文件提供写权限

    sudo chmod a+w /usr/local/apache2/htdocs/dvwa/hackable/uploads/
    sudo chmod a+w /usr/local/apache2/htdocs/dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt

5. 我觉得应该先看一下的

  1. DVWA官方WIKI说不要用php7,2017年2月下的DVWA调用mysql_XXX()函数,这个函数在php5.5+版本被废除 (注意是废除) ,在php7中被移除,因此无法使用php7,但是最新版(2017年11月)的DVWA源码已经支持了php7,不知道是wiki没改,还是另有原因,未测试
  2. DVWA需要php的PDO拓展和GD拓展,可以在编译的时候添加配置选项 --with-gd[=DIR]--with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock,本教程是下载完DVWA才知道要这两个,因此在php安装之后独立安装,其方法同样可以安装其他拓展模块

你可能感兴趣的:(服务器管理实践)