Pentest Wiki Part2 漏洞评估
字数 1620 2025-08-29 08:32:00
MySQL数据库服务器安装与渗透测试指南
一、MySQL数据库服务器安装
1. 安装前准备
- 确保系统满足MySQL的最低要求
- 准备具有sudo权限的用户账户
- 确保系统已更新到最新版本
2. 安装方法
在Ubuntu/Debian系统上安装:
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
在CentOS/RHEL系统上安装:
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
3. 安全配置
运行MySQL安全安装脚本:
sudo mysql_secure_installation
此脚本将引导您完成以下配置:
- 设置root密码
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 重新加载权限表
4. 验证安装
mysql --version
sudo systemctl status mysql
二、MySQL渗透测试基础
1. 信息收集命令
| 命令 | 描述 |
|---|---|
select @@version |
显示MySQL服务器版本 |
select version() |
显示MySQL服务器版本 |
SHOW STATUS |
显示MySQL服务器状态信息 |
show VARIABLES |
显示所有的MySQL服务器变量 |
select user() |
查询当前数据库用户 |
SHOW VARIABLES LIKE '%datadir%' |
显示数据目录位置 |
2. 文件操作命令
| 命令 | 描述 |
|---|---|
select load_file('/etc/passwd'); |
加载文件到数据库中 |
select 0xnnnnnn... INTO OUTFILE '/path/to/filename' |
将数据写入文本文件 |
select 0xnnnnnn... INTO DUMPFILE '/path/to/filename' |
将数据写入二进制文件 |
三、FTP服务器渗透测试(Sulley框架)
1. Sulley框架简介
Sulley是一个Python编写的模糊测试框架,专门用于网络协议和文件格式的模糊测试。
2. PCMan FTP Server 2.0模糊测试示例
测试环境准备:
- 启动网络监控:
python network_monitor.py -d 0 -f "port 21" -P audit
- 启动进程监控:
python process_monitor.py -c audit\pcmanftpd_crashbin -p "PCManFTPD2.exe"
测试代码分析:
from sulley import *
# 定义FTP命令模糊测试语法
s_initialize("user")
s_static("USER")
s_delim(" ", fuzzable=False)
s_string("anonymous")
s_static("\r\n")
s_initialize("pass")
s_static("PASS")
s_delim(" ", fuzzable=False)
s_string("pass12345")
s_static("\r\n")
s_initialize("stor")
s_static("STOR")
s_delim(" ", fuzzable=True)
s_string("AAAA")
s_static("\r\n")
# 定义会话参数
SESSION_FILENAME = "pcmanftpd-session"
SLEEP_TIME = 0.5
TIMEOUT = 5
CRASH_THRESHOLD = 4
mysession = sessions.session(
session_filename=SESSION_FILENAME,
sleep_time=SLEEP_TIME,
timeout=TIMEOUT,
crash_threshold=CRASH_THRESHOLD
)
# 定义pre_send函数
def receive_ftp_banner(sock):
data = sock.recv(1024)
print(data)
mysession.pre_send = receive_ftp_banner
# 连接测试用例
mysession.connect(s_get("user"))
mysession.connect(s_get("user"), s_get("pass"))
mysession.connect(s_get("pass"), s_get("stor"))
# 定义目标参数
host = "192.168.1.107"
ftp_port = 21
netmon_port = 26001
procmon_port = 26002
target = sessions.target(host, ftp_port)
target.procmon = pedrpc.client(host, procmon_port)
target.netmon = pedrpc.client(host, netmon_port)
target.procmon_options = {
"proc_name": "pcmanftpd2.exe",
"stop_commands": ["wmic process where (name='PCManFTPD2.exe') call terminate"],
"start_commands": ["C:\\PCManFTP\\PCManFTPD2.exe"]
}
# 添加目标并开始测试
mysession.add_target(target)
mysession.fuzz()
3. 测试监控
可以通过网页界面(http://127.0.0.1:26000)查看当前测试状态
四、Jenkins服务器渗透测试
1. Jenkins安装
基本要求:
- Java 7或更高版本(推荐Java 8)
- 至少512MB RAM
安装步骤:
- 下载Jenkins.war文件
- 运行命令启动Jenkins:
java -jar jenkins.war
- 在浏览器中访问http://localhost:8080完成安装
安装日志关键信息:
INFO: Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
e019dca34bac4a30beca67b53e821f35
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
2. Jenkins常见漏洞
- 未授权访问漏洞
- 脚本控制台执行漏洞
- 凭证信息泄露
- 插件漏洞
五、SQL注入测试示例
1. 注入点识别
当URL参数直接用于数据库查询时可能存在注入漏洞,例如:
http://192.168.2.105/home.php?search=tom@gmail.com&Search=Search
2. 测试方法
- 添加单引号测试:
tom@gmail.com' - 使用布尔测试:
tom@gmail.com' AND 1=1 -- - 使用时间延迟测试:
tom@gmail.com' AND (SELECT * FROM (SELECT(SLEEP(5)))bAKL) --
3. 信息提取技术
- 使用UNION查询提取数据
- 使用基于错误的提取技术
- 使用基于时间的盲注技术
- 使用外带数据技术(OOB)
六、安全建议
1. MySQL安全加固
- 定期更新MySQL到最新版本
- 限制远程访问
- 使用最小权限原则
- 加密敏感数据
- 定期审计数据库权限
2. FTP服务器安全
- 禁用匿名登录
- 使用SFTP替代FTP
- 限制用户目录
- 启用日志记录
- 定期更新软件
3. Jenkins安全
- 启用身份验证
- 限制脚本控制台访问
- 定期更新Jenkins和插件
- 使用角色矩阵控制权限
- 定期备份配置和数据
本指南涵盖了从基础安装到高级渗透测试技术的全面内容,适用于安全研究人员和系统管理员进行安全评估和加固。