[黑客攻防技术宝典 Web实战篇]---解析应用程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通常配置一个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.Injection
2.Cross-Site Scripting (XSS)
3.Broken Authentication and Session Management
4.Insecure Direct Object References
5.Cross-Site Request Forgery (CSRF)
6.Security Misconfiguration
7.Insecure Cryptographic Stoage
8.Failure to Restrict URL Access
9.Insufficient Transport Layer Protection
10.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 这些常见的扩展名中。它们也许能够披露现有页面备份的文件。