[计算机科学与技术 ]Web服务缓冲区溢出渗透测试的设计与实现 摘 要缓冲区溢出漏洞是安全漏洞中最为常见的一种形式。更为严重的是缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以使的一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权。由于这类攻击使任何人都有可能取得主机的控制权,所以它代表了一类极其严重的安全威胁。因此,以缓冲区溢出作为一种渗透测试的手段是非常有意义的。缓冲区溢出是渗透测试中的重要手段。现在大多数缓冲区溢出程序都是基于C/S架构的,所以其使用的便捷性受到一定限制。本课题采用现在最流行的B/S架构,并且最终实现了将缓冲区溢出作为Web服务来检测远程主机有无溢出漏洞并提醒用户尽快修补此漏洞的目的。本文深入介绍了缓冲区溢出的原理,以及三种常见的缓冲区溢出漏洞;实例化地介绍了缓冲区溢出程序的执行流程;shellcode的编写技术;Java网络编程技术。在对原理研究的基础之上,本文主要给出了缓冲区溢出作为Web服务的设计和实现过程以及Web服务的其他辅助功能块(网络安全新闻管理、网络安全论坛)的设计和实现。其中缓冲区溢出模块和监听模块采用JavaBean技术实现,其他部分均采用JSP技术加以实现。总的来说,本渗透测试平台实现了缓冲区溢出的方便性和广范性以及安全性,并且可以加载任意的已经编译成可执行文件的溢出程序。比起传统的C/S架构下的测试平台前进了一大步。关键字:渗透测试、缓冲区溢出、JSP目 录摘要 1Abstract 2第一章 绪论 51.1 课题背景 51.2渗透测试概述 51.2.1渗透测试的的专业性 61.2.2 渗透测试的三个阶段 61.3 论文安排 8第二章 缓冲区溢出攻击技术 92.1 缓冲区溢出基本原理 92.2 常见的缓冲区溢出形式 112.2.1 栈溢出 112.2.2 堆溢出 122.2.3 格式化字符串溢出 132.3 缓冲区溢出执行流程 162.4 shellcode技术 192.4.1 shellcode的编写语言 192.4.2 shellcode本身代码的重定位 202.4.3 shellcode编码 21第三章 Java网络编程技术介绍.233.1 JavaBean技术 233.1.1 JavaBean的概念 233.1.2 JavaBean的特性 233.1.3 JavaBean的属性23 3.1.4 JavaBean在JSP页面里的部署243.2 socket网络编程技术 .243.3 Java数据流 253.3.1 数据流的基本概念 253.3.2 数据流的分类介绍 25第四章 缓冲区溢出渗透测试平台的设计与实现 274.1 测试平台框架设计274.1.1整体框架设计 274.1.2网络安全新闻发布模块设计 284.1.3网络安全论坛模块设计 294.1.4缓冲区溢出渗透测试模块设计 314.2 缓冲区溢出渗透测试编码实现 344.2.1缓冲区溢出漏洞选择 344.2.2溢出模块实现 344.2.3监听模块实现 344.2.4本地执行命令实现 364.2.5缓冲区溢出状态实现 39第五章 实验设计和实验数据 425.1实验准备 425.2 SqlServer2000打sp3补丁前 435.2.1实验数据 435.3 SqlServer2000打sp3补丁后 455.3.1实验数据 45结束语 47参考文献 48致 谢 49