描述
攻击者发送随机的,畸形的或意想不到的消息到目标应用程序和所观察到的应用程序的日志或错误消息返回。最初攻击者不知道目标将如何应对各个消息,而是尝试大量的消息他们可能发现一个变种,触发的变体所期望的行为。在这种攻击中,起毛的目的是观察应用程序的日志和错误消息,尽管起毛目标有时也会导致目标进入不稳定的状态,引发崩盘。
扩展描述
通过观察日志和错误信息,攻击者可以学习目标应用程序的配置和细节可能会导致目标披露敏感信息。在应用程序返回一个堆栈跟踪和错误,这可以列举的方法导致了错误的出处。这不仅可以揭示方法的名称(其中一些可能知道弱点),但也可能类文件和库的位置以及参数值。在某些情况下,堆栈跟踪甚至可能配置或用户信息披露敏感。
攻击的可能性
典型的严重性
执行流程
探索
观察沟通和输入:起毛对手观察目标系统寻找输入和模块之间的通信,子系统或系统。
技术 |
网络嗅探。使用网络嗅探器,如wireshark对手观察通信的目标系统。 |
监控API执行。使用工具,如ktrace strace, APISpy,或另一个调试工具,观察系统调用和对手由目标系统的API调用,和它们的参数的性质。 |
观察输入使用web检查工具(OWASP WebScarab, Paros、TamperData TamperIE,等等)。 |
实验
春光生成输入:起毛的工具,一个目标输入或协议,和限制时间,复杂性,和输入,生成一个输入列表。尽管起毛是随机的,它并不详尽。参数长度等成分,有多少变化尝试重要从fuzzer最具成本效益的影响。
技术 |
边界情况。生成攻击边界的模糊输入情况下的协议字段,输入,或其他通信限制。例子包括0 xff和0 x00单字节输入。在二进制情况下,单个领域的方法每一位与开关(例如,0 x80)。 |
尝试系统调用的参数或api。包括有效载荷的变化,如果他们成功了,可能导致系统上妥协。 |
观察结果:观察输出输入fuzz送入系统,看看是否有任何日志或错误消息可能提供地图应用程序的信息
利用
工艺利用载荷:敌人通常需要修改起毛参数根据观察到的错误信息来为应用程序所需的敏感信息。击败相关性,对手可能会尝试改变原点IP地址或端浏览器识别的字符串或开始一个新的会话从他们离开的混淆。
技术 |
修改参数的模糊工具根据观察到的错误消息。重复直到应用程序已经足够有足够的参数映射。 |
如果应用程序拒绝大量的模糊信息相同的主机,对手需要隐藏攻击通过改变IP地址或其他凭证。 |
先决条件
技能要求
(级别:中等) 虽然模糊参数并不困难,通常可能与自动起毛工具,解释错误条件,修改参数,进一步将应用程序需要映射的过程中目标平台的详细知识,所使用的语言和包以及软件设计。 |
所需资源
起毛工具自动生成并发送消息变异,对于这种攻击是必要的。攻击者必须有足够的访问将消息发送到目标。攻击者还必须有能力观察目标应用程序的日志和/或错误消息以收集有关目标的信息。 |
后果
这个表指定不同的个体与攻击模式相关的后果。范围确定违反了安全属性,而影响了负面的技术影响,如果敌人成功的攻击。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能有高可能性模式将被用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
缓解措施
设计:构建一个“代码书”错误消息。使用代码书时,应用程序生成的错误消息并不是字符串或堆栈跟踪形式,但编目,取而代之的是一个独特的(通常是基于整数)值的编码错误。这种技术需要帮助台和接待人员使用“代码书”或类似的映射来解码应用程序错误/ logs为了正常反应。 |
设计:包装应用程序功能(最好是通过底层框架)在输出编码方案模糊或清理错误消息以防止此类攻击。这种技术通常用于与上述代码书的建议。 |
实现:使服务器的HTTP响应。 |
实现:隐藏内心的HTTP响应头的顺序。 |
实现:定制HTTP错误代码,如404年或500年。 |
实现:隐藏HTTP响应头的软件信息。 |
实现:隐藏饼干的软件信息。 |
实现:混淆数据库类型的数据库API的错误消息。 |
例子,实例
下面的代码将生成一个错误消息,泄漏的配置文件的完整路径名。
$ ConfigDir =“/ home / myprog /配置”; 美元uname = GetUserInput(“用户名”); ExitError(“坏黑客!”)如果(美元uname ! ~ / ^ \ w + /美元); $ file =“ConfigDir / uname.txt美元”; 如果(!(文件)美元- e) {ExitError(“错误:文件不存在”);} … 如果这段代码运行在一个服务器上,如一个web应用程序,那么请求人应该不知道什么是配置目录的完整路径名。通过提交一个用户名,不产生一个文件存在,美元攻击者可以得到这个路径名。它可以被用来利用路径遍历或符号链接后可能存在的问题,在应用程序。 |
在语言使用堆栈跟踪,他们可以给对手信息,让他们为应用程序映射函数和文件位置。下面的Java方法打印堆栈跟踪,使应用程序这种攻击模式。
公共空httpGet (HttpServletRequest请求,HttpServletResponse响应){
尝试{
processRequest (); }捕捉(例外的前女友){
ex.printStackTrace (response.getWriter ());
返回; } } 如果这段代码运行在一个服务器上,如一个web应用程序,那么对手可能导致异常打印通过起毛。 |
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
2014-06-23
(版本2.6) |
CAPEC内容团队 |
manbetx客户端首页 |
|
修改 |
修改日期 |
修饰符 |
组织 |
2018-07-31
(版本2.12) |
CAPEC内容团队 |
manbetx客户端首页 |
更新的引用 |
2020-07-30
(版本3.3) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Execution_Flow |
2020-12-17
(版本3.4) |
CAPEC内容团队 |
manbetx客户端首页 |
更新@ name、描述Example_Instances、Execution_Flow Related_Attack_Patterns Related_Weaknesses |
2021-06-24
(版本3.5) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Related_Weaknesses |
2021-10-21
(版本3.6) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Execution_Flow |
2022-02-22
(版本3.7) |
CAPEC内容团队 |
manbetx客户端首页 |
更新描述,Extended_Description |
2022-09-29
(版本3.8) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Example_Instances |
以前的条目名称 |
改变日期 |
以前的条目名称 |
2020-12-17
(版本3.4) |
起毛和观察应用程序日志数据/应用程序映射错误 |
|
|