首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

Sybase的攻击和防御是一个广泛的主题,因此本章试图提取问题的本质,并演示一些有趣的攻击和场景。在防御方面,如果可能的话,可以采取很多措施以增加攻击的难度。本章涉及了很多防御问题。

但是首先需要定位Sybase服务器并确定其配置。

14.1  发现目标

攻击Sybase服务器的第一步是在网络中定位服务器。本节描述了多种定位Sybase服务器的方法。

14.1.1  扫描Sybase

正如前面已经注意到的,Sybase通常监听一些众所周知的TCP端口—— 5000-5004、8181和8182。配置Sybase监听不同的端口是很容易的,但是这些众所周知的端口真的帮了大忙。使用端口扫描工具,例如Fyodor的nMap(http://www.insecure.org/nmap),是通过特定已知的开放端口定位主机的最好的方式。

如果可以在网络内远程访问Windows注册表,检查ODBC数据源将非常有用。在

HKEY_LOCAL_MACHINE\Software\ODBC

内仅仅搜索SybaseServerName和NetworkAddress就可以看到主机名、IP地址和配置在有疑问的主机上的任何ODBC数据源的TCP端口。

如果公司有LDAP基础结构,也可以使用LDAP查询。

14.1.2  Sybase版本号

Sybase身份验证失败的响应数据包内包含了服务器的主(major)版本号和次(minor)版本号,因此嗅探身份验证失败的数据包可以获得版本号。该数据包看起来就像如下所示:

Ethernet Header

...

IP Header

...

TCP Header

Source port: 5000

Dest port: 1964

Flags: 0x18 (ACK PSH )

...

Raw Data

04 01 00 4e 00 00 00 00 ad 14 00 06 05 00 00 00 (   N               )

0a 73 71 6c 20 73 65 72 76 65 72 0c 05 00 00 e5 ( sql server     )

23 00 a2 0f 00 00 01 0e 05 5a 5a 5a 5a 5a 00 01 (#        ZZZZZ   )

00 0e 00 4c 6f 67 69 6e 20 66 61 69 6c 65 64 2e (   Login failed. )

0a 00 00 00 00 fd 02 00 02 00 00 00 00 00        (                )

紧跟在字符串“sql server”后面的4个字节是版本号—— 0x0c=12,0x05=5,因此该主机的版本号是12.5.0.0。用这种方式取得版本号并不是故事的全部—— 需要去验证并select @@version以得到那些信息—— 至少能得到某种暗示。发送前述数据包的服务器实际上正在运行ASE 12.5.1。

利用轻微删简的身份验证数据包有可能得到Sybase服务器的版本号。根据我们的试验,即使设置了身份验证日志选项,被删简的身份验证尝试也不会被记入日志。这就很好了,因为我们并不真的要尝试身份验证;我们只想在错误响应中获得服务器的版本信息。

为了可以把失败与成功的身份验证尝试记录到日志中,执行如下命令:

sp_configure 'log audit logon failure', 1

sp_configure 'log audit logon success', 1

在本章的末尾您可以找到实现一个简化工具的C源代码,该代码实现了通过删简的身份验证数据包来获得Sybase版本。

14.1.3  窥探身份验证

在默认的“即开即用”(out of the box)配置内,Sybase以明文形式在网络上传递口令。这是一个如此明显和著名的安全风险,以至于几乎所有的公司都曾采用某种缓解措施—— 或者采用Sybase的建议并部署一种更高级的身份验证方式,例如Kerberos,或者使用加密的IPSec通道或类似措施。虽然如此,默认配置偶尔还是会出现,因此要留意从Sybase客户机到普通Sybase服务器端口5000-5004的通信量,那里也许很可能就有明文的口令。

因为支持多数本地数据库身份验证机制,也有可能发动中间人(man-in-the-middle)攻击。当攻击者假装是数据库服务器时,就会出现该场景。通常,攻击者将不得不侵入一台DNS或WINS服务器才能这么做,但是这依赖于网络内的名字解析基础结构,也许可以直接攻击。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论