技术开发 频道

Web安全渗透测试之信息搜集篇

  测试错误代码

  我们对Web应用程序进行渗透测试时,通常会遇到许多应用程序或者Web服务器生成的错误代码。要想显示这些代码的话,需要使用一些特殊的请求,或者专门精心制作的工具。 这些代码对于渗透测试人员而言非常有用,因为它们揭示了数据库、缺陷及其他与Web应用程序直接链接的组件的大量信息。本节将分析一些常见的错误信息代码如何用于漏洞评估。在进行信息搜集时,要特别注意这些错误代码,因为它们对于下一步的工作帮助很大——提高工作效率,降低测试总用时。

  在搜索期间一个常见的错误就是HTTP 404 Not Found。通常情况下,该代码会提供底层Web服务器和相关组件的详细信息。举例来说:

  Not Found

  The requested URL /page.html was not found on this server.

  Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.7g DAV/2 PHP/5.1.2 Server at localhost Port 80

  这个错误消息可能是在请求一个不存在的URL的时候产生的,它会提供Web服务器版本、操作系统、模块及其他相关产品等有用信息。当我们调查操作系统和应用类型的类型和版本的时候,这些信息是十分重要的。

  在进行安全审计时,Web服务器不仅会返回有用的错误信息,例如可以考虑一下如下所示的出错信息例子:

  Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

  [DBNETLIB][ConnectionOpen(Connect())] - SQL server does not exist or access denied

  怎么回事?别急,我们下面一步一步的加以介绍。在本例中,80004005是一个IIS错误代码,表示无法设立连接至相关数据库的连接。很多情况下,这个出错信息会给出数据库类型的详细信息。它通常会给出底层使用的操作系统,藉由该信息,渗透测试人员也可以规划相应的策略。

  通过控制传给数据库连接串的变量,我们可以得到更详尽的错误代码。

  Microsoft OLE DB Provider for ODBC Drivers error '80004005'

  [Microsoft][ODBC Access 97 ODBC driver Driver]General error Unable to open registry key 'DriverId'

  在本例中,我们可以看到一个常见的误差,它暴露出有关数据库系统的类型和版本,以及所依赖的Windows 操作系统的注册表项值。

  现在,我们考察一个实际的例子,测试一个连接数据库服务器失败并且没有正确处理异常的Web应用程序。这可能导致数据库名称解析问题,处理非预期的变量值或者其他网络问题。

  设我们具有一个管理数据库的web接口,它被用作一个前端GUI来发送数据库查询、创建表以及修改数据库字段等。在发送包含登录证书的POST请求期间,渗透测试人员会收到以下错误信息。这则消息表明存在一个MySQL数据库服务器:

  Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

  [MySQL][ODBC 3.51 Driver]Unknown MySQL server host

  如果我们发现登录页面的HTML代码存在数据库IP的隐式字段的话,我们就可以尝试在带有数据库服务器地址的URL中设法改变这个值,以便让应用程序误认为登录成功。

  另外一个例子是,如果知道Web应用程序使用的数据库服务器,我们可以利用该信息对这个服务器进行SQL注入攻击测试或者持久性XSS测试。

  IIS和ASP.net中的错误处理

  ASP .net是微软公司用于开发Web应用程序的框架;IIS是常用的Web服务器之一。 对于应用程序的错误,我们应设法多收集,但是要想覆盖每一个异常是不可能的。

  IIS使用一组定制的错误页面(通常位于c:\winnt\help\iishelp\common下面)来向用户显示类似“404page not found”之类的错误。这些默认的页面可以进行修改,并且可以为IIS服务器配置定制的错误消息。 当IIS收到一个aspx页面的请求的时候,就会将其传递给.net 框架.

  在.net框架中,处理这些错误的方法有多种。在ASP .net中,可以在三处处理这些错误:

  1.在Web.config customErrors部分中

  2.在global.asax Application_Error Sub中

  3.在Page_Error sub中的aspx或者相关codebehind页面

  使用web.config处理错误

  如果mode="On",则开启定制的错误功能;如果mode=RemoteOnly,将向远程Web应用程序用户展示定制的错误。从本地访问服务器的用户将看到完整的堆栈跟踪,但是无法显示定制的错误。

  所有的错误会导致一个重定向,也就是说被重定向到defaultRedirect(例如myerrorpagedefault)指定的资源。状态码404将由myerrorpagefor404.aspx进行处理。

0
相关文章