小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇&数据库篇&MySQL&MSSQL&Oracle&自动化项目

文章目录

前记

  • 本节课是关于数据库权限提升的内容,主要介绍了三款主流的数据库:MySQL、MSSQL和Oracle的提权方式
  • 以介绍工具为主,实战的时候直接一把梭就完事了

权限提升------第一百三十四天

Windows权限提升篇&数据库篇&MySQL&MSSQL&Oracle&自动化项目

前置知识

所处位置
  • 还是老传统,本节课处在的位置是:
shell 复制代码
Web权限  -->  数据库权限  -->  计算机系统权限
MySQL、MSSQL、Oracle简介
  • 我们介绍这节课之前先来简单了解一下这三个数据库:
    1. MySQL:开源数据库,与 PHP、Python、Java 等语言集成良好,但功能相对简单,适用于网站、初创公司
      • 默认端口:3306
      • 最高权限默认账户:root
      • 是否默认支持外连:否
    2. MSSQL:又叫SQL Server,微软开发的闭源数据库,与 Windows 和 .NET 深度集成,适用于企业、政府
      • 默认端口:1433
      • 最高权限默认账户:sa
      • 是否默认支持外连:是
    3. Oracle:Oracle公司开发的闭源数据库,功能极为强大,适合企业关键业务,适用于金融、电信、大型机构
      • 默认端口:1521
      • 最高权限默认账户:SYS / SYSTEM
      • 是否默认支持外连:是
数据库提权流程
1、获取数据库账号密码
  • 如何获取网站的数据库账号密码呢?之前也讲过:
shell 复制代码
网站存在SQL注入漏洞
数据库的存储文件或备份文件
网站应用源码中的数据库配置文件
采用工具或脚本爆破账号密码(需解决外连问题)
2、利用数据库自动化提权项目进行连接
3、解决不支持外连的问题
  • 有的时候数据库并不支持从外网连接,这时候我们就需要让他支持外连,有两种方式:
    1. 利用已知Web权限建立代理节点,然后自动化提权项目在连接这个代理节点(等同于本地连接) ==> 隧道代理
    2. 利用已知权限执行SQL开启外联(让数据库支持外联) ==> 数据库配置
  • 第一种方法是内网的问题,这里暂时不讲,主要是第二种方式,只需要哥斯拉连接数据库之后执行如下命令即可:
MySQL(默认不支持外连)
mysql 复制代码
GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
flush privileges;
MSSQL(默认支持外连)
sql 复制代码
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
Oracle(默认支持外连)
sql 复制代码
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;

Web到Win - 数据库提权-MySQL

  • 提权的条件

    1. ROOT密码
    2. my.conf文件中的secure-file-priv为空
    3. 存在MySQL\lib\plugin目录
  • 提权的技术:UDF、MOF(Windows Server 2008之后废除)、启动项、反弹Shell

  • 我这里就用Windows Server 2022服务器搭建phpstudy + PHP7.3 + MySQL5.7 + Zblog来进行案例演示吧

  • 我们直接上传木马,然后哥斯拉连接:

  • 这里虽然是最高权限了,但是我们暂时不管,我们就假装是一个低权限用户

  • 然后我们看看这个网站有没有数据库文件,这里暂时不考虑其他的数据库架构,本质都是一个道理,我们找到在这个位置:

MDUT
  • 然后根据这个信息,直接尝试用刚才提到的工具连接数据库,比如MDUT:
shell 复制代码
java8 -jar .\Multiple.Database.Utilization.Tools-2.1.1-jar-with-dependencies.jar
  • 因为这里是MySQL,所以一般不允许外连,所以会提示失败,我们需要先经过哥斯拉连接这个数据库,然后将他的外连开启:

  • 此时再回到工具点击测试连接,就会发现连接成功了:

  • 然后我们直接尝试执行命令,这里不用UDF也可以成功:

  • 如果原始的执行不了,那就点击UDF提权,再执行命令,如果这里报错:

  • 那么就在C:\phpstudy_pro\Extensions\MySQL5.7.26下创建一个lib\plugin目录,因为它是 MySQL 5.1 以后唯一允许加载 UDF 的路径,所以必须把 dll/so 丢到这里,否则 mysqld 拒绝加载

  • 不过这里,我们使用的是这些集成化工具可能不会自带该目录,如果是手动搭建的话是有的;然后它和MySQL的版本也有关系,phpstudy中MySQL8又有该目录;搞不懂,反正实战下就是能提就提,提不了就跑路吧

Template
  • 这个工具的话,它支持的数据库和功能更多一些,然后它需要先生成配置文件:

  • 再解析这个配置文件,新增一个数据库连接:

  • 然后再选择MySQL Attack,尝试连接并进行提权:

  • 同样也是,直接就提权成功了:

Web到Win - 数据库提权-MSSQL

  • 提权条件:知道sa密码

  • 提权技术xp_cmdshellsp_oacreate、CLR沙盒

  • 这里我去尝试安装了一下SQL Server,太麻烦了,我就懒得弄了,有时间的可以下去复现一下

  • 这里就以小迪的演示为例吧,简单看一下,因为实战中也就是拿着工具直接扫,能提就提,不能提就跑路

  • 首先还是通过哥斯拉拿到Web权限,然后尝试翻出数据库信息:

  • 然后就通过哥斯拉自带的管理工具进行连接:

  • 连接成功,说明数据库配置信息没有问题,那我们就可以尝试工具提权了

MDUT
  • 和之前一样,打开工具直接连就好了:

  • 进去之后,就可以做个点鼠标的猴子,一个个试就可以了:

  • 有时候也会出现报错的情况,就先恢复,然后再激活组件:

RequestTemplate
  • 然后这个也是一样的,直接连接然后提权即可:

Web到Win - 数据库提权-Oracle

  • 提权条件:知道数据库账号密码
  • 提权技术:DBA、普通用户、注入模式
  • 也不多说了,都是一样的,遇到直接工具梭哈:

相关推荐
晚风_END10 小时前
Linux|操作系统|elasticdump的二进制方式部署
运维·服务器·开发语言·数据库·jenkins·数据库开发·数据库架构
devmoon10 小时前
Polkadot SDK 自定义 Pallet Benchmark 指南:生成并接入 Weight
开发语言·网络·数据库·web3·区块链·波卡
知识即是力量ol10 小时前
初识 Kafka(一):分布式流平台的定义、核心优势与架构全景
java·分布式·kafka·消息队列
玄同76510 小时前
Python Random 模块深度解析:从基础 API 到 AI / 大模型工程化实践
人工智能·笔记·python·学习·算法·语言模型·llm
爱吃生蚝的于勒10 小时前
【Linux】线程概念(一)
java·linux·运维·服务器·开发语言·数据结构·vim
数据知道10 小时前
PostgreSQL 故障排查:紧急排查与 SQL 熔断处理(CPU 占用 100% 等情况)
数据库·sql·postgresql
kong790692810 小时前
Nginx性能优化
java·nginx·性能优化
静听山水10 小时前
Redis的Pipeline (管道)
数据库·redis·php
Pluchon10 小时前
硅基计划4.0 算法 简单模拟实现位图&布隆过滤器
java·大数据·开发语言·数据结构·算法·哈希算法
我命由我1234510 小时前
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)
java·开发语言·后端·java-ee·intellij-idea·idea·intellij idea