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模糊测试示例

测试环境准备:

  1. 启动网络监控:
python network_monitor.py -d 0 -f "port 21" -P audit
  1. 启动进程监控:
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

安装步骤:

  1. 下载Jenkins.war文件
  2. 运行命令启动Jenkins:
java -jar jenkins.war
  1. 在浏览器中访问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常见漏洞

  1. 未授权访问漏洞
  2. 脚本控制台执行漏洞
  3. 凭证信息泄露
  4. 插件漏洞

五、SQL注入测试示例

1. 注入点识别

当URL参数直接用于数据库查询时可能存在注入漏洞,例如:

http://192.168.2.105/home.php?search=tom@gmail.com&Search=Search

2. 测试方法

  1. 添加单引号测试:tom@gmail.com'
  2. 使用布尔测试:tom@gmail.com' AND 1=1 --
  3. 使用时间延迟测试:tom@gmail.com' AND (SELECT * FROM (SELECT(SLEEP(5)))bAKL) --

3. 信息提取技术

  1. 使用UNION查询提取数据
  2. 使用基于错误的提取技术
  3. 使用基于时间的盲注技术
  4. 使用外带数据技术(OOB)

六、安全建议

1. MySQL安全加固

  1. 定期更新MySQL到最新版本
  2. 限制远程访问
  3. 使用最小权限原则
  4. 加密敏感数据
  5. 定期审计数据库权限

2. FTP服务器安全

  1. 禁用匿名登录
  2. 使用SFTP替代FTP
  3. 限制用户目录
  4. 启用日志记录
  5. 定期更新软件

3. Jenkins安全

  1. 启用身份验证
  2. 限制脚本控制台访问
  3. 定期更新Jenkins和插件
  4. 使用角色矩阵控制权限
  5. 定期备份配置和数据

本指南涵盖了从基础安装到高级渗透测试技术的全面内容,适用于安全研究人员和系统管理员进行安全评估和加固。

MySQL数据库服务器安装与渗透测试指南 一、MySQL数据库服务器安装 1. 安装前准备 确保系统满足MySQL的最低要求 准备具有sudo权限的用户账户 确保系统已更新到最新版本 2. 安装方法 在Ubuntu/Debian系统上安装: 在CentOS/RHEL系统上安装: 3. 安全配置 运行MySQL安全安装脚本: 此脚本将引导您完成以下配置: 设置root密码 移除匿名用户 禁止root远程登录 移除测试数据库 重新加载权限表 4. 验证安装 二、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模糊测试示例 测试环境准备: 启动网络监控: 启动进程监控: 测试代码分析: 3. 测试监控 可以通过网页界面(http://127.0.0.1:26000)查看当前测试状态 四、Jenkins服务器渗透测试 1. Jenkins安装 基本要求: Java 7或更高版本(推荐Java 8) 至少512MB RAM 安装步骤: 下载Jenkins.war文件 运行命令启动Jenkins: 在浏览器中访问http://localhost:8080完成安装 安装日志关键信息: 2. Jenkins常见漏洞 未授权访问漏洞 脚本控制台执行漏洞 凭证信息泄露 插件漏洞 五、SQL注入测试示例 1. 注入点识别 当URL参数直接用于数据库查询时可能存在注入漏洞,例如: 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和插件 使用角色矩阵控制权限 定期备份配置和数据 本指南涵盖了从基础安装到高级渗透测试技术的全面内容,适用于安全研究人员和系统管理员进行安全评估和加固。