天天看点

Linux权限维持之PAM万能密码登录

0x00-前言 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

PAM包下载地址:

0x01-实验环境

Centos7 root权限

PAM版本1.1.8

Linux权限维持之PAM万能密码登录

安装gcc

首先下载对应版本的PAM包,解压

修改moudles/pam_unix/pam_unix_auth.c文件,修改处位于180行

Linux权限维持之PAM万能密码登录

改成如下代码,代码很简单。修改判断逻辑,并且记录管理员的登录到/usr/share/java/.null中

Linux权限维持之PAM万能密码登录

代码

修改完后在Linux-PAM-1.1.8.tar.gz 目录中执行./configure && make

Linux权限维持之PAM万能密码登录

OK,遇到yywrap未定义引用不要慌,执行

编译好的文件在modules/pam_unix/.libs/中

Linux权限维持之PAM万能密码登录

随后替换 pam_unix.so文件,系统原本的认证文件为/lib64/security/pam_unix.so

32位系统为/lib/security/pam_unix.so

随后关闭SElinux

验证

Linux权限维持之PAM万能密码登录

使用goodboy密码顺利登录系统。当然我使用原本root的密码也能登录,并且会被记录在/usr/share/java/.null中。

Linux权限维持之PAM万能密码登录
Linux权限维持之PAM万能密码登录