今天闲来无事,想着重新搭建DVWA靶场耍耍,遂在宝塔面板上尝试搭建DVWA靶场,搭建过程中,发现访问php页面访问报错502状态码,于是就把排查解决过程中记录了下来,供大家参考。


(资料图)

一、宝塔面板搭建DVWA服务

1、创建站点

这里没有域名,“域名”参数使用IP加端口代替即可,如果没有对应的根目录,宝塔也会自动生成

注意:如果nginx服务的属组和属主是www,自己创建目录时务必将文件夹归属修改到www属组、属主下。

创建站点

访问81端口测试,站点创建成功。

站点创建成功

2、靶场文件上传到站点根目录

下载DWVA靶场压缩包并上传、解压到站点根目录

下载地址:https://github.com/digininja/DVWA

站点根目录

3、修改DVWA配置

(1)将config.inc.php.dist文件重命名为config.inc.php

config.inc.php配置文件

(2)修改配置文件config.inc.php中的数据库连接信息;这里可以不需要单独创建数据库用户,可以等后面“初始化数据库”时自动创建。

配置文件中的数据库连接信息

(3)正常来说,到这里后,是可以正常访问DVWA靶场了,只需要在网页上操作“创建数据库”即可;但测试访问DVWA的PHP页面 返回502状态码。这里可能是php进程有问题,需要结合访问日志、错误日志进一步排查核实。

访问PHP页面报错502

二、502状态码原因分析

1、php-fpm进程运行情况

查询PHP进程正常运行,排除php-fpm进程运行未启动的因素

ps命令查询php-fpm进程正常运行

2、服务器负载

也可能是服务器负载过高导致,但查询服务器近期负载很低;

服务器负载

3、Nginx日志

(1)查看nginx访问日志,status、upstream_status都是502,需要进一步查看错误日志

61.141.74.244 - - [19/Apr/2023:14:39:36 +0800] "GET /DVWA/index.php HTTP/1.1" 502 552 "-" "M

ozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0

.0.0 Safari/537.36"

(2)错误日志显示是unix:/tmp/php-cgi-74.sock连接失败导致,即这里php-fpm的listen是通过unix sock方式连接

nginx错误日志

2023/04/19 14:39:36 [error] 19696#0: *119185 connect() to unix:/tmp/php-cgi-74.sock failed (111: Connection refused) while connecting to upstream, client: 192.168.8.88, server: 192.168.1.168, request: "GET /DVWA/index.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi-74.sock:", host: "192.168.1.168:81"

但查询nginx与php-fpm的交互路径是通过http方式

php-fpm.conf文件配置:

listen = 127.0.0.1:9000

nginx与php-fpm的交互路径是通过http方式

3、fastcgi_pass为配置nginx与php-fpm的交互路径,一般有两种方式 :

(1)sock方式:fastcgi_pass unix:/tmp/php-cgi-74.sock;

(2)http方式:fastcgi_pass 127.0.0.1:9000;

任选其中一种即可,但必须和php-fpm的配置一致。

三、解决php-fpm 502状态码问题

1、创建对应的sock文件

创建sock文件,由于nginx、PHP服务使用的是www用户组、www用户权限,所以这里还需要赋予对应的属主和属组权限

touch /tmp/php-cgi-74.sock

chown www.www /tmp/php-cgi-74.sock

重启nginx、php进程,未解决;

2、修改nginx、php-fpm配置

(1)nginx配置文件中增加/修改以下配置:

location ~\.php$ {

root /www/wwwroot/dvwa_root;

fastcgi_pass unix:/tmp/php-cgi-74.sock;

fastcgi_index index.php;

include fastcgi.conf;

}

nginx配置文件

(2)同时,修改php-fpm的配置文件php-fpm.conf,把nginx与php-fpm的交互路径从http方式改为sock方式,于是这里将“listen = 127.0.0.1:9000”改为

listen = /tmp/php-cgi-74.sock

listen.owner = www

listen.group = www

listen.mode = 0660

php-fpm的listen配置

备注:php-fpm配置文件中不要使用注释符,否则启动时报错:

使用注释符导致报错-1
使用注释符导致报错-2

(3)至此,重启nginx、php-fpm进程后,DVWA靶场可以正常访问。

点击“Create/Reset Database”,等一两分钟创建完成后,即可正常访问DVWA靶场;默认密码是admin/password。

创建/重置数据库
DVWA靶场正常访问

结后语:这里

推荐内容