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

安裝gcc
首先下載下傳對應版本的PAM包,解壓
修改moudles/pam_unix/pam_unix_auth.c檔案,修改處位于180行
改成如下代碼,代碼很簡單。修改判斷邏輯,并且記錄管理者的登入到/usr/share/java/.null中
代碼
修改完後在Linux-PAM-1.1.8.tar.gz 目錄中執行./configure && make
OK,遇到yywrap未定義引用不要慌,執行
編譯好的檔案在modules/pam_unix/.libs/中
随後替換 pam_unix.so檔案,系統原本的認證檔案為/lib64/security/pam_unix.so
32位系統為/lib/security/pam_unix.so
随後關閉SElinux
驗證
使用goodboy密碼順利登入系統。當然我使用原本root的密碼也能登入,并且會被記錄在/usr/share/java/.null中。