堆栈回溯信息本身并不是漏洞,但是他们通常为攻击者揭露了有趣的信息。攻击者尝试通过恶意HTTP请求和改变输入数据来产生这些堆栈追踪信息。
如果应用程序响应的堆栈回溯信息没有很好管理,他们可能为攻击者揭示有用的信息。这些信息可能被用于进一步的攻击中。基于多种原因,提供调试信息作为产出错误的页面返回结果被认为是一项不好的操作实践。例如,他们可能包含应用程序内部工作信息,如相对路径或对象是如何被内部引用等信息。
有许多技巧能导致HTTP响应中发送异常消息。注意,在大部分情况下,这些信息将组织为HTML页面返回,也有异常消息作为SOAP的一部分或者REST响应返回。
可以尝试如下测试:
所有的上述测试可能导致包含堆栈回溯信息的应用程序错误消息。在手工测试的同时推荐使用一些模糊测试工具。
一些工具,比如OWASP ZAP和Burp代理能在你做其他渗透或测试性工作中自动探测到响应数据流中的这些异常信息。
搜索那些会被组织成字符串或输出流的可能发生异常的代码。比如,在JSP中的Java代码如同下面这样:
<% e.printStackTrace( new PrintWriter( out ) ) >
在一些情况中,堆栈追踪信息可能被特别的组织成HTML格式,需要小心访问这些堆栈信息元素。
搜索配置文件确认错误处理配置信息和使用的默认错误页面。比如,在Java中,可以在web.xml文件中找到这些配置信息。
[1] ZAP Proxy - https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project