当前位置:文档之家› [黑客攻防技术宝典 Web实战篇]---解析应用程序

[黑客攻防技术宝典 Web实战篇]---解析应用程序

通常配置一个Web 服务器,如下所示:1. 主机系统-windows/Linux 等2. Web 服务器软件---IIS/Apache/Tomcat 等3. Web 脚本—ASP//PHP/JSP 等4. 数据库--------Access/SQLSERVER/Mysql/Oracle国内外常见的配置如下:Windows+IIS + ASP/+Access/SQL server 2000/2005 Windows/Linux+Apach+php+Mysql Windows/Linux+tomcat+Jsp+Oracle当然还有一些其他的配置情况,依具体情况而论.从上图就可以大致看出所存在问题的环节,一个Web 服务器在成功提供服务的同时,也就存在着各种安全问题.如OWASP 所介绍: OWASP Top 10 for 2010 1.Injection2.Cross-Site Scripting (XSS)3.Broken Authentication and Session Management4.Insecure Direct Object References5.Cross-Site Request Forgery (CSRF)6.Security Misconfiguration7.Insecure Cryptographic Stoage8.Failure to Restrict URL Access9.Insufficient Transport Layer Protection10.Unvalidated Redirects and Forwards因此,如果想要成功渗透一台Web 服务器,就可以在下面列举的对象上下工夫. <1>.Web 脚本 ------------------------html/asp//php/jsp/cfm 等 <2>.Web 服务器软件---------------http/ftp/svn 等<3>.数据库-----------------------------Access/SQL Server/MySQL/Oracle 等 <4>.通讯机制--------------------------http/https 等 <5>.主机系统-------------------------windows/Linux 等 <6>.主机第三方软件---------------ftp/media/等<7>.其他----ddos 等还是那句老话,攻击应用程序的第一步就是收集和分析与其有关的一些关键信息,以清楚了解攻击的目标。

解析过程首先是枚举应用程序的内容与功能,从而了解应用程序的实际功能与运行机制。

我们可轻松确定应用程序的大部分功能,但其中一些功能并不明显,需要进行猜测和反复查明。

列出应用程序的功能后,接下来就是仔细分析应用程序运行机制的每一个方面,核心安全机制及其(在客户和服务器)使用的技术。

这样就可以确定应用程序暴露的主要受攻击面并因此确定随后探查过程的主要目标,进而发现可供利用的漏洞。

利用常规的spider 抓取,当然Web 抓取也有其局限性,对于特定的情形,也会力不从心。

根据实际情况,可以结合漏洞扫描程序抓取,例如:Burp Suite[Proxy] + Nikto. 常见工具:Paros ----- /projects/paros / Burp Suite ----- /burp / Fiddler2 ------- http:// /fiddler2/Sitemap-generators ---- /p/sitemap -generators /相比与基本的抓取方法,该技巧具有诸多优点。

1.若应用程序不常用或复杂的导航机制,可以常规方式使用浏览器来遵循这些机制。

用户访问的任何功能和内容将由代理服务器/爬虫工具处理。

2.用户控制提交到应用程序的所有数据,这样可确保满足数据确认要求。

3.用户可以用常规方式登录应用程序,确保通过验证的会话在整个解析过程中保持活动状态。

如果所执行的任何操作导致会话终止,用户可重新登录并继续浏览。

4.用于该技巧可从应用程序的响应中分析出链接,能够完整枚举任何危险功能,并能将其整合到站点地图中。

但是用户可以根据自己的判断决定请求或执行哪些功能。

1.蛮力技巧2.通过公布的内容进行推测3.利用公共信息4.利用Web 服务器常见的服务器上的隐藏内容如下:1.应用程序常常包含没有直接链接或无法通过可见的主要内容访问的内容和功能。

2.备份文件,如果返回动态页面,它们的文件扩展名可能以变成非可执行文件扩展名,可通过审查页面源代码查找可在主页中加以利用的漏洞。

3.包含Web 跟目录下(或根目录外)完整文件快照的备份档案,可以使用它迅速确定应用程序的所有内容与功能。

4.部署在服务器上,用于测试目的,但尚未在主应用程序中建立链接的新功能。

5.尚未从服务器中删除的旧版本文件。

如果使用动态页面,这些文件中可能包含当前版本已经修复,但仍然可以在旧版本中加以利用的漏洞。

6.配置和包含敏感数据(如数据库证书)的文件。

7.编译现有应用程序功能的源文件。

8.包含有效用户名,会话令牌,被访问的URL 以及执行操作等敏感信息的日志文件 9.发现隐藏的内容需要组合自动和手动技巧,而且往往需要一定的勇气。

1.蛮力技巧攻击者可以利用自动技巧提高应用程序的效率。

现在可以利用自动技巧向Web 服务器提出大量请求,尝试猜测隐藏功能的名称或标识符。

例如:Burp Suite 的Intruder 可用于获取目录,文件名,文件后缀。

