Wget是GNU计划开发的一套用于在网络上进行下载的自由软件,是Unix/Linux系统最常用的下载工具,支持通过HTTP、HTTPS以及FTP这三个最常见的TCP/IP协议下载。

Wget 1.18之前的版本在对HTTP服务重定向进行处理时存在漏洞,远程攻击者可以利用此漏洞写入任意文件,CVE编号为CVE-2014-4877,CVSS分值为9.3【严重】。

官方通告地址如下:

https://lists.gnu.org/archive/html/bug-wget/2016-06/msg00033.html

影响的版本

Wget < 1.18

不受影响的版本

Wget = 1.18

技术分析

HTTP服务可以将网络请求重定向到其他目标。

1

当HTTP服务将wget的请求重定向到FTP服务时,wget会默认信赖重定向的FTP URL,而没有进行二次验证或对下载文件名进行适当的处理。

利用此漏洞,远程攻击者可以通过控制HTTP重定向指向的FTP文件名,实现对敏感文件的写入操作。

例如,攻击者可以控制HTTP重定向的Location字段,将指向poc.txt的请求重定向到FTP服务上一个名为.bash_profile的文件:

2

并将攻击payload写入此文件:

3

此时,如果存在漏洞的主机使用wget访问http://10.8.55.11/poc.txt,就会将.bash_profile文件下载到本地。

4

而如果wget操作是在home路径下执行,且该home目录下原本不存在.bash_profile文件,则此次下载的.bash_profile中的代码就会在下次进入shell时被触发。

攻击者监听指定的端口,当payload被执行后便可以获取到被攻击主机的shell:

5

官方修复分析:

从wget的github的项目中可以看到,这个漏洞(CVE-2016-4971)是在这个commit中修复的:

https://github.com/mirror/wget/commit/e996e322ffd42aaa051602da182d03178d0f13e1

从修复的log中可以看出,本次修复主要修复了ftp_loop和ftp_loop_interval这两个基础函数。

6

从这个改动可以看出,在调用从FTP下载文件的函数时多传了一个原始URL参数,在生成本地文件的文件名时使用了原始的URL,于是在保存本地文件的时候并不是使用了跳转后的连接中的文件名,而是使用wget中传入参数的URL连接中的文件名作为了保存的文件名。

测试一下wget1.14和wget1.18(修复版本)

7

显然,wget1.18版本已经处理了跳转后的文件名,和传入URL链接的文件名保持一致。

防护方案

参考链接:

https://www.exploit-db.com/exploits/40064/

http://www.freebuf.com/vuls/107206.html

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:486207500、570982169
直接询问:010-68438880-8669

源链接

Hacking more

...