这是信息系统安全实验系列的第十篇~
一、实验概述
1. 实验目的
学习渗透测试(penetration)的相关知识,包括渗透测试的方法及其过程。学习Metasploit的基本知识,了解其基本的架构,并且能使用其基本的功能对靶机的已知漏洞进行利用。
2. 实验环境
Kali Linux以及其他靶机环境
3. 工具介绍
Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。
渗透攻击(Exploit),指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。攻击载荷(Payload),是我们期望目标系统在被渗透攻击之后去执行的代码。Shellcode,是在渗透攻击是作为攻击载荷运行的一组机器指令,通常用汇编语言编写。模块(Module),指Metasploit框架中所使用的一段软件代码组件,可用于发起渗透攻击或执行某些辅助攻击动作。监听器(Listener),是Metasploit中用来等待网络连接的组件。
本次实验利用kali自带的Metasploit,通过对其的二次开发,分别完成对Windows Server 2003 SP0和Ubuntu 8.04的攻击。
二、攻击Windows Server 2003 SP0
1. 原理介绍
本次实验利用的是MS08-067漏洞。攻击者可以利用受害主机默认开放的SMB服务端口445,发送恶意资料到该端口,通过MSRPC接口调用Server服务的一个函数,并破坏程序的栈缓冲区,获得远程代码执行权限,从而完全控制主机。
具体原理如下:MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,而NetPathCanonicalize函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,即将路径字符串中的/转换为\并去除相对路径,而在NetPathCanonicalize函数中发生了栈缓冲区内存错误,造成可被利用实施远程代码执行。攻击者精心设计的输入路径,可以在函数去除相对路径时,把路径字符串中的内容复制到路径串之前的地址空间中,达到覆盖函数返回地址,执行任意代码的目的。
2. 具体过程
(1)查询攻击机和靶机的ip
启动kali终端,输入ifconfig命令,查询攻击机的ip,如下图所示:
图1(查询攻击机ip)
启动Windows Server 2003 SP0终端,输入ipconfig命令,查询靶机的ip,如下图所示:
图2(查询靶机ip)<