提問三步曲: 提問先看教程/FAQ索引(wdcp,wdcp_v3,一鍵包)及搜索,會讓你更快解決問題
1 提供詳細,如系統(tǒng)版本,wdcp版本,軟件版本等及錯誤的詳細信息,貼上論壇或截圖發(fā)論壇
2 做過哪些操作或改動設置等
溫馨提示:信息不詳,很可能會沒人理你!論壇有教程說明的,也可能沒人理!因為,你懂的
[BUG反饋] LINUX暴漏洞了,請官方關注一下,Linux Glibc幽靈漏洞
幽靈漏洞是Linux glibc庫上出現(xiàn)的一個嚴重的安全問題,他可以讓攻擊者在不了解系統(tǒng)的任何情況下遠程獲取操作系統(tǒng)的控制權限。目前他的CVE編號為CVE-2015-0235。
什么是glibc
glibc是GNU發(fā)布的libc庫,即c運行庫。glibc是linux系統(tǒng)中最底層的api,幾乎其它任何運行庫都會依賴于glibc。glibc除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務外,它本身也提供了許多其它一些必要功能服務的實現(xiàn)。glibc 囊括了幾乎所有的 UNIX 通行的標準。
出現(xiàn)了什么漏洞
代碼審計公司Qualys的研究人員在glibc庫中的__nss_hostname_digits_dots()函數(shù)中發(fā)現(xiàn)了一個緩沖區(qū)溢出的漏洞,這個bug可以經過 gethostbyname*()函數(shù)被本地或者遠程的觸發(fā)。應用程序主要使用gethostbyname*()函數(shù)發(fā)起DNS請求,這個函數(shù)會將主機名稱轉換為ip地址。更多的細節(jié)可以從下面的視頻中看到。
漏洞危害
這個漏洞造成了遠程代碼執(zhí)行,攻擊者可以利用此漏洞獲取系統(tǒng)的完全控制權。
漏洞證明
在我們的測試中,我們編寫了一個POC,當我們發(fā)送一封精心構造的電子郵件給服務器后,我們便可以獲得遠程Linux服務器的shell,這繞過了目前在32位和64位系統(tǒng)的所有保護(如ASLR,PIE和NX)。
我們能做什么?
給操作系統(tǒng)及時打補丁,我們(Qualys)已與Linux發(fā)行商緊密合作,會及時發(fā)布補丁。
為什么叫做GHOST?
因為他通過GetHOST函數(shù)觸發(fā)。
哪些版本和操作系統(tǒng)受影響?
第一個受影響的版本是GNU C庫的glibc-2.2,2000年11月10號發(fā)布。我們已找出多種可以減輕漏洞的方式。我們發(fā)現(xiàn)他在2013年5月21號(在glibc-2.17和glibc-2.18發(fā)布之間)已經修復。不幸的是他們不認為這是個安全漏洞。從而導致許多穩(wěn)定版本和長期版本暴露在外,其中包括Debian 7 (wheezy),Red Hat Enterprise,Linux 6 & 7,CentOS 6 & 7,Ubuntu 12.04等
在哪里下載EXP?
我們希望每個人能有充分的時間去打補丁。根據(jù)我們的統(tǒng)計數(shù)據(jù)當漏洞達到半周期的時候我們會放出EXP。半周期是指超過一半的主機已打上補丁。這個周期展示出了漏洞修復的努力程度。一個較短的周期意味著更快速的修復努力。半周期概念由Qualys的漏洞準則提出。
Qualys的客戶可以使用Qualys Vulnerability Management (VM)云解決方案來掃描和檢測GHOST。Qualys的客戶可以可以獲得相應的報告?梢钥梢暬米粉櫤驼故具@次漏洞修復進程。
修復方案
升級glibc庫
RHEL/CentOS : sudo yum update glibc
Ubuntu : sudo apt-get update ; sudo apt-get install libc6
參考
Qualys Advisory: https://www.qualys.com/research/security-advisories/GHOST-CVE-2015-0235.txt
RedHat: https://rhn.redhat.com/errata/RHSA-2015-0090.html
Ubuntu: https://launchpad.net/ubuntu/+source/eglibc
Debian: https://security-tracker.debian.org/tracker/CVE-2015-0235
GNU C Library: http://www.gnu.org/software/libc/
更多技術細節(jié):http://bobao.#/learning/detail/224.html
附POC
測試方法:gcc gistfile1.c -o CVE-2015-0235 ./CVE-2015-0235
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.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);
}
#* from http://www.openwall.com/lists/oss-security/2015/01/27/9 */ |