您好,欢迎访问三七文档
WEB应用安全和数据库安全的领航者!杭州安恒信息技术有限公司•数据库概述•标识,认证•狭义授权•广义授权•Oracle安全•数据库攻击议题数据库概述数据库概述•数据库是存储在一起的结构化数据的集合。•类型–关系(Relational)–层次式(Hierarchical)–网络(Network)–面向对象(Object-oriented)–对象相关(Object-relational)•数据库管理系统(DBMS)是为建立、使用和维护数据库而设计的数据管理软件。如:DB2、Oracle、SQLServer等。Sqlserver数据库•由sybase发展而来,集成windows操作系统•关系型,RBAC的访问控制•SQLServer2000通过C2级安全性认证•历史严重问题:–UDP缓冲区溢出漏洞,sqlslammer–Sa默认空口令–弱加密认证传输–―sqlinjection‖标识、认证sqlserver身份认证方式•用户需要两个阶段的身份认证,分别对应登录用户和数据库用户。–登录用户:是否具有连接服务器的资格–数据库用户:是否具有访问和操作数据库的资格•Windows认证模式VS混合认证模式•登录用户使用master库的sysxlogins存储帐户口令,口令以saltedSHA-1方式加密,由salt+casesens.hash+uppercasehash组成。sqlserver帐户口令•本地帐户口令检查–Usemaster–Selectname,Passwordfromsyslogins–多余帐户?空口令?•远程帐户口令检查–SQLCracker•练习:使用CAINSqlserver认证通信•通信方式,svrnetcn.exe–Tcp/ip–命名管道•Tcp/ip通信采用了弱加密的方式,几乎是明文–使用cain可以捕获并直接显示–Sqlserversniffer.exe•可以选择“强制协议加密”,但需要先安装证书狭义授权Sqlserver的角色•服务器角色–Systemadministrators,可执行任何操作。–DatabaseCreators,可创建和更改数据库。–……–只访问数据内容可不具备任何服务器角色。•数据库角色–Public–Db_owner–……–细化成select、insert、update、delete、exec–Select和update精确到列Sqlserver的视图•数据库视图提供了更细化的访问控制手段,对用户部分展示数据表的内容。•选取适当的字段显示•例如syslogins视图–CONVERT(sysname,password)ASpassword广义授权Sqlserver的组件安全•补丁安装•示例数据库–northwind、pubs•不必要的存储过程–Xp_cmdshell–Ole自动存储过程–注册表类–其它–删除用sp_dropextendedproc–恢复用sp_addextendedprocSqlserver的其它方面•文件–安装目录权限–数据库文件的权限–备份文件的权限•日志–错误日志–登录日志–事件探察器•网络–更改默认端口–SqlPingORACLE安全Oracle安全特性•VirtualPrivateDatabase(虚拟专用数据库)•Oracle标签安全与策略管理器•自加密•支持DES、DES3、HASH、MAC等算法。•历史严重问题:–默认帐号密码SYSTEM/MANAGER、DBSNMP/DBSNMP、SCOTT/TIGER–ListenerService空口令–缓冲区溢出–―sqlinjection‖–PL/SQL注入Oracle安全•标识–dba_users–dba_profiles–ListenerPassword•认证–限制ip•授权–ROLE:DBA、RESOURCE等–Privilege:SystemPrivilege如创建表;ObjectPrivilege如select、delete等。–Grant、revoke–Listener的ADMIN_RESTRICTIONSOracle安全•补丁安装•文件–$ORACLE_HOME/dbs/*.dbf–initsid.ora的O7_DICTIONARY_ACCESSIBILITY=FALSE•审计–init.ora的AUDIT_TRAIL=DB(none、os)–登陆审计auditsession、操作审计auditrole、对象审计audit…on…by…–SYS.AUD$数据库攻击•攻击SQLServer数据库•攻击Oracle数据库•SQL注入(SQLInjection)Web应用通常都会使用数据库,为用户提供读、写数据的能力。但是,大量的Web应用都存在SQL注入漏洞。什么是SQL注入(SQLInjection)呢?简单地说,SQL注入指攻击者通过修改WEB应用要发送给数据库的SQL语句,达到获得某些他想得知的数据(或完成某个操作)的目的。在后面的WEB应用安全培训的时候会细讲,这里就简单代过。•攻击SOLServer数据库•系统存储过程易于被黑客恶意滥用的SQLServer扩展存储过程:过程名称说明权限xp_cmdshell执行字符串指定的Windwos命令,并将输出以文本形式返回sysadminxp_dirtree返回整个目录树publicxp_dsninfo返回DSN(数据源名称)的信息sysadminxp_enumgroups提供Windows本地组列表或在指定Windows域中定义的全局组列表sysadminxp_eventlog返回指定的Windows事件日志sysadminxp_getfileddetails返回指定文件的文件信息publicxp_getnetname返回数据库服务器的NetBIOS名称publicxp_readerrorlog读取SQLServer出错日志sysadmin•攻击SOLServer数据库过程名称说明权限xp_logevent将用户定义消息记入SQLServer日志文件和Windows事件查看器。可以使用xp_logevent发送警报,而不必给客户端发送消息sysadminxp_logininfo返回有关Windows用户和Windows组的信息,包括账户、类型及权限级别publicxp_loginconfig报告SQLServer实例在Windows上运行时的登录安全配置sysadminxp_makecab创建保存在数据库服务器上的压缩归档文件sysadminxp_msver返回SQLServer版本和各种环境信息,包括操作系统版本和硬件信息publicxp_ntsec_enumdomains返回服务器能够访问的一组Windows域publicxp_regdeletekey删除注册表键值sysadmin•攻击SOLServer数据库过程名称说明权限xp_regwrite修改注册表键sysadminxp_servicecontrol启动或停止Windows服务sysadminxp_grantlogin授予Windows组或用户对SQLServer的访问权限sysadmin•许多系统存储过程对于数据库应用开发都十分有用,但在生产环境中许多系统都没有去除这些存储过程。曾经有一段时间,人们建议把最危险的存储过程彻底地从系统中删除,但这种做法会对数据库系统的其他方面造成重大的冲击。因此,现实的做法是,通过严格控制存储过程的使用权限,最大限度地降低他们所带来的安全风险。•攻击SOLServer数据库•连接字符串为了在Web应用中连接数据库,很多Web开发者采用硬编码方式将连接字符串定义在配置文件中,如web.config或global.asa。连接字符串的通常形式为:Trustedconnection:“Provider=SQLOLEDB;DataSource=MyDBServer;InitialCatalog=MyDB;IntegratedSecurity=SSPI;”SQLServerSecurity:“Provider=SQLOLEDB;DataSource=MyDBServer;InitialCatalog=MyDB;UserID=sa;Password=;”前面的几行中,假定SQLServer被配置为使用Windows认证。这种方法通常认为不存在风险,原因在于它没有披露用户名和口令。但是,后几行配置中,使用了SQLServer认证方式,用户名和口令直接书写在配置文件中,这里的用户名为sa,口令为空。•攻击SOLServer数据库•口令破解/暴力破解攻击SQLServer将用户名和口令存储在master数据库中的sysxlogins表中。口令使用名称为pwdencrypt()的存储过程散列。不幸的是,SQLServer不仅存储了口令的散列结果,而且是对口令进行大写归一化后散列,因此减少了口令的可用空间,使得暴力破解更简单一些。常用工具有SQLAT、SQLDict、FindSA、FindSADic等。•攻击SOLServer数据库•攻击SQLServer数据库•攻击Oracle数据库•扫描Oracle服务器–TNSListener找到了Oracle数据库服务器之后,首先要查看一下TNSListener,以此来了解它的一些基本信息,如服务器的版本号、OS及数据库服务。使用Listener控制程序(lsnrctl)就能够得到这些信息。在命令行输入lsnrtcl命令,然后使用set连接到数据库服务器上:LSNRCTLsetcurrent_listener10.1.1.1执行了这个命令之后,再发送的所有命令都传递给IP地址为10.1.1.1的机器上的TNSListener。之后我们运行version命令:LSNRCTLversionConnectingto(DESCRIPTION=(CONNECT_DATA=(SID=*)(SERVICE_NAME=10.1.1.1))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.1)(PORT=1521)))TNSLSNRfor32-bitWindows:Version9.2.0.1.0-ProductionTNSfor32-bitWindows:Version9.2.0.1.0-ProductionOracleBequeathNTProtocolAdapterfor32-bitWindows:Version9.2.0.1.0-ProductionWindowsNTNamedPipesNTProtocolAdapterfor32-bitWindows:Version9.2.0.1.0-ProductionWindowsNTTCP/IPNTProtocolAdapterfor32-bitWindows:Version9.2.0.1.0-Production,,ThecommandcompletedsuccessfullyLSNRCTL这里我们看到,Oracle数据库服务器运行在Windows操作系统上,服务器的版本为9.2.0.1.0。了解服务器的版本有利于我们寻找该服务器存在的、易于攻击的漏洞。下面我们获取数据库服务名称。•攻击Oracle数据库•扫描Oracle服务器–TNSListenerLSNRCTLservicesConnectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))ServicesSummary...ServiceORAXPhas1instance(s).InstanceORAXP,statusUNKNOWN,has1handler(s)forthisservice...Handler(s):DEDICATEDestablished:0refused:0LOCALSERVERServicePLSExtProchas1instance(s).InstancePLS
本文标题:数据库安全
链接地址:https://www.777doc.com/doc-1263023 .html