漏洞挖掘实践

本文详细介绍了缓冲区溢出攻击的原理、危害和防范方法,并以war-ftp v1.65为例,分析了其存在的基于用户名的缓冲区溢出漏洞,包括堆栈结构、exploit构造过程,以及不同JMP ESP和JMP EBP的使用。通过实践,作者展示了如何利用shellcode攻击远程主机,创建管理员用户,打开端口,以及本地shell。同时,文中还讨论了缓冲区溢出的防御策略,如边界检查、非执行缓冲区技术等,并分享了实践过程中遇到的问题及其解决方案。
摘要由CSDN通过智能技术生成

完整图片版:http://1.johnhome.sinaapp.com/?p=157

一.目的

1.1掌握缓冲区溢出的原理

缓冲区指程序运行期间,在内存中分配的一个连续的区域,用于保存包括字符数组在内

的各种数据类型。溢出,指所填充的数据超出了原有的缓冲区边界,并非法占据了另一段内存区域。缓冲区溢出,即由于填充数据越界而导致原有流程的改变,攻击者借此精心构造填充数据,让程序转而执行特殊的代码,最终获取控制权。

1.2掌握常用的缓冲区溢出方法

     缓冲区溢出攻击的目的在于得程序的控制权此,攻击者必须达到如下的两个目标在程序的地址空间里安排适当的代码通过适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行。
根据这两个目标来对缓冲区溢出攻击进行分类,缓冲区溢出攻击分为代码安排和控制程序执行流程两种方法:在程序的地址空间里安排适当的代码的方法控制程序转移到攻击代码的方法

1.3理解缓冲区溢出的危害性

    缓冲区溢出的危害性具有破坏性与隐蔽性的特点:破坏性体现在易使服务程序停止运行,服务器死机甚至删除服务器上的数据或者可以执入并运行攻击代码。隐蔽性体现在软件漏洞难以避免,缓冲攻击的shellcode的执行不易被察觉,攻击的随机性及不可预测性。

1.4掌握防范和避免缓冲区溢出攻击的方法

     通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码强制写正确的代码利用编译器的边界检查来实现缓冲区的保护间接的方法在程序指针失效前进行完整性检查等。

二.内容

2.1分析war-ftp v1.65的基于用户名的缓冲溢出漏洞

实践课件上已指出:向服务器发送超过480字节的用户名可以触发漏洞(即使用命令USER longString\r\n),溢出之后,ESP中的内容包含了longString中的部分内容。需要对其进行验证分析。

2.2分析war-ftp v1.65的堆栈结构

    即分析堆栈中的EIPESPEBP等的精确位置。

2.3构造针对war-ftp v1.65exploit

    根据上述的分析结果,参照实践课件的例子,从网上(主要是metasploit.com)获取shellcode,构造exploit

三.环境

3.1调试工具

  CDB(安装Debugging Tools for Windows),这个实践使用CDB就足够了。

  OllyDBG个强大的具有可视化界面的 32 位汇编-分析调试器。

3.2编程语言

  使用C语言,能找到的shellcode只有Cperlrubyjavascriptraw的,本人只对C熟悉。

3.3网络环境

   使用虚拟机Vmware6.5,物理主机与虚拟机内装的windowsXP(192.168.85.3),windows server 2000(192.168.85.6),windows server 2003(192.168.85.5)所处网段为192.168.85.0/24

3.4其它工具

Shellcode生成工具:http://www.metasploit.com:55555/PAYLOADS

堆栈指针定位工具:ActivePerl,提供perl运行环境;安装metasploit后, frameworklib下的PatternCreate.pl可用于构造一个不重复的字符串;framework/sdk下的patternOffset.pl用来计算来前者产生的字符串中某段字符的偏移量。

四.设计(详细过程)

4.1验证War-ftp v1.65基于用户名的缓冲溢出漏洞

在虚拟主机WindowsXP中运行war-ftp 1.65,允许匿名登录;

在物理主机使用cuteftp登录,用户名使用依次增加的“AAA…”,当用户名长度超过480时,war-ftp 1.65出现异常甚至崩溃退出。使用cdb(480A)OllyDBG(481A)cdb(486A)调试截图如下:

 

4-1:用户名为480A

 

                            

 4-2:用户名为481A

 

4-3:用户名为486A

4-4:用户名为500A

    图

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值