1. 靶场环境概述
网络安全实战训练离不开高质量的靶场环境,Pikachu靶场作为国内知名的Web漏洞练习平台,包含了SQL注入、XSS、CSRF等常见漏洞类型。不同于直接下载现成虚拟机镜像的方式,从零开始搭建能让我们更深入理解环境依赖和配置逻辑。
我最早接触Pikachu是在2018年的一次内部攻防演练,当时为了模拟真实业务场景需要快速部署多套隔离的漏洞环境。经过多次实践,总结出这套稳定可靠的搭建方案,特别适合需要自定义配置的安全研究人员。
2. 基础环境准备
2.1 系统与组件要求
推荐使用Ubuntu 20.04 LTS或CentOS 7作为基础系统,这两个版本在软件源兼容性和长期支持方面表现最好。以下是必须的组件及其作用说明:
- Apache 2.4:处理HTTP请求的核心服务
- PHP 7.3+:运行靶场网页代码的解析环境
- MySQL 5.7:存储用户数据和漏洞利用记录
- phpMyAdmin(可选):数据库可视化管理工具
注意:PHP版本必须≥7.3且≤8.0,避免语法兼容性问题。我在CentOS 8上测试PHP 8.1时曾遇到多个靶场功能异常。
2.2 依赖安装步骤
以Ubuntu为例的安装命令(带详细注释):
bash复制# 更新软件源并安装基础工具
sudo apt update && sudo apt install -y vim curl
# 安装LAMP环境(自动包含Apache+MySQL+PHP)
sudo apt install -y lamp-server^
# 验证组件版本
apache2 -v # 应显示2.4.x
php -v # 需确认7.3-8.0之间
mysql --version # 需5.7+
安装完成后需要调整的关键配置:
- 修改Apache默认目录权限:
bash复制sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www
- 配置MySQL安全选项:
bash复制sudo mysql_secure_installation
# 建议设置root密码并移除测试数据库
3. 靶场部署详解
3.1 源码获取与处理
官方Github仓库的代码需要做以下预处理:
bash复制cd /var/www/html
sudo git clone https://github.com/zhuifengshaonianhanlu/pikachu.git
sudo mv pikachu/* ./
sudo rm -rf pikachu README.md
文件结构应包含这些关键目录:
inc/:数据库连接和函数库pkxss/:XSS漏洞演示模块sql/:SQL注入相关案例
3.2 数据库初始化
创建专用数据库用户更安全:
mysql复制CREATE DATABASE pikachu;
GRANT ALL ON pikachu.* TO 'pika_user'@'localhost' IDENTIFIED BY 'StrongPass123!';
FLUSH PRIVILEGES;
然后导入初始数据:
bash复制mysql -u pika_user -p pikachu < /var/www/html/pikachu.sql
3.3 配置文件调整
修改inc/config.inc.php中的数据库连接信息:
php复制define('DBUSER', 'pika_user');
define('DBPWD', 'StrongPass123!');
define('DBNAME', 'pikachu');
define('DBHOST', 'localhost');
4. 安全加固措施
4.1 网络层防护
建议添加防火墙规则限制访问来源:
bash复制sudo ufw allow from 192.168.1.0/24 to any port 80
sudo ufw enable
4.2 服务配置优化
Apache安全调整:
apache复制# 在/etc/apache2/conf-available/security.conf中修改:
ServerTokens Prod
ServerSignature Off
TraceEnable Off
PHP安全设置:
ini复制# /etc/php/7.4/apache2/php.ini修改:
expose_php = Off
display_errors = Off
allow_url_fopen = Off
5. 常见问题排查
5.1 数据库连接失败
错误现象:页面显示"Could not connect to database"
排查步骤:
- 检查
config.inc.php中的密码是否含特殊字符需要转义 - 确认MySQL用户有远程连接权限(如需要)
- 查看MySQL错误日志:
tail -f /var/log/mysql/error.log
5.2 页面显示异常
典型表现:CSS/JS加载不全或PHP代码直接显示
解决方案:
- 确认Apache的rewrite模块已启用:
bash复制sudo a2enmod rewrite sudo systemctl restart apache2 - 检查文件权限:
bash复制sudo chown -R www-data:www-data /var/www/html
6. 靶场使用建议
6.1 教学场景配置
对于培训班环境,建议:
- 为每个学员创建独立数据库用户
- 定期备份数据库:
mysqldump -u root -p pikachu > backup.sql - 启用Apache访问日志分析学员操作
6.2 进阶改造思路
- 集成DVWA的难度分级功能
- 添加漏洞利用记录功能
- 开发自动化重置脚本:
bash复制mysql -u root -p pikachu < /var/www/html/pikachu.sql rm -rf /var/www/html/upload/*
这套环境我在三家企业的内训中实际使用过,最关键的教训是:测试前务必做好网络隔离,避免被外部扫描器误伤。曾经有次演练因为忘记关闭公网访问,导致服务器被植入挖矿程序。