幽灵漏洞(Ghost gethost)

幽灵漏斗简介:

编号CVE-2015-0235的GHOST(幽灵)漏洞是Qualys研究员发现的一个Linux服务上非常严重的安全漏洞,可以被利用来远程代码执行及本地权限提升。

漏洞简要描述

该漏洞存在于 glic 库中的__nss_hostname_digits_dots() 函数,在nss/getXXbyYY.c这个文件中,gethostbyname()会使用这个功能。另外,这个漏洞本地远程都可以利用,要利用此漏洞,攻击者需要构造一个特定的 hostname 数据条给linux 上开放的服务,如果服务不对数据做安全处理,就会引发一个任意代码执行漏洞。

使用:ls –l /lib/libc.so.*查看本机libc的版本:

使用如下代码(来源于网络),测试是否存在漏洞:

#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <gnu/libc-version.h>
#define CANARY "in_the_coal_mine"
struct {
  char buffer[1024];
  char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };
int main(void) {
  struct hostent resbuf;
  struct hostent *result;
  int herrno;
  int retval;
  /*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
  size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
  char name[sizeof(temp.buffer)];
  memset(name, ‘0‘, len);
  name[len] = ‘\0‘;
  retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
  if (strcmp(temp.canary, CANARY) != 0) {
    puts("vulnerable");
    exit(EXIT_SUCCESS);
  }
  if (retval == ERANGE) {
    puts("not vulnerable");
    exit(EXIT_SUCCESS);
  }
  puts("should not happen");
  exit(EXIT_FAILURE);
}

编译后,执行,发现我们的一台服务器果然存在漏洞:

使用如下命令查看有那些进程依赖了libc: lsof | grep libc | awk ‘{print $1}‘ | sort | uniq | less

使用netstat –lntpu | grep 8080, 发现我们的8080端口依赖了libc,可以看到进程号是:26316

这里需要将gcc升级,升级后,漏洞被堵住。

参考:

http://bobao.360.cn/news/detail/1166.html 

http://www.freebuf.com/news/57729.html

时间: 2024-11-05 19:44:28

幽灵漏洞(Ghost gethost)的相关文章

Linux Glibc幽灵漏洞紧急修补方案【转】

转自:http://blog.csdn.net/chen19870707/article/details/43560823 幽灵漏洞是Linux glibc库上出现的一个严重的安全问题,他可以让攻击者在不了解系统的任何情况下远程获取操作系统的控制权限.目前他的CVE编号为CVE-2015-0235. 什么是glibc glibc是GNU发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统

Linux Glibc幽灵漏洞紧急修补方案

推荐:10年技术力作:<高性能Linux服务器构建实战Ⅱ>全网发行,附试读章节和全书实例源码下载! 幽灵漏洞是Linux glibc库上出现的一个严重的安全问题,他可以让攻击者在不了解系统的任何情况下远程获取操作系统的控制权限.目前他的CVE编号为CVE-2015-0235. 什么是glibc glibc是GNU发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了

Linuxglibc幽灵漏洞测试与修复方法

simeon 一.Linux glibc幽灵漏洞简介 2015年1月28日互联网上爆出Linux glibc幽灵漏洞(glibc gethostbyname buffer overflow,http://seclists.org/oss-sec/2015/q1/274),也有人将其称之为"20150127GHOST gethostbyname() heap overflow in glibc",在CVE上的漏洞编号是CVE-2015-0235.攻击者可利用此漏洞实施远程攻击,并完全控制

针对幽灵漏洞对glibc进行升级

前一段时间出现幽灵漏洞,虽然及时做了修复,即对glibc进行升级,但是没时间整理文档,现在简单整理一下,希望对大家有用. 对于内网服务器,没有办法进行连接公网,无法用 yum update glibc或rpm -Uvh glibc*,我的方法是根据自己服务器操作系统的版本,把glibc相关的包下载到本地,然后再上传到文件服务器,再进行升级. glibc 下载地址:http://pkgs.org/download/glibc 幽灵漏洞脚本(或下载附件): [[email protected] op

Linux 幽灵漏洞CVE 2015-0235 (glibc修补方案)

漏洞的危害: [CVE 2015-0235: GNU glibc gethostbyname 缓冲区溢出漏洞 ]全面爆发,该漏洞的产生是Qualys公司在进行内部代码审核时,发现了一个在GNU C库(glibc)中存在的__nss_hostname_digits_dots函数导致的缓冲区溢出漏洞.这个bug可以通过gethostbyname *()函数来触发,本地和远程均可行.该漏洞(幽灵漏洞)造成了远程代码执行,攻击者可以利用此漏洞获取系统的完全控制权. 检查系统是否存储幽灵漏洞: 将下面的代

pfSense关于处理器Meltdown(熔毁)和Spectre(幽灵)漏洞更新修复的说明

事件描述 2018年1月4日,Jann Horn等安全研究者披露了"Meltdown"(CVE-2017-5754)和"Spectre"(CVE-2017-5753 & CVE-2017-5715)两组CPU特性漏洞. 据悉,漏洞会造成CPU运作机制上的信息泄露,低权级的攻击者可以通过漏洞来远程泄露(浏览器形式)用户信息或本地泄露更高权级的内存信息. 实际攻击场景中,攻击者在一定条件下可以做到: 泄露出本地操作系统底层运作信息,秘钥信息等: 通过获取泄露的信

检测Linux glibc幽灵漏洞和修补漏洞

1.首先安装rpm : sudo apt-get install rpm wget -OGHOST-test.sh http://www.antian365.com/lab/linux0day/GHOST-test.sh.txt sudo chmod -R 0777 GHOST-test.sh ./GHOST-test.sh 如果执行./GHOST-test.sh 输出 Vulnerable glibc version <= 2.17-54Vulnerable glibc version <=

glibc漏洞监测并修复

[CVE 2015-0235: GNU glibc gethostbyname 缓冲区溢出漏洞 ]全面爆发,该漏洞的产生是Qualys公司在进行内部代码审核时,发现了一个在GNU C库(glibc)中存在的__nss_hostname_digits_dots函数导致的缓冲区溢出漏洞.这个bug可以通过gethostbyname *()函数来触发,本地和远程均可行.该漏洞(幽灵漏洞)造成了远程代码执行,攻击者可以利用此漏洞获取系统的完全控制权. 1,监测漏洞:新建文件夹/root/glibc/  

glibc升级小记

2015年元月最后几天,glibc幽灵漏洞来袭,引用 中华财经网的报道 稍做介绍: Linux glibc函数库日前曝出名为GHOST(幽灵)的高危漏洞,漏洞编号是CVE-2015-0235.攻击者可利用此漏洞实施远程攻击,并完全控制目标系统.据360网络攻防实验室介绍,各大Linux发行商已经发布漏洞补丁,提醒企业网管做好服务器的安全更新. Glibc是GNU发布的libc库,即c运行库.它是Linux系统中最底层的API,几乎其它任何运行库都会依赖于glibc.glibc除了封装Linux操