有时候将Burp Suite 与某些扫描工具联合使用,会有意想不到的效果[Burp + Nikto ]。

Brute_force_attack- ----------- https:///index.php/Brute_force_attack burp suite ,wget ,WFuzz ,DirBuster ,Nessus, ,Nikto, ,Acunetix ,dirb ,WebRoot , Robots.txt …....etc.2.通过发布的内容进行推测许多应用程序对其内容与功能使用某种命名方案。

通过应用程序中已经存在的资源进行推断,可以调整自动枚举操作,提高发现其他隐藏内容的可能性。

检查用户指定的浏览器与基本测试获得的结果。

编辑枚举出的所有子目录名称,文件词干和文件扩展名列表。

检查这些列表,确定应用程序使用的所有命名方案。

有时候,不同内容的命名方案使用数字和日期作为标识符,通过它们可轻易推测出隐藏的内容。

检查所有客户端代码,如HTTP 和Javascript ,确定任何与隐藏服务端内容有关的线索。

例如:与受保护或没有建立链接的功能有关的HTML 注释以及包含禁用SUBMIT 元素的HTML 表单等。

通常,注释由Web 软件自动生成,或者由其运行的平台生成。

参考服务端包含文件之类的内容也特别有效,一般这些文件都是公开的,可被下载并且可能包含高度敏感的信息。

把已经枚举出的内容添加到其他根据这些列表推测出来的名称中,并将文件扩展名列表添加到txt ,bak ,src ,inc 和old 这些常见的扩展名中。

它们也许能够披露现有页面备份的文件。

搜索开发者工具和文件编辑器不经意建立的临时文件。

例如.DB_Store 文件,其中包含一个OSX 目录索引;或者file.php~1,它是编辑file.php 时临时创建的文件。

进一步执行自动操作,结合目录,文件词干和文件扩展名列表请求大量潜在的资源。

如果确定应用程序采用一套统一的命名方案,考虑在此基础上执行更具针对性的蛮力测试。

以新枚举的内容和模式作为深入用户指定抓取操作的基础,反复执行上述每一个步骤,继续执行自动内容查找。

所采取的操作只受到想象力,可用时间以及在所针对的应用程序中发现隐藏内容的重要性的限制。

3 利用公共信息应用程序的一些内容与功能可能并没有与主要内容建立链接,但过去曾经存在链接。

在这种情况下,各种历史记录中可能仍然保留隐藏内容的引用。

我们可以利用两类主要的公共资源查找隐藏的内容。

搜索引擎,如google 。

这些搜索引擎中保存有其使用的强大爬虫所发现的所有内容的详细内容,并且将这些内容保存在缓存中,即使原始内容已被删除,缓存中内容仍然不变。

相关的工具有Gooscan ,Sitedigger ,Wikto 等。

/wiki/Google_hackingWeb 档案,如 上的WayBack Machine 。

这些档案中保存大量Web 站点的历史记录。

许多时候允许用户浏览某个站点从几年前到现在于不同时期彻底复制的站点快照。

4.利用Web 服务器Web 服务器层面存在的漏洞有助于攻击者发现Web 应用程序中并未建立链接的内容与功能。

例如,Web 服务器软件中存在大量的程序缺陷,允许攻击者枚举目录的内容,或者获取服务器可执行的动态页面的原始来源。

如果存在缺陷,攻击者就可以利用它直接获得应用程序的所有页面和其它资源。

许多Web 服务器上默认包含有助于攻击者对其实施攻击的内容。

例如,样本和诊断性脚本中可能包含已知的漏洞,或者可被利用于某些恶意用途的功能。

而且,许多Web 应用程序整合了常用的第三方组件,执行各种常规功能。

Nikto---/WVS--- Appscan--- /software/awdtools/appscan / W3af --- http://w3af /等都是很好的工具。

当然,我们也可以针对指定的漏洞定制攻击。

迄今为止,我们讨论的枚举技巧实际上由如何概念化和分类Web 应用程序内容这种特殊的动机暗中推动。

这种动机源自于Web 应用程序出现之前的万维网时代,当时的Web 服务器是静态信息仓库,我们使用实际为文件名的URL 获取这类信息。

要公布Web 内容,只需简单生成一批HTML 文件并将其复制到Web 服务器上的相应目录即可。

当用户单击超链接时,他们浏览由公布者创建的文件,通过服务器上目录树中文件名请求每个文件。

虽然Web 应用程序的急速演变从根本上改变了用户与Web 交互的体验,但上述动机仍然适用于绝大多数的Web 应用程序内容和功能。

各种功能一般通过不同的URL 访问,后者通常是执行该项功能的服务端脚本的名称。

请求参数(位于URL 查询字符串或POST 请求主体中)并不告诉应用程序执行何种功能,而是告知应用程序在执行功能时,使用哪些信息。

有鉴于此,建立基于URL 的解析方法可对应用程序的功能进行有效分类。

但是,在某些应用程序中,基于应用程序“页面”的动机并不适用。

相关主题