柬埔寨头条APP
GoAhead服务器远程命令执行漏洞(CVE-2017-17562)
惨不忍睹 发表于:2017-12-20 16:14:56 复制链接 看图 发表新帖
阅读数:14001

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
干货分享|GoAhead服务器远程命令执行漏洞(CVE-2017-17562) 分析报告

1.安全通告
GoAhead Web Server是为嵌入式实时操作系统(RTOS)量身定制的开源Web服务器。很多国际一线大厂商,包括IBM、HP、Oracle、波音、D-link、摩托罗拉等,都在其产品中使用了GoAhead,使用GoAhead的设备包括智能手机、宽带接入路由器、数字电视机顶盒等。

近日,安全研究人员发现如果启用了CGI并且动态链接了CGI程序的话,GoAhead中的安全漏洞可能允许远程执行任意代码。漏洞的起因是cgi.c文件中的cgiHandler函数使用了不可信任的HTTP请求参数初始化已fork的CGI脚本的环境。结合glibc动态链接器,攻击者就可以使用特殊的环境变量(如LD_PRELOAD)导致执行任意代码。

安恒信息应急响应中心也将对该漏洞进行持续关注,并第一时间为您更新相关漏洞信息。

2.漏洞信息
漏洞描述

近日GoAhead官方发出安全公告,服务器通过GET参数设置环境变量导致了恶意LD_PRELOAD环境变量设置,进而使得漏洞攻击者获得远程命令执行的权限,影响不容小觑。GoAhead官方发布了新版本3.6.5,对漏洞进行了补丁修复。

漏洞危害

攻击者可以直接在服务器上远程执行命令,获取服务器上所有数据。

影响版本

GoAhead 3.6.5之前版本

具体为:2.5.0 – 3.6.4

漏洞利用前置条件

服务器启用CGI且CGI需动态链接。

需要已知服务器的架构,从而上传相对应的动态链接库文件。

风险等级

安恒信息应急响应中心将此漏洞安全风险定级为:高危

漏洞分析

环境搭建


1513732988551015256.jpg

cgi测试成功

1513732988888057583.jpg

漏洞定位

goahead/src/cgi.c:cgihandler


1513732988962072381.jpg

定位代码153行,可以看到程序遍历了用户访问时所带的参数,验证如果参数不为REMOTE_HOST或HTTP_AUTHORIZATION,则将其存储至envp数组。该数组将作为接下来cgi调用的环境变量。可以看出正式这里对于参数的过滤不全,导致了用户可以修改CGI程序的LD_PRELOAD环境变量。

漏洞复现

payload.c


1513732989120072034.jpg

将payload.c编译成动态链接库.so文件


1513732989204098473.png
查看编译好的文件


1513732989279081868.png
如果用该文件作为LD_PRELOAD动态链接库文件运行,运行任意程序则会有如下效果。


1513732989377012531.png
可以看到payload.so中的代码成功运行。

验证poc:


1513732989516091311.jpg
漏洞分析

我们修改payload以便于接下来的调试


1513732989573049941.jpg
重复poc的命令


1513732989654052746.png
由于在执行poc时CGI进入了sleep,我们可以方便地查看当前CGI的状态,ps查看其pid。


1513732989888035951.jpg
查看CGI程序中的0号fd文件,发现这是一个符号链接,指向一个tmp文件,我们再查看该tmp文件,最终确认该文件正是我们上传的恶意动态链接库文件。


1513732990032011599.jpg
查看源码可知( goahead/src/cgi.c:launchCgi):


1513732990189056601.jpg
执行CGI之前,程序通过dup2将CGI的标准输入(即fd为0的文件)指向了创建的tmp文件。

所以我们发送的

/proc/self/fd/0 à /tmp/cgi-xxx.tmp == payload.so

最终造成了任意代码执行。

漏洞自查

漏洞发布者已经提供了对应的测试工具,已包含多种架构的payload,下载地址如下:

https://github.com/elttam/advisories/tree/master/CVE-2017-17562

使用方法:


1513732990362040423.png
--server 指定服务器地址

--port  服务器端口

--payload 根据对方服务器的架构选择相应.so文件

3.修复建议
官方补丁

升级至最新版本

临时缓解措施

修改源码src/cgi.c


1513732990517079652.jpg
根据官方补丁修改161行左右的if内,除了过滤REMOTE_HOST和HTTP_AUTHORIZATION,添加过滤IFS、CDPATH、PATH和以LD_开头的字符串。

- END -



条评论
您需要登录后才可以回帖 登录 | 注册
高级
相关推荐