[【申请转正】] DVWA靶场两种方式环境搭建

[复制链接]
anyonee 发表于 2018-4-13 12:48:18 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 1

本帖最后由 anyonee 于 2018-4-14 04:43 编辑

前言:
    记录一次发现问题,解决问题的思路和过程!
    (发贴,点击图片图标,网络图片提交后,编缉的时候还能显示图标,保存贴子发表后就显示图片地址,不显示图片?)    请教下......

windows本地环境搭建:步骤:1.phpstudy下载后直接安装即可,安装目录:D:\phpStudy,网站的根目录即:D:\phpStudy\WWW。然后开启phpstudy,点击启动。运行状态全部为绿色时,浏览器访问127.0.0.1或localhost可以看到下图所示即代表访问成功。
(phpstudy安装后启动有可能提示需要vc支持,可根据32位或64位自行下载安装)
http://blog..club/wp-content/uploads/2018/04/a999f7186b67c1b6758f065c4f41afbd.png

2.可以自行更改网站的根目录,需要配置对应web服务,如nginx配置文件:更改此处地址即可解析到对应的项目根目录路径,
若不更改根目录默认为:D:\phpStudy\WWW.(nginx-conf文件内容最后面包含了include vhosts.conf;所以我们只需更改vhosts_conf文件)
http://blog.yd-web.club/wp-content/uploads/2018/04/da31195315d9d5a17e169130dbacf601.pnghttp://blog.yd-web.club/wp-content/uploads/2018/04/f368bea70e2706184328e104cfede6a5.png

3.另外,也可以在站点域名管理里面更改,新增后点击保存即可。
不过2016版本的会重置vhost里面我新加的location内容try_files配置(上图)。所以个人不喜欢在这里直接修改或添加。
http://blog.yd-web.club/wp-content/uploads/2018/04/f25cc902a40603490535b5025aea8290.png
4.使用git clone DVWA项目地址,到E:/PHP/文件下面,然后解压即可。
http://blog.yd-web.club/wp-content/uploads/2018/04/6fb57e577fc52b3677c9ea8a45b69159.png
5.回到步骤2中的图,配置server_name:www.dvwa.com和root路径后。
再修改windows系统中host文件。文件底行添加:127.0.0.1 www.dvwa.com后保存即可。
系统修改需要管理员权限。此处添加完后,域名访问网页时DNS解析会优先本地host文件查到对应域名即解析www.dvwa.com到本机ip地址。

http://blog.yd-web.club/wp-content/uploads/2018/04/5bda24946eb9cca18de2fc2196e36ebe.png
6.启动phpstudy看到nginx和mysql全部为绿色时即可。
(一般情况80端口服务被占用,关闭相关进程重新启动即可。win 8/10开机默认占用80端口)
在PHPstudy打开【其他菜单选项 / 环境端口检测 / 环境端口检测】打开窗口后先后点击【检测端口】,【尝试关闭相关进程并启动】也可解决端口占用。(2016版配win10,我的不可以解决,需要手动。)win 8/10设置开机系统默认不占用80端口:1.以管理员权限运行c:windowssystem32cmd.exe ;2.C:WINDOWSsystem32>net stop http ;3.HTTP Service 服务已成功停止;4.C:WINDOWSsystem32>netstat -ano | findstr 0.0.0.0:80 ;5.C:WINDOWSsystem32>sc config http start=disabled ;6.[SC] ChangeServiceConfig 成功 ;7.打开注册表:win+r键 输入regedit ;8.找到:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesHTTP; 9.在右边找到Start这一项,将其改为0 ;10.重启系统,System进程将不会再占用80端口。访问www.dvwa.com即可看到站点布署成功。http://blog.yd-web.club/wp-content/uploads/2018/04/13850439893bb8fbd72d76e6afcf27a3.png
Centos7远程环境搭建:    远程服务器上初次搭建遇到挺多小问题,吐槽分析一下。    环境:nginx+php-fpm+php5.4.16+mariadb5.5.56
步骤:1.准备好云服务器后安装centos 7系统。以管理员的身份接入云主机,ssh: [email protected](mac下),win 下使用shell。
    安装nginx:
       yum install epel-release
       yum install nginx
    开启nginx服务:
      systemctl start nginx
