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/2019-06/msg00033.html
文章目录
Wget < 1.18
Wget = 1.18
HTTP服务能够将网络恳求重定向到其他方针。
当HTTP服务将wget的恳求重定向到FTP服务时,wget会默许信任重定向的FTP URL,而没有进行二次验证或对下载文件名进行恰当的处理。
运用此缝隙,长途进犯者能够经过操控HTTP重定向指向的FTP文件名,完成对灵敏文件的写入操作。
例如,进犯者能够操控HTTP重定向的Location字段,将指向poc.txt的恳求重定向到FTP服务上一个名为.bash_profile的文件:
并将进犯payload写入此文件:
此刻,假如存在缝隙的主机运用wget拜访http://10.8.55.11/poc.txt,就会将.bash_profile文件下载到本地。
而假如wget操作是在home途径下履行,且该home目录下本来不存在.bash_profile文件,则此次下载的.bash_profile中的代码就会在下次进入shell时被触发。
进犯者监听指定的端口,当payload被履行后便能够获取到被进犯主机的shell:
官方修正剖析:
从wget的github的项目中能够看到,这个缝隙(CVE-2019-4971)是在这个commit中修正的:
https://github.com/mirror/wget/commit/e996e322ffd42aaa051602da182d03178d0f13e1
从修正的log中能够看出,本次修正首要修正了ftp_loop和ftp_loop_interval这两个根底函数。
从这个改动能够看出,在调用从FTP下载文件的函数时多传了一个原始URL参数,在生成本地文件的文件名时运用了原始的URL,所以在保存本地文件的时分并不是运用了跳转后的衔接中的文件名,而是运用wget中传入参数的URL衔接中的文件名作为了保存的文件名。
测验一下wget1.14和wget1.18(修正版别)
明显,wget1.18版别现已处理了跳转后的文件名,和传入URL链接的文件名保持一致。
经过指令wget –V能够获得当时wget的版别,假如为受影响的版别,主张升级到1.18版别。 在调用wget指令时,尽量运用-O参数指定输出途径和文件名,并留意查看下载的文件。 运用绿盟科技的长途评价体系(RSAS)对内网进行安全评价。 运用绿盟科技检测类产品(IDS)进行检测。 运用绿盟科技防护类产品(IPS/NF/SG)进行防护。 现已购买了绿盟科技相关产品服务的客户能够经过产品升级进行检测与防护。 短期服务:绿盟科技工程师现场处理。保证第一时间消除网络内相关危险点,操控事情影响规模,供给事情剖析陈述。 中期服务:供给 3-6个月的危险监控与巡检服务。铲除危险,保证事情不复发。 长时间服务:基金职业事务危险解决计划(要挟情报+进犯溯源+专业安全服务)。
https://www.exploit-db.com/exploits/40064/
http://www.freebuf.com/vuls/107206.html