科普:从基础开始谈Sql Server数据库渗透

本文详细介绍了SQL Server数据库的渗透测试,重点讨论了如何利用可信数据库的配置漏洞进行提权。通过设置实验环境,展示了如何利用TSQL、PowerShell和Metasploit进行自动化攻击,并给出了修复此类问题的建议,旨在帮助渗透测试人员、开发者和DBA理解SQL Server的安全隐患。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL Server允许DBA(数据库管理员)设置可信数据库。简单的说可信数据库就是可以进入外部资源,就像网络分享,Email function,其他数据库对象。这并不总是坏事,但是当系统管理员创建一个可信数据库但是没有将拥有权限设置完美,那么风险也就暴露出来了。在这篇文章中,我将展示用户普遍是怎样为Web应用创建数据库,当SQL Server数据库所有权配置不合理时我们怎么进行提权。我想渗透测试师,应用开发者,以及网络安全爱好者会喜欢这篇文。话说大多数DBA应该已经知道这些东西了。

我会提供基础的实验步骤指导,如果你认为没有性趣(Ps.小编任性了)可以随意挑着看:

Setting up a Lab

Attacking Vulnerable Databases

Automating the Attack PowerShell

Automating the Attack Metasploit

Automating the Attack via SQL Injection with Metasploit

Options for Fixing the Issue

创建实验环境
接下来我会提供一个实例来演示建立一个SQL Server服务器的基本步骤。

下载Microsoft SQL Server Express 并安装SQL Server Management Studio。

按照向导一步步安装SQL Server,但请确保开启了混合验证模式以及在本地开启了相关服务。

在安装使用SQL Server Management Studio程序时使用“SA”帐户登录SQL Server并进行设置。单击“New Query”(新建查询)按钮使用TSQL,下面就创建一个名为“MyAPPDb”的数据库吧。

-- Create database
CREATE DATABASE MyAppDb 
-- Verify sa is the owner of the application database
SELECT suser_sname(owner_sid)
FROM sys.databases
WHERE name = 'MyAppDb'

在这里插入图片描述
单击新建查询,使用TSQL,接下来我们我们创建一个名为“MyAppUser”的SQL Server用户。在真实场景中DBA会创建一个帐户用来连接数据库服务器。

-- Create login
CREATE LOGIN MyAppUser WITH PASSWORD = 'MyPassword!';

单击新建查询然后还是看到TSQL窗口。接下来为MyAppUser用户在MyAppDb数据库中分配权限。在真实环境中DBA可能这样做,这样一个SQL Server帐户登录后,就可以使用他能够使用的数据库。

-- Setup MyAppUsers the db_owner role in MyAppDb
USE MyAppDb
ALTER LOGIN [MyAppUser] with default_database = [MyAppDb];
CREATE USER [MyAppUser] FROM LOGIN [MyAppUser];
EXEC sp_addrolemember [db_owner], [MyAppUser];

确认MyAppUser已经添加了所有权。

-- Verify the user was added as db_owner
select rp.name as database_role, mp.name as database_user
from sys.database_role_members drm
join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)
join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)

在这里插入图片描述
设置MyAppDb数据库为可信

ALTER DATABASE MyA
PentestDB 1 介绍 本项目用于提供渗透测试的辅助工具、资源文件 1.1 辅助工具 提供轻量级的易扩展的工具,可以快速编写exploit、添加漏洞验证/扫描规则、添加指纹规则、爆破规则等;包含以下功能: Exploit系统。易扩展的exploit系统,能够使用API快速编写exploit,能够批量执行exploit 子域名爆破。爆破子域名,使用域传送、DNS爆破、GoogleHacking进行子域名爆破 C段扫描。C段扫描,支持生成html格式输出文件 服务端应用识别。识别CMS类型、Web服务器、操作系统、WEB中间件等 URI敏感资源爆破。爆破WEB敏感文件,整站备份、配置备份、敏感文件等 社工密码字典生成。根据社工信息生成密码爆破字典 Google Hacking。GoogleHacking,生成URL字典 编解码等功能。支持非常丰富的编解码方式,方便做payload编码 1.2 资源文件 各种渗透测试常用的资源文件,包括各种爆破字典、exploit、webshell、攻击payload等 2 安装 从这里下载最新版本,或使用命令 git clone https://github.com/alpha1e0/pentestdb.git clone到本地 PentestDB支持Windows/Linux/MacOS,需使用python 2.6.x 或 2.7.x运行 2.1 解决lxml依赖 项目中的脚本文件依赖于lxml linux系统一般默认安装lxml,如果没有可通过以下方式安装: pip install lxml apt-get install lxml yum install lxml windows可通过以下方式安装lxml: 到这里找到对应系统的安装包,下载到本地 安装安装包,pip install package.whl 2.2 解决nmap依赖 项目中的C段扫描依赖于nmap扫描器 到这里下载nmap相应版本 在windows下需要设置环境变量,让系统能够找到nmap.exe。 3 使用 3.1 常用脚本 项目中的python脚本提供用有用的渗透辅助功能,根目录下的pen.py为脚本入口,另外script目录下也有其他一些脚本。 3.1.1 Exploit系统 pen.py的exploit子命令提供了exploit模块相关操作,exploit模块是一个轻量级的exploit框架,可以编写各种web漏洞的exploit: 搜索exploit信息 增加、删除、修改exploit信息 执行某个exploit 搜索并批量执行exploit exploit保存在项目根目录下的exploit目录下 例如: # 列举、搜索、注册、更新、删除 pen.py exploit -l pen.py exploit -q appName:joomla pen.py exploit --register exploit pen.py exploit --update cms_joomla_3_4_session_object_injection.py pen.py exploit -d "Joomla 1.5~3.4 session对象注入漏洞exploit" pen.py exploit --detail "Joomla 1.5~3.4 session对象注入漏洞exploit" # 执行exploit pen.py exploit -e cms_joomla_3_4_session_object_injection.py -u http://127.0.0.1:1234 --attack pen.py exploit -s appName:joomla -u http://127.0.0.1:1234 --verify pen.py exploit -s appName:joomla -u @url.txt 注:有关exploit模块的详细信息请参考exploit/readme.md 3.1.2 服务端应用识别 pen.py的service子命令提供了服务端应用识别的功能,能够识别服务器信息,包括: 操作系统 web服务器 web中间件 CMS等 例如: pen.py service http://xxx.com # 开启CMS识别加强模式 pen.py service http://xxx.com --cms 3.1.3 社工密码字典生成 pen.py的password子命令提供了根据社工信息生成密码字典的功能,能够设置不同关键字生成密码字典
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值