栈溢出漏洞攻击原理及防护技术

栈溢出漏洞攻击原理及防护技术

ID:42611714

大小:87.00 KB

页数:4页

时间:2019-09-18

栈溢出漏洞攻击原理及防护技术_第1页
栈溢出漏洞攻击原理及防护技术_第2页
栈溢出漏洞攻击原理及防护技术_第3页
栈溢出漏洞攻击原理及防护技术_第4页
资源描述:

《栈溢出漏洞攻击原理及防护技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、栈溢出漏洞攻击原理及防护技术发布时间:2011年06月29日·o分享·推荐·打印·收藏文/H3C攻防研究团队现阶段的安全漏洞种类很多,包括大家熟悉的SQL注入漏洞、缓存溢出漏洞、XSS跨站脚本漏洞等。而栈溢出漏洞作为缓冲区溢出漏洞的一种特定的表现形式,在现实网络环境中比较普遍。本文将从栈溢出漏洞的原理、攻击形式及防护方法等方面进行介绍一、 栈溢出漏洞的原理栈溢出(StackOverflow)是在网络与分布式系统中被广泛利用的一种漏洞类型。在汇编中,以线程为线索的指令执行对函数的调用及局部变量的存取是依靠栈来实

2、现的,黑客可以使用特定的脚本语言,通过网络远程向对外提供业务的服务器进行攻击,利用对栈中数据的填充越界,实现有效的漏洞攻击。下面的例子对该过程进行了详细的描述:下面这段C代码的vulnerable_func函数用于完成对input字符串的临时存储及对变量isSafe的判断,同时主程序main中,分别对该函数进行正确及错误的参数输入,两相对比可以看出正常调用的栈处理赋值及不正常时的栈溢出情形。函数关键代码如下所示:int vulnerable_func(char*input){intisSafe=0;charv

3、ulnerable_var[16];strcpy(vulnerable_var,input);if(isSafe==0){printf("Checkerror!");return1;}printf("CheckPass!");return0;}intmain(intargc,char*argv[]){vulnerable_func("HelloWorld!");vulnerable_func("HelloWorld!AAAAAAAAAAAAAAA");return0;}通过特定的技术手段,调用查看

4、两种情况下函数调用的栈处理过程,得到的栈参数赋值如图1所示: 地址0013FEFC开始的16个字节为vulnerable_var变量在栈中的存储空间;地址0013FF0C为isSafe变量在栈中的地址;地址0013FF10为main函数EBP在栈中的地址;地址0013FF14为函数返回地址在栈中的存储地址图1正常栈与溢出栈对比图进一步分析可知,图1右图中超计划输入的数据覆盖了栈中isSafe变量、EBP和函数返回地址所在内存空间的内容,一般会引发数据混乱或程序崩溃。对于软件开发人员来说,这只是软件开发过程中诸

5、多错误中常见的一种内存越界错误,而对于安全人员来说这可能就意味着一个非常危险的安全漏洞。因为黑客会利用这种漏洞巧妙的构造出攻击输入以跳出原程序的设计逻辑,甚至执行任何攻击者想要执行的代码。二、 栈溢出漏洞的典型攻击方式栈溢出漏洞在客户端和服务器上均有可能存在,攻击者主要通过网络以远程方式进行攻击。对于客户端的攻击一般受NAT及防火墙阻隔的影响,需要搭建伪装的服务器通过社会工程学引诱用户访问,在回应用户访问时构造数据进行攻击。传送伪造的数据文件引诱用户打开,以攻击处理软件中的漏洞也很常见,当然在局域网中的直接攻

6、击也广泛存在。对于服务器的攻击则只需直接伪造对服务器访问,在连接或登录后构造报文或数据进行攻击。黑客在远程利用网络实施栈溢出漏洞攻击时,其攻击报文将通过网络找到特定的服务器主机,并在主机进行函数调用时实施破坏性行为。典型的攻击行为主要有以下三种:1)修改相邻数据仍以前面的演示代码为例,假设此代码为服务器上的安全检查模块的一部分,input为远程用户的登录信息,isSafe为系统中的判断用户关键数据。如果第二次函数调用只修改栈中isSafe变量,就可模拟出一次远程用户的攻击,并绕过对isSafe变量的检查,造成

7、一次非法用户绕过安全检查的成功入侵。由于这种方式受限于系统设计时的诸多因素,实际出现的机会相对较少。2)修改函数返回地址栈溢出更常见的一种利用方式是覆盖漏洞函数的返回地址。若演示代码中input输入足够长时,就会覆盖修改函数vulnerable_fun的返回地址(即图1中地址0012FF14的内容),如果此时输入为精心构造的shellcode(即实现攻击行为的一段机器指令码),准确地修改该返回地址,就可能跳转到shellcode中去执行,攻击者也就可能获取进程对应的权限执行远程植入的指令序列。3)修改SEH(

8、StructuredExceptionHandling)windows异常处理是windows程序出错后自己处理错误并进行补救的一种机制,包括SEH、VEH(VectorExceptionHander)、UEF(UnhandledExceptionFilter)等技术简单来说,可以想像SEH为栈中的一个单链表,如果函数中使用了__try、__except等异常处理宏,就会在该函数栈帧中压入SEH结点

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。