此时访问服务器地址: http://服务器IP/即可看到nginx默认页面。
配置nginx之前访问ip地址是无响应地址,配置成功才有页面显示。
完成后将nginx加入开机自启动:
      sudo systemctl enable nginx.
***建议配置完后加上ngnix的basicAuth认证,毕竟是靶场***

2.数据库安装:
     yum install mariadb-server mariadb
  开启数据库服务:
     systemctl start mariadb
   设置数据库root密码:
    sudo mysql_secure_installation
当询问你是否设置root密码时输入Y回车,其他选项默认回车即可。
输入密码后设置成功界面如下:
http://blog.yd-web.club/wp-content/uploads/2018/04/4d66ba95e4ee53144b6e3c6c85f906a8.png
添加开机启动mariadb:
    systemctl enable mariadb

3.安装PHP,php-mysql和php-fpm。nginx不能直接处理php要把请求给fastcgi处理。php-fpm是fastcgi的一个管理器。
   安装:
       yum install php php-mysql php-fpm
  开始查看配置文件
       a.php的配置文件php.ini的默认路径:/etc/php.ini
       b.php-fpm配置默认路径:/etc/php-fpm.d/www.conf  
          php-fpm默认情况下监听端口 9000 。PHP-FPM可以使用Unix套接字,避免TCP的开销。  
          修改php-fpm配置vi打开配置文件:
               1)vi /etc/php-fpm.d/www.conf  
               2)listen=127.0.0.1替换成listen=/var/run/php-fpm/php-fpm.sock  
               3)设置listen.owner和listen.group,去掉分号注释,即可。  
               4)设置 user和group为nginx:user=nginx,group=nginx。  
               5)如果是apache也可以相应设置user=apache,gruop=apache。
          启动并加入开机启动php-fpm:
               systemctl start php-fpm  systemctl enable php-fpm
      c.配置nginx:配置文件地址 /etc/nginx/conf.d/default.conf
            server_name换上自己的域名或者服务器ip。
            我的是二级域名解析到服务器地址,所以用填写域名dvwa.web.com。
            root路径填写项目存放路径,与上述phpstudy配置类似。
            我的是/var/www/dvwa,Location中的fastcgi_pass一定要配置的与php-fpm的unix套接字路径一致。
            http://blog.yd-web.club/wp-content/uploads/2018/04/e245b281f48d2b41e11b09e98b6a5009.png

4.访问目标网站:服务器上新建/var/www/dvwa/test.php文件,内容为<?php phpinfo();?>
访问dvwa.web.com/test.php(你刚配置的server_name),如果显示为php的配置信息,即成功。
如图:
  http://blog.yd-web.club/wp-content/uploads/2018/04/85edb3c3de06c7a88bf7c7bca33a5c24.png

出现问题:问题一:
   我在访问/var/www/dvwa/test.php时,并没有显示页面而是直接下载了php文件.查找资料后发现可能是php-fpm.sock配置的问题, 查看/var/run/php-fpm/php-fpm.sock这个目录下面根本没有php-fpm.sock的文件。即nginx无法成功解析php文件。解决方法: 在nginx和php-fpm中配置好php-fpm.sock路径后,运行下面命令:   systemctl restart php-fpm.service   systemctl restart nginx.service之后,会自动在/var/run/php-fpm/目录下生成一个php-fpm.sock的文件重启后nginx和php-fpm服务后生效,访问dvwa.web.com/test.php成功
问题二:  
   本来以为这样后就ok,没想到在访问dvwa.web.com/setup.php的时候create\reset database,程序无反应,并未创建成功。http://blog.yd-web.club/wp-content/uploads/2018/04/a66f9abdfe9679debe93f5ed0ba83b75.png解决方法:  首先判断是数据库帐号和密码错误,然后修改/var/www/dvwa/config/config.inc.php文件。如果只有config.inc.php.dist文件的话再复制一个config.inc.php文件即可:  cp config.inc.php.dist config.inc.php。Vi打开文件修改如下图:更改root帐户的登录密码为上面步骤3中数据库设置的密码。 http://blog.yd-web.club/wp-content/uploads/2018/04/0f080a8b8915699ff8e894bdb801d2c0.png
