配色: 字号:
Linuxglibc幽灵漏洞测试
2016-07-04 | 阅:  转:  |  分享 
  
Linuxglibc幽灵漏洞测试2015年1月28日,互联网上爆出Linuxglibc幽灵漏洞(glibcgethostbynamebuff
eroverflow,http://seclists.org/oss-sec/2015/q1/274),也有人将其称之为“2015
0127GHOSTgethostbyname()heapoverflowinglibc”,在CVE上的漏洞编号是CVE-2015-
0235。攻击者可利用此漏洞实施远程攻击,并完全控制目标系统。glibc是GNU发布的libc库,即c运行库。glibc是linu
x系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提
供了许多其它一些必要功能服务的实现。glibc囊括了几乎所有的UNIX通行的标准。国外安全研究人员发现,glibc的__nss_h
ostname_digits_dots()函数有缓冲区溢出漏洞。这一漏洞既可以本地利用,也可以远程利用。研究人员对漏洞进行了测试验
证:向目标邮件服务器发送特别构造的邮件,从而获得了远程登录Linxu系统的shell脚本。通过这种方式可以绕过32位和64位系统上
的所有现存保护机制(比如SSLR、PIE和NX)。受glibc-2.2影响的GNUC函数最早版本是在2000年11月发布的。这一漏
洞曾在2013年5月被修补(在glibc-2.17和glibc-2.18版本之间)。但由于当时并没有被认定为安全威胁,包括Debi
an7、RedHatEnterpriseLinux6&7、CentOS5&6&7和Ubuntu12.04在内的多数知名Linux版
本在长达一年半的时间都没有修补幽灵漏洞,经测试以下版本均存在漏洞:?RHEL(RedHatEnterpriseLinux)vers
ion5.x,6.x,7.x?CentOSLinux5.x,6.x&7.x?UbuntuLinuxversion10.04,12.
04LTS?DebianLinuxversion7.x?LinuxMintversion13.0?FedoraLinuxversi
on19yanteriores?SUSELinuxEnterprise11yanteriores?ArchLinuxglibcve
rsion<=2.18-1Linuxglibc幽灵漏洞最容易的攻击入口是邮件服务器,和存在SSRF(Server-sideRequ
estForgery)漏洞的WEB接口。值得庆幸的是,此漏洞目前还没有公开通用的攻击代码,这也给了服务器管理员们及时安装补丁的宝贵
时间。Linuxglibc幽灵漏洞测试方法1.Ubuntu&Debian检查ldd–version(1)Ubuntu受影响版本(h
ttps://launchpad.net/ubuntu/+source/eglibc):Ubuntu12.04LTS:2.15-0
ubuntu10.10Ubuntu10.04LTS:2.11.1-0ubuntu7.20Debiangibc受影响版本(https
://security-tracker.debian.org/tracker/CVE-2015-0235),Debian7LTS:
2.13-38+deb7u7等eglibc(PTS)squeeze2.11.3-4vulnerableeglibcwheezy2.
13-38+deb7u6vulnerableDebiangibc已经修复版本:squeeze(lts)2.11.3-4+deb6u
4wheezy(security)2.13-38+deb7u72.CentOS&RHEL检查在centos上执行“rpm-qgli
bc”命令,如图1所示,显示glibc的版本信息为glibc-2.5-118.el5_10.2。图1centosglibc版本信息
受影响版本:CentOS5:glibc-2.5-118.el5_10.2CentOS6:glibc-2.12-1.149.el6_
6.5CentOS7:glibc-2.17-55.el7_0.5RHEL5:glibc-2.5-123.el5_11.1RHEL6
:glibc-2.12-1.149.el6_6.5RHEL7:glibc-2.17-55.el7_0.5查看RHEL各个版本更多有
关该漏洞的信息请访问:https://security-tracker.debian.org/tracker/CVE-2015-0
2353.POC验证测试把下面的代码保存为ghost.c,或者wgethttp://www.antian365.com/lab/l
inux0day/ghost.c。/GHOSTvulnerabilitycheckhttp://www.antian365.
com/lab/linux0day/ghost.cUsage:gccghost.c-oghost&&./ghost/#incl
ude#include#include#include
#include#defineCANARY"in_the_coal_mine"struct{charbuffer
[1024];charcanary[sizeof(CANARY)];}temp={"buffer",CANARY};intmain
(void){structhostentresbuf;structhostentresult;intherrno;intretv
al;/strlen(name)=size_needed-sizeof(host_addr)-sizeof(h_addr
_ptrs)-1;/size_tlen=sizeof(temp.buffer)-16sizeof(unsignedchar
)-2sizeof(char)-1;charname[sizeof(temp.buffer)];memset(name,''0''
,len);name[len]=''\0'';retval=gethostbyname_r(name,&resbuf,temp.buf
fer,sizeof(temp.buffer),&result,&herrno);if(strcmp(temp.canary,CA
NARY)!=0){puts("vulnerable");exit(EXIT_SUCCESS);}if(retval==ERANG
E){puts("notvulnerable");exit(EXIT_SUCCESS);}puts("shouldnothappe
n");exit(EXIT_FAILURE);}直接编译并执行:gccghost.c-oghost&&./ghost,如果存在漏洞
则会显示“vulnerable”,如图2所示。图2poc测试是否存在漏洞也可以执行下面的命令,以检测是否存在漏洞。方法一:rpm-
qglibccat/etc/issuewgethttp://www.antian365.com/lab/linux0day/gho
st.cgccghost.c-oghost&&./ghost方法二:直接显示glibc的版本信息。wget-OGHOST-test
.shhttp://www.antian365.com/lab/linux0day/GHOST-test.sh.txtbashGH
OST-test.sh显示结果如下:Vulnerableglibcversion<=2.17-54Vulnerableglibcv
ersion<=2.5-122Vulnerableglibcversion<=2.12-1.148Detectedglibcver
sion2.5revision118ThissystemisvulnerabletoCVE-2015-0235.access.redhat.com/security/cve/CVE-2015-0235>Pleasereferto//access.redhat.com/articles/1332213>forremediationsteps修复方法1.Ubuntu/Debian在Ubuntu/Debian上执行以下命令进行修复,修复后需要重启。apt-getupdate&&apt-get-yinstalllibc62.Centos在Centos上执行“yumupdateglibc”后会有一个确认,输入“y”,大概会下载6个安装包,安装完成后需要重启计算机。(完)
献花(0)
+1
(本文系火鸣飞首藏)