黑客攻防技术宝典web实战篇:攻击应用程序架构习题

时间:2023-12-11 09:27:44

猫宁!!!

参考链接:http://www.ituring.com.cn/book/885

随书答案。

1. 假设受攻击的应用程序使用两台不同的服务器:一台应用程序服务器和一台
数据库服务器。已经发现一个漏洞,可以在应用程序服务器上执行任意操作系统
命令。是否可以利用这个漏洞获取保存在数据库中的敏感应用程序数据?

几乎可以肯定能够利用该漏洞获取保存在数据库中的应用程序数据。应用程序本
身必须拥有访问自己的数据所需的证书和权限。可以检查服务器端应用程序的脚
本和配置文件,以了解它如何访问应用程序。要对所发现的漏洞加以利用,一个
明显的方法是在 Web 根目录中创建一些新脚本,以执行任意查询并使用浏览器检
索查询结果。

2. 在另外一种情形中发现了一个 SQL 注入漏洞,可以利用它在数据库服务器上
执行任意操作系统命令。是否可以利用这个漏洞攻破应用程序服务器?例如,是
否可以修改保存在应用程序服务器中的应用程序脚本以及向用户返回的内容?

即使完全攻破了整个数据库服务器,也不一定有办法攻破应用程序服务器。通常,
应用程序服务器将数据库服务器作为数据库客户端访问,应用程序服务器并不以
任何其他方式信任数据库服务器。
但是,渗透测试员或许可以修改向用户返回的内容,因为其中一些内容将使用数
据库中包含的数据生成。例如,即使应用程序中不包含可以在它自身中触发的保
存型 XSS 漏洞,仍然可以通过直接修改数据库中的数据,将任意脚本注入应用程
序的响应中。如果可以通过这种方法攻击管理用户,就可以迅速攻破整个应用程
序。

3. 在攻击共享环境中的一个 Web 应用程序时,与 ISP 签订合约后,在所针对的
同一台服务器上获得了一些 Web 空间,允许向其中上传 PHP 脚本。
是否可以利用这种情况攻破目标应用程序?

PHP 语言包含许多强大的函数,可用于执行操作系统命令和访问文件系统。如果
能够修改由其他应用程序使用的文件,就可能攻破该应用程序。但是,攻击成功
的几率在很大程度上取决于 PHP 环境的配置,以及应用程序是否对在技术堆栈以
下执行的操作实施了任何控制。

4. Linux、Apache、MySQL 与 PHP 等架构组件常安装在同一台物理服务器上。为
何这样做会削弱应用程序架构的安全状况?

通常,如果将所有应用程序组件安装在同一台服务器上,将无法对这些组件进行
有效隔离。也就是说,如果攻击者攻破应用程序架构的其中一个组件,就能够迅
速攻破其他组件。例如,可以利用 Web 应用程序中的文件泄露漏洞从数据库中检
索包含敏感数据的文件。同样,可以利用 SQL 注入漏洞、使用数据库函数在服务
器文件系统上写入任意文件,在 Web 根目录中创建可以从浏览器访问的脚本,并
因此直接攻破应用程序层。

5. 如何找到证据来证明所攻击的应用程序由某个应用程序服务提供商托管?

可以对关键 URL 和参数名执行因特网搜索,以确定采用同名数据项的其他应用程
序。如果这些应用程序似乎包含大量相互重叠的共享功能,就可以调查它们的托
管位置,以获取其他证据。