迄 今为止,我们介绍的攻击技巧全都需要与一个正在运行的应用程序进行交互;而且,从很大程度上讲,这些攻击主要由向应用程序提交专门设计的输入和监控其响应这两个步骤构成。本章将分析一种截然不同的漏洞查找方法:通过审查应用程序的源代码来查找漏洞。
在以下各种情况下,审查源代码有助于渗透测试员攻击目标Web应用程序。
一些应用程序为开源应用程序,或者使用开源组件,允许从相关资料库中下载它们的源代码,并从中寻找漏洞。
如果在提供咨询服务时执行渗透测试,应用程序所有者可能会允许查看应用程序的源代码,以提高审计的效率。
可能在应用程序中发现允许下载其源代码的文件泄露漏洞。
大多数应用程序使用某种客户端代码,如JavaScript;不需要任何权限即可访问它。
人们常常认为,如果想要进行代码审查,自身必须是一名经验丰富的程序员,并深入了解编写代码所使用的语言。然而,事实并非如此。一些编程经验有限的人也能够阅读并理解许多高级语言;同时,在Web应用程序常用的各种语言中,许多类型的漏洞的表现形式也基本相同。使用某种常规方法就可以完成绝大多数的代码审查,而且还可通过使用说明帮助理解所针对的语言与环境使用的相关语法及API。本章将介绍渗透测试员所需要的核心方法,并提供可能遇到的一些语言的使用说明。