渗透测试基础环境搭建
在编译安装 Nginx 之前,需要先安装必要的依赖库(编译器、正则表达式库、压缩库、SSL 库等)。现在我们需要修改 Nginx 的配置文件,让它能把 PHP 请求转发给 PHP-FPM。如果你选择了2(自定义路径 /home/centos/nginx)这一步不需要输入密码,直接回车就能进入 MySQL 命令行(因为。打开浏览器,在地址栏输入你的服务器 IP 地址(例如。如果看到了 PHP 信息页
1.1 Ubuntu 虚拟机安装及SSH 远程连接配置
-
详细教程:点击
1.2 系统初始化配置
安装完成后执行以下命令:
# 设置root用户密码
sudo passwd root
# 更新软件包列表
sudo apt update
# 升级所有已安装的软件包
sudo apt upgrade -y
# 处理依赖关系升级(可选)
sudo apt dist-upgrade
# 安装基本工具
sudo apt install -y \
curl wget git vim nano \
net-tools tree unzip zip
# 关闭防火墙(测试环境使用,生产环境请勿关闭)
systemctl stop ufw
systemctl disable ufw
# 禁用SELinux(Ubuntu默认未安装,可忽略)
setenforce 0
1.3 LNMP 环境搭建(源码编译方式)
LNMP = Linux + Nginx + MySQL + PHP
1.3.1 安装 Nginx 源码详细教程(解决无安装包问题)
准备工作:安装编译依赖环境
在编译安装 Nginx 之前,需要先安装必要的依赖库(编译器、正则表达式库、压缩库、SSL 库等)。
# 更新软件包列表
zxh2@ubuntu:~$ sudo apt update
zxh2@ubuntu:~$ ps -ef | grep unattended-upgrades
zxh2 118975 78217 0 21:02 pts/1 00:00:00 grep --color=auto unattended-upgrades
zxh2@ubuntu:~$ sudo kill -9 54730
zxh2@ubuntu:~$ sudo dpkg --configure -a
# 一键安装所有依赖
zxh2@ubuntu:~$ sudo apt install -y \
> gcc \
> make \
> libpcre3 \
> libpcre3-dev \
> zlib1g \
> zlib1g-dev \
> libssl-dev
简化:
sudo apt update
ps -ef | grep unattended-upgrades
sudo kill -9 54730
sudo dpkg --configure -a
sudo apt install -y \
gcc \
make \
libpcre3 \
libpcre3-dev \
zlib1g \
zlib1g-dev \
libssl-dev
下载 Nginx 源码包
直接从 Nginx 官方下载稳定版源码包(以 1.21.6 版本为例)。
# 进入 /usr/local/src 目录(习惯上在这里存放源码)
cd /usr/local/src
# 使用 wget 下载 Nginx 1.21.6 源码包
sudo wget http://nginx.org/download/nginx-1.21.6.tar.gz
解压源码包
下载完成后,解压源码包。
# 解压 tar.gz 包
sudo tar -xvf nginx-1.21.6.tar.gz
# 解压后会生成一个 nginx-1.21.6 目录,进入该目录
cd nginx-1.21.6
配置编译参数
在编译之前,需要使用 ./configure 脚本配置安装路径和需要的模块。
注意:
-
不要连续执行两次
./configure,第二次会覆盖第一次的配置。 -
安装路径要统一:如果你指定
--prefix=/home/centos/nginx,后面启动时就要去这个路径,而不是/usr/local/nginx或者其他路径。
1:安装到默认路径(我使用的路径)
# 配置:启用状态模块、SSL模块、替换模块
sudo ./configure \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_sub_module
-
安装后路径:
/usr/local/nginx
2:安装到自定义路径(如 /home/centos/nginx)
# 配置:指定安装路径 + 启用模块
sudo ./configure \
--prefix=/home/centos/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_sub_module
-
安装后路径:
/home/centos/nginx
编译与安装
配置完成后,开始编译和安装。
# 1. 编译(生成可执行文件)
sudo make
# 2. 安装(将文件复制到配置的安装路径)
sudo make install
启动 Nginx
安装完成后,我们需要启动 Nginx 服务。
如果你选择了1(默认路径 /usr/local/nginx)
# 进入 sbin 目录
cd /usr/local/nginx/sbin
# 启动 Nginx
sudo ./nginx
如果你选择了2(自定义路径 /home/centos/nginx)
# 进入 sbin 目录
cd /home/centos/nginx/sbin
# 启动 Nginx
sudo ./nginx
验证安装是否成功
1. 检查进程
# 查看 Nginx 进程是否在运行
ps -ef | grep nginx
如果看到 nginx: master process 和 nginx: worker process,说明启动成功。
浏览器访问
打开浏览器,在地址栏输入你的服务器 IP 地址(例如 http://192.168.XXX.XXX)。如果看到 "Welcome to nginx!" 欢迎页面,说明安装成功!
Nginx 常用命令
为了方便后续使用,这里补充几个常用命令(以默认路径 /usr/local/nginx 为例):
| 命令 | 作用 |
|---|---|
sudo /usr/local/nginx/sbin/nginx |
启动 Nginx |
sudo /usr/local/nginx/sbin/nginx -s stop |
立即停止 Nginx |
sudo /usr/local/nginx/sbin/nginx -s quit |
优雅停止 Nginx(处理完请求后停止) |
sudo /usr/local/nginx/sbin/nginx -s reload |
重新加载配置文件(平滑重启) |
sudo /usr/local/nginx/sbin/nginx -t |
测试配置文件语法是否正 |
1.3.2 安装 PHP 7.4
# 添加PHP源
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
# 安装PHP 7.4及常用扩展
sudo apt-get install php7.4 php7.4-mysql php7.4-fpm php7.4-curl php7.4-xml php7.4-gd php7.4-mbstring php-memcached php7.4-zip
# 验证PHP版本
php -v
# 切换PHP版本(如有多个版本)
update-alternatives --config php
找到并修改 PHP-FPM 配置文件
# 1. 找到 www.conf 文件(通常在这个位置)
cd /etc/php/7.4/fpm/pool.d/
# 2. 备份原配置文件(好习惯)
sudo cp www.conf www.conf.bak
# 3. 编辑配置文件
sudo vim www.conf
在 www.conf 中找到 listen 这一行,修改为监听 TCP 端口(方便 Nginx 连接):
; 把这一行注释掉(前面加 ;)
;listen = /run/php/php7.4-fpm.sock
; 添加这一行(监听本地 9000 端口)
listen = 127.0.0.1:9000
保存并退出(按 Esc,输入 :wq,回车)。
重启 PHP-FPM 使配置生效
# 重启 PHP 7.4-FPM 服务
sudo systemctl restart php7.4-fpm
# 查看状态,确保它在运行
sudo systemctl status php7.4-fpm
# 验证 9000 端口是否被监听
sudo netstat -lnt | grep 9000
配置 Nginx 以支持 PHP
现在我们需要修改 Nginx 的配置文件,让它能把 PHP 请求转发给 PHP-FPM。
# 1. 进入 Nginx 配置目录
cd /usr/local/nginx/conf/
# 2. 备份原配置文件
sudo cp nginx.conf nginx.conf.bak
# 3. 编辑配置文件
sudo vim nginx.conf
在 nginx.conf 中,找到 server 块,做以下两处修改
确保你的配置看起来和下面一模一样:
server {
listen 80;
server_name localhost;
# 这里必须有 index 关键字
index index.php index.html index.htm;
location / {
root html;
}
# PHP 处理块
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
保存并测试:
# 保存退出
# 按 Esc,输入 :wq,回车
# 再次测试配置
sudo /usr/local/nginx/sbin/nginx -t
测试并重启 Nginx
# 1. 测试 Nginx 配置文件语法是否正确
sudo /usr/local/nginx/sbin/nginx -t
# 如果显示 "syntax is ok" 和 "test is successful",说明配置正确
# 2. 重启 Nginx
sudo /usr/local/nginx/sbin/nginx -s reload
创建一个 PHP 探针文件测试
# 1. 进入 Nginx 的网页根目录
cd /usr/local/nginx/html/
# 2. 创建一个 info.php 文件
sudo vim info.php
输入以下内容:
<?php
phpinfo();
?>
保存并退出。
访问测试
打开你的浏览器,访问:http://你的服务器IP/info.php
如果看到了 PHP 信息页面(紫色的那个)就对了!!
1.3.3 安装 MySQL
# 安装MySQL服务器
apt-get install mysql-server
MySQL 安装成功
用系统 root 权限登录 MySQL(唯一正确的初始方式)
sudo mysql
这一步不需要输入密码,直接回车就能进入 MySQL 命令行(因为
auth_socket认证匹配系统 root 用户)。
修改 root 用户为密码认证并设置密码
在 MySQL 命令行中依次执行以下 3 条命令(注意替换成你自己的密码):
-- 修改root用户认证方式为mysql_native_password并设置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
-- 刷新权限使修改生效
FLUSH PRIVILEGES;
-- 退出MySQL
exit;
测试密码登录
root 用户 + 密码登录:
mysql -u root -p
执行后会提示
Enter password:,输入刚才设置的密码,回车即可成功登录。
创建普通用户zzz2并授权
如果想让系统用户zzz2也能登录 MySQL,可以创建对应的 MySQL 用户:
-- 登录MySQL后执行
CREATE USER 'zzz2'@'localhost' IDENTIFIED BY 'zzz2的密码';
-- 授予所有数据库的所有权限(生产环境请按需缩小权限)
GRANT ALL PRIVILEGES ON *.* TO 'zzz2'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
之后就可以直接用mysql -u zzz2 -p登录了。
错误说明
-
修改完密码后,必须加
-p参数才会提示输入密码 -
直接用
mysql -u root会尝试无密码登录会失败
1.4 宝塔面板快速搭建
- 官网:点击

- 打开Ubuntu,复制命令

宝塔面板优缺点
| 优点 | 缺点 |
|---|---|
| 操作简单,图形化界面 | 资源占用较高 |
| 功能全面,集成多种服务 | 历史上出现过安全漏洞 |
| 插件丰富,可扩展性强 | 商业化倾向明显,部分功能付费 |
| 备份还原方便,支持云端备份 | 自定义程度有限 |
| 社区支持好,文档详细 | 不支持 ARM 架构服务器 |
1.5 小皮面板(PHPStudy)
-
官网:点击(Windows 版)
1.6 Docker 环境搭建

Docker 是一种容器化技术,可快速部署渗透测试靶场和工具。
1.7.1 安装 Docker
apt-get install docker.io docker-compose
1.7.2 配置 Docker 镜像加速器(阿里云)
- 登录阿里云容器镜像服务:点击
- 获取专属加速地址
- 配置 Docker Daemon:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
- 重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置是否生效
docker info
1.7.3 配置 Docker 代理(可选,用于科学上网)
# 创建代理配置文件目录
sudo mkdir -p /etc/systemd/system/docker.service.d
# 创建代理配置文件
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://你的代理IP:代理端口"
Environment="HTTPS_PROXY=http://你的代理IP:代理端口"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
使用:
zxh2@ubuntu:~$ docker pull nginx
zxh2@ubuntu:~$ docker images
zxh2@ubuntu:~$ docker run -d -p 8080:80 a716c9c12c38
zxh2@ubuntu:~$ docker ps
https://vulhub.org/zh
# 克隆仓库
git clone --depth 1 https://github.com/vulhub/vulhub.git
# 进入任何一个漏洞目录
cd cd vulhub/...
cd vulhub/spring/CVE-2022-22947
# 启动环境
docker compose up -d

更多推荐
所有评论(0)