免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
本文演示一个幽灵漏洞(GHOST)的EXP,这个EXP是Metasploit的一个模块。这个Metasploit模块可以远程利用CVE-2015-0235(glibc 库中 gethostbyname 函数的堆溢出漏洞)漏洞,目标是运行了Exim邮件服务的linux服务器。
GHOST漏洞存在于linux的核心库glib中的gethostbyname函数中,可以在本地触发也可以在远程触发。这个名为幽灵(GHOST)的高危安全漏洞出现在2015年,这个漏洞可以允许攻击者远程获取操作系统的最高控制权限,影响市面上大量Linux操作系统及其发行版。该漏洞CVE编号为CVE-2015-0235。
最早受此漏洞影响的glibc版本是glibc-2.2,于2000年9月10日发布。并且该漏洞于2013年5月21日被修复(在 glibc-2.17 — glibc-2.18之间),然而,这次更新并没有以安全更新的名义发布,所以,很多稳定版&长期支持版的linux依然受影响,包括Debian7(wheezy),Red Hat Enterprise Linux 6 & 7, CentOS 6 & 7, and Ubuntu 12.04.
Qualys和各个linux发行厂商紧密合作,于2015年1月27日发布了一篇报道,并发布了一篇博文,文章和各主流发行版及补丁紧密相关。Qualys直到现在才放出这一模块,希望各个IT团队有足够的时间为此漏洞打补丁。 点我查看更多关于GHOST漏洞
这个Metasploit模块可以利用运行了Exim邮件服务的服务器,获得shell,远程执行代码,如果这个模块的check 方法或者exploit方法检测到一个远程服务器存在漏洞,也是可以利用的。
正如EXP中所描述的,如果要成功利用改漏洞,需要如下前提条件才能利用成功:
服务端利用条件(Exim): -- 远程目标服务器必须使用的是存在漏洞的 glibc 库: 最初的存在漏洞的版本是 glibc-2.6,最后一个存在漏洞的版本是glibc-2.17,一些老版本可能也存在该漏洞,但是本文中所提供的模块只支持前面提到的几个新版本中的fd_nextsize结构(malloc_chunk 的一个成员结构),才能远程获取Exim的smtp_cmd_buffer在堆中的地址。 -- 远程目标服务器必须比如运行Exim邮件服务器,最初的存在漏洞的版本是exim-4.77,老版本可能也存在漏洞,但是本文中提供的模块依赖新版本中16KBsmtp_cmd_buffer空间来可靠的建立堆空间。 -- 远程目标服务器Exim邮件服务必须配置了正对其SMTP客户端的额外的安全检查,helo_try_verify_hosts或helo_verify_hosts选项开启均可,ACL中的verify = helo选项可能也可以利用,但是由于不可预测,所以本文提供的模块没有提供这个支持。 -- 客户端利用条件(Metasploit): -- 模块的exploit方法需要SENDER_HOST_ADDRESS设置为本地SMTP客户端的IPv4地址,也是Exim可见的 IP地址。另外,这个IPv4地址必须必须支持正向和反向DNS查询。 -- 即使Metasploit客户端没有FCrDNS ,Exim服务端也可能被利用成功,但是本文中的模块需要Exim设置了sender_host_name,才能可靠的控制堆的状态。
该模块是一个单独的文件,可以导入Metasploit中,所以如果你想使用这个模块,将这个文件拷贝到modules/exploits/linux/smtp/目录下面
https://www.qualys.com/research/security-advisories/exim_ghost_bof.rb
这个模块在 Core Security Attack情报平台 上也可以使用。