最近想著學(xué)習(xí)linux提權(quán)的一些姿勢,這里簡單分享學(xué)習(xí)SUID提權(quán)的一些知識點。
站在用戶的角度思考問題,與客戶深入溝通,找到睢陽網(wǎng)站設(shè)計與睢陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋睢陽地區(qū)。
先來父復(fù)習(xí)一下linux文件的權(quán)限分配。
ls命令用來查看系統(tǒng)上面的文件、目錄的權(quán)限。
字段的第一個字符表示對象的類型。
之后是每三個字符為一組,每一組定義了3種訪問權(quán)限。
這三組分別表示文件所有者(Owner)、用戶組(Group)、其它用戶(Other Users)。
然后規(guī)定用數(shù)字4、2和1表示讀、寫、執(zhí)行權(quán)限。即r=4,w=2,x=1。
所以
chmod改變權(quán)限
chown用來更改某個目錄或文件的用戶名和用戶組
該命令需要root權(quán)限運行
而文件權(quán)限除了r、w、x外還有s、t、i、a權(quán)限。
SUID
當(dāng)執(zhí)行的文件被賦予了s權(quán)限,就被稱為Set UID,簡稱為SUID的特殊權(quán)限。八進(jìn)制數(shù)為4000。
舉個例子:
linux修改密碼的passwd就是個設(shè)置了SUID的程序。因為如果普通賬號cseroad需要修改密碼,就要訪問/etc/shadow,但是該文件只有root能訪問。那他是怎么修改的呢?原理:
查看該程序,發(fā)現(xiàn)被賦予了s權(quán)限。當(dāng)cseroad需要修改自己的密碼時,passwd程序的所有者為root,cseroad用戶執(zhí)行passwd 程序的過程中會暫時獲得root權(quán)限,所以可以修改/etc/shadow文件。
SGID
而當(dāng)s標(biāo)志出現(xiàn)在用戶組的x權(quán)限時則稱為SGID。八進(jìn)制數(shù)為2000。
當(dāng)用戶對某一目錄有寫和執(zhí)行權(quán)限時,該用戶就可以在該目錄下建立文件,如果該目錄用SGID修飾,則該用戶在這個目錄下建立的文件都是屬于這個目錄所屬的組。(父目錄跟隨)
SBIT
就是Sticky Bit,出現(xiàn)在目錄的其他用戶執(zhí)行權(quán)限X上,標(biāo)記為T,八進(jìn)制數(shù)為1000。對目錄有效,使用者只能對自己創(chuàng)建的文件或目錄進(jìn)行刪除/更名/移動等動作,而無法刪除他人文件(除非ROOT)
賦予s權(quán)限:chmod 4755 filename 或者 chmod u+s /usr/bin/find
取消s權(quán)限:chmod 755 filename 或者 chmod u-s /usr/bin/find
以centos為例。
還有額外的幾個命令
我們就可以通過覆蓋/etc/passwd文件,提權(quán)為root
默認(rèn)該命令沒有s權(quán)限
find命令
假如find命令被賦予s權(quán)限。
創(chuàng)建a.txt文件,執(zhí)行 /usr/bin/find a.txt -exec /bin/bash -p \; ,成功提權(quán)。
這里注意的是新版Linux系統(tǒng)對子進(jìn)程的suid權(quán)限進(jìn)行了限制,不同的操作系統(tǒng)結(jié)果也會不一樣。
具體細(xì)節(jié)參考
利用python可反彈得到root權(quán)限的shell
python命令
根據(jù) 查找python利用姿勢。
條件是sudo安裝時需要輸入當(dāng)前用戶密碼。
在實戰(zhàn)過程中,多查看 是否存在SUID提權(quán),以及使用searchsploit命令查看某程序是否存在本地提權(quán)漏洞。
直接在kali里面啟用apache服務(wù)
1:在終端輸入“vim /etc/apache2/ports.conf” - 鍵盤輸入i 進(jìn)入插入編輯模式 - 修改apache2默認(rèn)監(jiān)聽端口號為8080 - 編輯好后,按Esc鍵+“:wq” 保存退出 - 在終端輸入“/etc/init.d/apache2 start”
2:- 在瀏覽器地址欄輸入“”
直接用kali下的默認(rèn)web站點? ?網(wǎng)站環(huán)境就不搭建了? 直接在網(wǎng)站根目錄下上傳一個大馬? 前面挖洞傳webshell就跳過了? 直接開始提權(quán)
上傳一個大馬上去
先用大馬將臟牛提權(quán)利用工具上傳到服務(wù)器上
執(zhí)行
利用gcc編譯dirty.c文件
再執(zhí)行./dirty? 運行dirty
最下面一行是恢復(fù)回原先root賬號密碼的方法
這里就不切換到臟牛創(chuàng)建的用戶了
什么是suid提權(quán)呢?我理解的就是有個文件,它有s標(biāo)志,并且他輸入root,那么我們運行這個程序就可以有了root的權(quán)限,并且這個程序還得能執(zhí)行命令,不然沒什么用處,那么我們就能從普通用戶提升到了root權(quán)限了。
首先在本地查找符合條件的文件,有以下三個命令
常用的可用于suid提權(quán)的文件
我得Linux系統(tǒng)里面一個也沒有 這個就過去了 百度也有一些關(guān)于SUID提權(quán)的文章
Linux提權(quán)有很多大牛開發(fā)好的提權(quán)工具可以參考以下網(wǎng)址
在 Linux 系統(tǒng)中,提升權(quán)限的常用命令是 sudo。
sudo (superuser do)是一種 Linux 命令,允許普通用戶在需要時執(zhí)行具有特殊權(quán)限的命令,而無需切換到超級用戶帳戶。
例如,要執(zhí)行具有特殊權(quán)限的命令,如安裝軟件或修改系統(tǒng)配置文件,可以在命令前面加上 sudo。 例如 :
sudo apt-get install package-name
這個命令會讓你輸入你的密碼,如果你是一個有權(quán)限的用戶,那么你的命令將會被執(zhí)行。
需要注意的是,使用sudo命令需要輸入密碼,并且在一定時間內(nèi)不需要再次輸入密碼,所以使用sudo需要謹(jǐn)慎,并且如果使用錯誤可能會破壞系統(tǒng)。
一、簡介
sudo是Linux系統(tǒng)管理指令,是允許系統(tǒng)管理員讓普通用戶執(zhí)行一些或者全部root命令的一個工具。Linux系統(tǒng)下,為了安全,一般來說我們操作都是在普通用戶下操作,但是有時候普通用戶需要使用root權(quán)限,比如在安裝軟件的時候。這個時候如果我們需要切回root用戶下。安裝完畢后可能還需再切回普通用戶,這樣操作效率就會比較低,所以用sudo命令就會很方便。
執(zhí)行sudo的時候相當(dāng)于具備了root權(quán)限去執(zhí)行命令,執(zhí)行完畢后自動切回到普通用戶
2.打開/etc/sudoers文件進(jìn)行編輯
找到root ALL=(ALL) ALL ,加入
Linux下如何讓普通用戶具備sudo執(zhí)行權(quán)限(普通用戶提權(quán))
我這里的普通用戶是 zhangfei
首先還是需要知道root的密碼
加入一行即可:
將該普通用戶加入權(quán)限:
Linux系統(tǒng)中的用戶是分角色的,用戶的角色是由UID和GID來識別的(也就是說系統(tǒng)是識別的是用戶的UID、GID,而非用戶用戶名),一個UID是唯一(系統(tǒng)中唯一如同身份證一樣)用來標(biāo)識系統(tǒng)的用戶賬號(用戶名)。
文件的用戶與用戶組分為超級管理員,普通用戶和系統(tǒng)用戶。
1)超級管理員的UID=0,GID=0,也可以這么說系統(tǒng)只要是識別出某個用戶的UID\GID都為0時,那么這個用戶系統(tǒng)就認(rèn)為是超級管理員。
2)普通用戶(管理員添加的),默認(rèn)它的UID\GID是從500-65535,權(quán)限很小,只能操作自己的家目錄中文件及子目錄(注:nobody它的UID\GID是65534)。
3)系統(tǒng)用戶,也稱虛擬用戶,也就是安裝系統(tǒng)時就默認(rèn)存在的且不可登陸系統(tǒng),它們的UID\GID是1-499。
我們可以通過cat /etc/passwd命令來查看所有的用戶信息,例如下圖,第三列是UID,第四列是GID:
創(chuàng)建用戶
useradd user1 創(chuàng)建用戶user1
useradd -e 12/30/2021 user2 創(chuàng)建用戶user2,有效期到2021-12-30
設(shè)置用戶密碼
passwd user1 設(shè)置密碼,有設(shè)置密碼的用戶不能用
這里設(shè)置密碼時可能會碰到密碼保護(hù)機制問題,這里需要注釋掉保護(hù)機制的問題
這個時候需要在編輯/etc/pam.d/system-auth文件,將其中的password requisite
和password sufficient兩行注釋掉,如下圖:
創(chuàng)建用戶組
groupadd –g 888 users 創(chuàng)建一個組users,其GID為888
groupadd users 不用g參數(shù),使用默認(rèn)的組ID
命令 gpasswd為組添加用戶
只有root和組管理員能夠改變組的成員:
gpasswd –a user1 users 把 user1加入users組
gpasswd –d user1 users 把 user1退出users組
命令groupmod修改組
groupmod –n user2 user1 修改組名user1為user2
groupdel刪除組
groupdel users 刪除組users
真正從安全性角度上來考慮的話,是要控制用戶一定執(zhí)行命令的權(quán)限,也就是哪些用戶可以執(zhí)行哪些命令,不可以執(zhí)行哪些命令,因此也就有了sudo這個應(yīng)用,對于sudo提權(quán),也就是修改/etc/sudoers的配置文件。
我們已經(jīng)獲得了想要攻擊的計算機的權(quán)限。于是將權(quán)限盡可能提升就非常重要。通常,我們能訪問較低權(quán)限的用戶賬戶(計算機用戶),但是,我們的目標(biāo)賬戶可能是管理員賬戶。這一章中我們會探索幾種提升權(quán)限的方式。
這個秘籍中,我們會通過使用模擬令牌,模擬網(wǎng)絡(luò)上的另一個用戶。令牌包含用于登錄會話和識別用戶、用戶組合用戶權(quán)限的安全信息。當(dāng)用戶登入 Windows 系統(tǒng)是,它們會得到一個訪問令牌,作為授權(quán)會話的一部分。令牌模擬允許我們通過模擬指定用戶來提升自己的權(quán)限。例如,系統(tǒng)賬戶可能需要以管理員身份運行來處理特定的任務(wù)。并且他通常會在結(jié)束后讓渡提升的權(quán)限。我們會使用這個弱點來提升我們的訪問權(quán)限。
為了執(zhí)行這個秘籍,我們需要:
我們從 Meterpreter 開始探索模擬令牌。你需要使用 Metasploit 來攻擊主機,以便獲得 Meterpreter shell。你可以使用第六章的秘籍之一,來通過 Metasploit 獲得訪問權(quán)限。
下面是具體步驟:
這個秘籍中,我們以具有漏洞的主機開始,之后使用 Meterpreter 在這臺主機上模擬另一個用戶的令牌。模擬攻擊的目的是盡可能選擇最高等級的用戶,最好是同樣跨域連接的某個人,并且使用它們的賬戶來深入挖掘該網(wǎng)絡(luò)。
這個秘籍中,我們會在一臺具有漏洞的主機上進(jìn)行提權(quán)。本地提權(quán)允許我們訪問系統(tǒng)或域的用戶賬戶,從而利用我們所連接的當(dāng)前系統(tǒng)。
為了執(zhí)行這個秘籍,我們需要:
讓我們在 Meterpreter shell 中開始執(zhí)行本地提權(quán)攻擊。你需要使用 Metasploit 攻擊某個主機來獲得 Meterpreter shell。你可以使用第六章的秘籍之一,來通過 Metasploit 獲得主機的訪問。
這個秘籍中,我們使用了 Meterpreter 對受害者的主機進(jìn)行本地提權(quán)攻擊。我們從 Meterpreter 中開始這個秘籍。之后我們執(zhí)行了 getsystem 命令,它允許 Meterpreter 嘗試在系統(tǒng)中提升我們的證書。如果成功了,我們就有了受害者主機上的系統(tǒng)級訪問權(quán)限。
這個秘籍中,我們會探索社會工程工具包(SET)。SET 是個包含一些工具的框架,讓你能夠通過騙術(shù)來攻擊受害者。SET 由 David Kennedy 設(shè)計。這個工具很快就成為了滲透測試者工具庫中的標(biāo)準(zhǔn)。
掌握 SET 的步驟如下所示。
這個秘籍中,我們探索了 SET 的用法。SET 擁有菜單風(fēng)格的接口,使它易于生成用于欺騙受害者的工具。我們以初始化 SET 開始,之后,SET 為我們提供了幾種攻擊方式。一旦我們選擇了它,SET 會跟 Metasploit 交互,同時詢問用戶一系列問題。在這個秘籍的最后,我們創(chuàng)建了可執(zhí)行文件,它會提供給我們目標(biāo)主機的 Meterpreter 活動會話。
作為替代,你可以從桌面上啟動 SET,訪問 Applications | Kali Linux | Exploitation Tools | Social Engineering Tools | Social Engineering Toolkit | Set 。
將你的載荷傳給受害者
下面的步驟會將你的載荷傳給受害者。
這個秘籍中,我們會探索如何使用 Metasploit 來收集受害者的數(shù)據(jù)。有幾種方式來完成這個任務(wù),但是我們會探索在目標(biāo)機器上記錄用戶擊鍵順序的方式。收集受害者數(shù)據(jù)可以讓我們獲得潛在的額外信息,我們可以將其用于進(jìn)一步的攻擊中。對于我們的例子,我們會收集目標(biāo)主機上用戶輸入的擊鍵順序。
為了執(zhí)行這個秘籍,我們需要:
讓我們開始通過 Meterpreter shell 來收集受害者數(shù)據(jù)。你需要使用 Metasploit 攻擊某個主機來獲得 Meterpreter shell。你可以使用第六章的秘籍之一,來通過 Metasploit 獲得目標(biāo)主機的訪問。
這個秘籍中,我們使用 Meterpreter 收集了受害者的數(shù)據(jù)。
有一種不同的方式,你可以使用它們來收集受害者機器上的數(shù)據(jù)。這個秘籍中,我們使用了 Metasploit 和 Metasploit keyscan 來記錄擊鍵順序,但是我們也可以使用 Wireshark 或 airodump-ng 來更簡單地收集數(shù)據(jù)。
這里的關(guān)鍵是探索其它工具,便于你找到最喜歡的工具來完成你的目標(biāo)。
這個秘籍中,我們會使用 Metasploit 來清除我們的蹤跡。在黑進(jìn)主機之后執(zhí)行清理是個非常重要的步驟,因為你不想在經(jīng)歷所有麻煩來獲得訪問權(quán)限之后還被人查水表。幸運的是,Metasploit 擁有一種方式來非常簡單地清除我們的蹤跡。
為了執(zhí)行這個秘籍,我們需要:
需要執(zhí)行步驟如下所示:
這個秘籍中,我們使用 Meterpreter 來清理我們在目標(biāo)主機上的蹤跡。我們從 Meterpreter 中開始這個秘籍,并啟動了 IRB(一個 Ruby 解釋器 shell)。下面,我們指定了想要清理的文件,并且最后鍵入了 Log.clear 命令來清理日志。要記住,一旦我們黑進(jìn)了某個主機,你需要在最后執(zhí)行這一步。你不能在清理蹤跡之后再執(zhí)行更多的操作,這樣只會更加更多的日志條目。
這個秘籍中,我們會使用 Metasploit persistence 來創(chuàng)建永久后門。一旦你成功獲得了目標(biāo)機器的訪問權(quán)限,你需要探索重新獲得機器訪問權(quán)的方式,而不需要再次黑進(jìn)它。如果目標(biāo)機器的用戶做了一些事情來終端連接,比如重啟機器,后門的作用就是允許重新建立到你機器的連接。這就是創(chuàng)建后門非常方便的原因,它可以讓你控制目標(biāo)機器的訪問。
為了執(zhí)行這個秘籍,我們需要:
讓我們開始植入我們的永久后門。你需要使用 Metasploit 攻擊某個主機來獲得 Meterpreter shell。你可以使用第六章的秘籍之一,來通過 Metasploit 獲得目標(biāo)主機的訪問。
這個秘籍中,我們使用 Meterpreter 來建立永久后門。我們在黑進(jìn)目標(biāo)主機并獲得 Meterpreter shell 之后開始了這個秘籍。之后我們通過瀏覽幫助文檔那個,探索了一些可用的永久化方式。最后,我們通過運行安裝命令并設(shè)置它的選項來完成后門的安裝。
這個秘籍中,我們會對目標(biāo)進(jìn)行中間人(MITM)攻擊。MITM攻擊允許我們竊聽目標(biāo)和別人的通信。在我們的例子中,當(dāng)某個 Windows 主機在 收發(fā)郵件時,我們使用 Ettercap 來竊聽它的通信。
為了執(zhí)行這個秘籍,我們需要:
讓我們啟動 Ettercap 來開始中間人攻擊。
這個秘籍包括 MITM 攻擊,它通過 ARP 包毒化來竊聽由用戶傳輸?shù)臒o線通信。