我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!?
一、LINUX Cron Jobs 提权
1、计划任务:
???????Cron Jobs,顾名思义,是定时/计划任务的意思。root用户通过/etc/crontab 文件,可以设定系统定期执行一些预设的任务。特别需要注意的是:crontab 文件只能是在root权限下进行编辑。
2、漏洞背景:
????????当我们得到一个非root 权限的远程登录用户的时候,并且可以查看/etc/crontab 文件的内容,与此同时/etc/crontab 文件中的某个定时任务,存在短期内执行的且是当前非root 用户可编辑执行的脚本。假设,我们此时在该脚本文件中给某个shell命令(使用命令cat /etc/shells可以查看当前系统的可用shell命令)赋予suid权限,由于这些shell命令的所有者都默认是root的,所以我们可以直接等待定时任务的自动执行后,即可直接键入shell命令,从而弹出root权限的shell。
3、漏洞利用:
(1)实验环境:
1.靶机环境:
(1)虚拟机Ubuntu15.04【www.webtester.com】【192.168.97.135】
(2)脚本语言环境:perl/python/php均存在
2.攻击机:
(1)虚拟机Win7【192.168.97.130】
(2)Firefox+Burpsuite+蚁剑+msfconsole
3.网络环境:
(1)VMware搭建的NAT网络
(2)靶机链接:
URL:http://www.moontester.com/upload.php
(3)实验步骤:
前提: 假设此时已经获得靶机的一个webshell,同时通过msf获得了一个meterpreter的shell。
第一步:cat /etc/crontab #查看计划任务,发现每一分钟以root身份执行一次cleanup.py脚本文件,功能是删除cleanup目录下全部文件。 附: Crontab文件的格式说明,特别需要注意的是如果没有username字段,则任务不会执行。
第二步:ls -l /tmp/cleanup.py #查看该脚本文件的权限,发现当前用户可读可写可执行。
第三步:cat /tmp/cleanup.py #查看该脚本文件内容。 第四步:cat /etc/shells #查看当前系统可用的shell命令,发现有4个命令可以调出shell 第五步:ls -l /bin/sh #发现sh其实是dash的链接,同样rbash是bash的链接,一般的shell默认使用的bash。 第六步: 使用蚁剑编辑/tmp/cleanup.py文件 #与suid漏洞联动,给/bin/dash赋予suid文件属性 第七步:ls -l /bin/dash #检查是否拥有了suid属性 第八步: cat /var/log/cron.log #查看计划任务的日志,发现确实执行了该任务(由于这个日志功能是实验完成后加的,所以时间对不上。)
第九步: dash #直接键入dash命令,从而以root身份调出shell。
(4)附1:靶机提权环境设置
第一步:su root #切换到root用户 第二步:vim /etc/cron/ #编辑/etc/cron文件,添加定时任务 第三步:vim /tmp/cleanup.py #编辑文件并保存 第四步:chmod 777 /tmp/cleanup.py #给cleanup.py脚本文件赋予777权限 图略 第五步:mkdir /home/moonteam/cleanup #创建cleanup目录 图略 第六步:echo this_is_test > /home/moonteam/cleanup/test.txt #创建待删除的测试文件
(5)附2:靶机开启cron日志的方法
第一步:su root #切换到root用户 第二步:vim /etc/rsyslog.d/50-default.conf #编辑rsyslog文件 第三步:sudo service rsyslog restart #重启rsyslog 第四步:tail /var/log/cron.log #查看Cron日志 第五步:chmod o+r /var/log/cron.log #给其他人赋予读权限
|