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

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

猫宁!!!

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

随书答案。

1. 何为强制浏览?可以通过它确定哪些漏洞?

强制浏览包括避开浏览器导航对应用程序功能访问顺序实施的任何限制。应
使用强制浏览测试多阶段过程或其他区域中的错误假设。通常,这些假设会导致
可以通过使用强制浏览加以利用的访问控制漏洞。

2. 为防止不同类型的攻击,应用程序对用户输入实施各种全局过滤。为防止 SQL
注入,它将出现在用户输入中的单引号配对。为防止针对一些本地代码组件的缓
冲区溢出攻击,它将超长的数据截短到适当的长度。这些过滤有什么问题?

如果在实施长度限制之前将引号配对,则通过在配对的两个引号之间截短输
入,就可以在输入中引入奇数单引号(请参阅第 9 章了解详情)。
如果在配对之前应用长度限制,仍然可以通过在有效载荷的开头插入大量单引
号,使该有效载荷充分放大,并使用位于有效载荷末尾的专门设计的数据来溢出
缓冲区,从而达到利用任何缓冲区溢出条件的目的。

3. 可以采取哪些步骤来探查某登录功能中是否存在故障开放条件?(列出想到
的各种不同测试。)

应使用所控制帐户的证书,多次重复登录过程,并以特定方式修改请求:
(a) 对于提交的每个参数,尝试提交一个空值,完全省略名称/值对,并使用不
同的值多次提交同一数据项。
(b) 如果登录过程包括多个阶段,应尝试以不同的顺序执行这些阶段、完全跳过
单个阶段、直接进入任意阶段,以及在不需要参数的阶段提交参数。
(c) 如果多次提交了同一数据项,应进行探查,以确定如何处理每个值,以及在
一个阶段确认的数据在后续阶段是否仍为可信数据。

4. 某银行应用程序采用一种非常安全可靠的多阶段登录机制。在第一个阶段,
用户输入用户名和密码。在第二个阶段,用户输入在物理令牌上显示的一个不断
变化的值,并通过隐藏表单字段重新提交前面输入的用户名。
可以立即发现的逻辑缺陷有哪些?

应用程序很可能单独执行这两个检查,根据一个用户名确认密码,根据另一个用
户名确认令牌值,然后为其中一个已确认的用户名创建通过验证的会话。
如果拥有自己的物理令牌的应用程序用户没法获得了其他用户的密码,他们就可
以作为该用户登录。相反,取决于该机制的运行方式,能够读取其他用户的令牌
值的用户或许可以作为该用户登录,而无需了解后者的密码。该解决方案的总体
安全状态将因此被明显削弱。

5. 在通过提交专门设计的输入探查一个应用程序中是否存在常见的漏洞时,应
用程序频繁返回包含调试信息的详细错误消息。有时,这些消息与其他用户造成
的错误有关。发生这种情况后,就无法令其再次发生。这表示应用程序存在什么
逻辑缺陷,接下来该如何处理?

这种行为表示错误消息功能不是线程安全的,将返回由任何用户生成的上一个错
误的详细信息。应同时使用两个不同的会话进行深入探查,以确认是否确实出现
了这种情况。如果确实如此,应使用一段脚本不断触发一条详细的错误消息,并
记录其内容中的任何差异,以获取与其他应用程序用户有关的有用信息。