缓冲区溢出漏洞

版权声明:如需转载,请注明原文出处,作者:vergilben https://blog.csdn.net/weixin_42751456/article/details/89004901

缓冲区溢出

缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

理想的情况是:程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下了隐患。操作系统所使用的缓冲区,又被称为"堆栈"。在各个操作进程之间,指令会被临时储存在“堆栈”中,“堆栈”也会出现缓冲区溢出。缓冲区溢出的危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害是:一种情况是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。

MS12-020漏洞

微软于2012年3月12日发布安全公告,公布了MS12-020漏洞,漏洞级别为严重,这个级别是微软所有漏洞级别的最高级别,意即会对服务和企业运营造成巨大损失。
这个漏洞的定义是指操作系统的远程桌面协议存在重大漏洞,入侵者(黑客)可以通过向远程桌面默认端口(3389)发一系列特定RDP包,从而获取超级管理员权限,进而入侵系统。
若该主机同时提供80端口服务,那么疑似有相对更大的隐患。
根据微软的安全公告,Windows全系列操作系统(WinXP/Vista/Win7/Win2000/ Win2003/Win2008)均存在受控威胁。但因为远程桌面管理的特殊性,几乎所发现的主机都是服务器,PC机暂未发生。

Metasploit工具

Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并对安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,密码审计,Web应用程序扫描,社会工程等。
Metasploit是一个攻击工具开发平台,可以扩展的模型将负载控制,编码器,无操作生成器和漏洞整合在一起,使 Metasploit Framework 成为一种研究高危漏洞的途径。它集成了各平台上常见的溢出漏洞和流行的 shellcode ,并且不断更新。最新版本的 MSF 包含了750多种流行的操作系统及应用软件的漏洞,以及224个 shellcode 。作为安全工具,它在安全检测中用着不容忽视的作用,并为漏洞自动化探测和及时检测系统漏洞提供了有力保障。

信息来源——合天网安实验室

接下来开始复现,使用合天网安所提供的实验环境。靶机ip地址为:10.1.1.2

  1. 进入实验环境,查看并测试环境所提供的buffer.c程序,其中buffer.c的源代码如下(这一步旨在帮助理解缓冲区溢出漏洞的原理):
    /buffer.c/
    #include <stdio.h>
    int main()
    {
    char name[8];
    printf(“Please input your name: ”);
    gets(name);
    printf(“your name is : %s!”, name);
    return 0;
    }

测试一下这段代码:
在这里插入图片描述

  1. 使用溢出工具获取靶机(10.1.1.2)的shell特权

在cmd中查看溢出工具dns.exe并运行dns.exe,查看它的介绍及使用方法,红框中的为比较重要的。
在这里插入图片描述

根据介绍开始尝试使用这个dns.exe工具,扫描靶机
在这里插入图片描述

可以看到1027四个数字后面写着“易受攻击的”,根据dns.exe的介绍,加上我们用dns扫描出来的成果可以使用dns -t来对靶机进行溢出。
在这里插入图片描述

“port”是端口的意思,“bind”是捆绑的意思,大概读一下发现我们可以从1100这个端口进行攻击,接下来开始用telnet连接靶机!

使用telnet 10.1.1.2 1100命令,进入如下页面
在这里插入图片描述

接下来,我们确认一下我们是否拿到了靶机的shell,使用ipconfig来确定ip地址是否为10.1.1.2
在这里插入图片描述

成功了,我们已经通过dns这个溢出工具拿到了靶机的shell!接下来我们利用漏洞使靶机瘫痪!

  1. 使用MS12-020漏洞溢出靶机系统

我们先启动metasploit console,博客的开始有介绍metasploit,可以再翻回去看一下
这里有metasploit的用法:https://www.cnblogs.com/panisme/p/8341598.html

成功进入界面如下
在这里插入图片描述

接下来,在msf>下使用db_nmap -sT -p3389 10.1.1.2对靶机进行扫描,简单分析一下得到的信息
在这里插入图片描述

下一步,我们要使用ms12_020漏洞进行攻击,所以我们先搜索一下这个漏洞的利用模块:search ms12_020
在这里插入图片描述

简单分析一下,红框下面有个“scanner”,所以它应该不能用来攻击,那我们就试试用红框里的
输入use auxiliary/dos/windows/rdp/ms12_020_maxchannelids并设置上参数,即靶机的ip地址,再用show options查看确认
在这里插入图片描述在这里插入图片描述

好的,万事具备,使用exploit命令开始攻击!
在这里插入图片描述

攻击完毕,我们在cmd中ping一下靶机的ip地址看看有什么结果。
这里说明一下,在合天上正常的显示应该是数据延迟,ping不出来东西,但我在做的时候,exploit攻击完毕后,cmd中会显示与主机断开连接,ping 10.1.1.2却还是正常的,只有数据的接受时间与延迟前后不太一样,我前前后后试了有六七次都是这样,有可能是这个漏洞年代久远,也可能是其它原因,所以,这个漏洞复现并没有完全成功,我会再寻找它的原因的!
在这里插入图片描述

总结一下:攻击与防御思路真的很重要,每一步做什么,怎么做都至关重要,跳做一步,少做一步,都有可能使攻击失败,只有脑海中有大概的思路,明确每一步做什么,一步一步走,而且千万要细心,有时候打错一个大小写就要重新来一遍。

如需转载,请注明原文出处,作者:vergilben

猜你喜欢

转载自blog.csdn.net/weixin_42751456/article/details/89004901