问题三:
    本以为此次可以运行了,然后再次创建数据时,还是无响应,于是去看官方介绍,看到官方提醒kali默认安装mariadb用户不能用root用户登录。要新建一个数据库用户且创建dvwa的数据库并分配给该用户权限。于是mysql -uroot -p进入mysql进行如下操作:http://blog.yd-web.club/wp-content/uploads/2018/04/449ffab4f13e39e54602f2bcc30cec48.png记得每次操作了什么相关内容都要重启该系统服务,nginxt的php-fpm都是必需的。再次访问,发现还是不能创建数据。
问题四:
    确定数据配置是没错,再查询相关资料,发现有人指出setup.php页面配置需要全部为绿色问题(其实不是)。于是修改php.ini文件对应字段值(上面有介绍路径,相关字段配置可自行查阅),安装php_gd(linux默认好像没有安装,php图形相关),修改两个文件的权限chmod 777 文件路径。http://blog.yd-web.club/wp-content/uploads/2018/04/67558f510a002e51a32261bb87a4f788.png一切准备完了过后,本以为ok了,再次运行.(崩溃)发现还是不行。
问题五:
折腾N久中………
http://blog.yd-web.club/wp-content/uploads/2018/04/774401e6774f5699e9b2aed9a777fdb6.png
  最后开始在setup.php中加入打印日志,最终发现checkToken执行的时候是不通过的,查询源代码定位到会进入到文件/var/www/dvwa/dvwa/includes/dvwaPage.inc.php的dvwaRedirect()函数然后执行退出操作。http://blog.yd-web.club/wp-content/uploads/2018/04/0c31f0325272f8abe211708ec7753f27.png

解决方法:  
原因是user_token和$_SESSION[‘session_token’]值不一样, $_SESSION[‘session_token’]为空。
为何为空,继续查询打印发现当前页面是有写入session_token值的,通过函数generateSessionToken()。
反复提交创建数据,查询发现是访问setup,php的时候有session_token值,但提交创建数据到当前页面后session_token值为空。
怀疑是nginx配置错误导致。查询资料后,发现有人说php.ini的配置session.save_path默认值为/tmp,即php写入session文件时的路径是tmp。
然后确定tmp目录有写入权限,另外磁盘没有满。我都确认过无误。可还是不能访问。

真实原因:  
    最终在phpinfo信息中找到session.save_path的默认路径为: /var/lib/php/session,然后去对应的目录发现nginx所在的用户组确实没有写入权限,
直接chmod 777 /var/lib/php/session后再次创建,即可成功,也可以分配文件用户组权限chown root:nginx session。
http://blog.yd-web.club/wp-content/uploads/2018/04/6fd9cb0083503a64a89bd17cddf89ff7.png

思考: 最后为什么不是/etc/php.ini中的session.save_path的配置路径而是/var/lib/php/session路径呢?
因为php-fpm的配置文件最后两行重新设置了。 http://blog.yd-web.club/wp-content/uploads/2018/04/cec80c33bb56cea199442aeb69bd4061.png

总结:  寻找和解决问题的过程中,遇到过很多小问题。解决问题的过种就是了解新知识点和巩固旧知识的过程。


whichway1995 发表于 2018-4-14 14:34:44 | 显示全部楼层

正式成员|主题 |帖子 |积分 168

论坛不能帖外链图片吧
 楼主 anyonee 发表于 2018-4-15 01:37:11 | 显示全部楼层

正式成员|主题 |帖子 |积分 1

RE: DVWA靶场两种方式环境搭建

whichway1995 发表于 2018-4-14 14:34
论坛不能帖外链图片吧

发帖的时候,都是一张一张上传吗?我在图片处添加网络图片,也不会自动上传。也不支持粘贴操作?
whichway1995 发表于 2018-4-15 11:08:48 | 显示全部楼层

正式成员|主题 |帖子 |积分 168

RE: DVWA靶场两种方式环境搭建

本帖最后由 whichway1995 于 2018-4-15 11:10 编辑
anyonee 发表于 2018-4-15 01:37
发帖的时候,都是一张一张上传吗?我在图片处添加网络图片,也不会自动上传。也不支持粘贴操作?

可以批量上传完所有图片,编辑的时候需要哪张点哪张就行,你试试就知道啦,
没有说论坛就必须支持外链图片的吧
管理05 发表于 2018-4-23 11:11:26 | 显示全部楼层

管理|主题 |帖子 |积分 936

请将图片上传
快速回复 返回顶部 返回列表