靶机地址:EnuBox: Mattermost ~ VulnHub
Name:EnuBox:Mattermost
靶机介绍:The Mattermost chatting system may or may not hold sensitive information. Can you find your way in?
拿到靶机 IP
之后上神器 NMAP
对它就是一顿梭哈:
1 |
nmap -A -p- -T4 192.168.1.137 |
扫描完成后,发现它开放了 21
(ftp)、22
(ssh)、80
(http)、3389
(XRDP远程桌面)、8065
(web) 端口。
其中 ftp
可以用匿名用户 anonymous
登陆:
由上图所示登陆到它的 ftp
后没有显示任何文件!那么我们还是先来看看 web
(80、8065)的目录文件把:
1 2 |
dirb http://192.168.1.137 dirb http://192.168.1.137:8065 |
枚举目录出来后先是看了 80
端口的 index.html
,它显示的是 403
没有找到,但是页面上的信息提示有一个 README.md
的文件:
我访问 README.md
发现是 404
:
1 |
http://192.168.1.137/README.md |
这个时候先放弃 80
端口,来到 8065
端口看看,它扫描出来是有一个 robots.txt
文件,访问但是空白的:
1 |
http://192.168.1.137:8065/robots.txt |
这个时候我直接访问它的首页发现是一个登陆页面:
1 |
http://192.168.1.137:8065/login |
它使用的 CMS
是 Mattermost
,它是一款易于使用、经过简化且可扩展的团队通信和企业消息传送系统。
尝试若口令无果,Google
上只有它的默认 Mysql
的账号密码,我用来尝试登陆 Web
无果。
思路回到上面,刚刚打开 80
端口的 Web
页面它提示了一个 README.md
文件,是不是作者告诉我们那个是关键点呢?刚好我们有了它的 ftp
匿名用户可以登陆,但是刚刚看过了没有任何文件,正当我一筹莫展的时候我下意识的在 tftp
里尝试能不能把 README.md
下载到本地,没想到真成了!
1 2 3 |
# 因为我写到这里的时候是第二天了,我重启后靶机的 IP 就变成 192.168.1.138 了! tftp 192.168.1.138 # TFTP是一个传输文件的简单协议,它基于UDP协议而实现的。 |
把 README.md
下载到本地打开后发现我们得到了一个账号和密码:
1 |
admin:ComplexPassword0! |
随后我登陆到了它到后台:
1 |
http://192.168.1.138:8065/login |
来到后台后我大致看了看它的后台消息,翻译过来好像是一些没用的诗句?
额。。。先不管它!我又去了 exploit-db
上寻找了有关 Mattermost
的漏洞,但是没有得到我想要的信息:
随后我在后台的头像以及能上传的地方尝试看看能不能获取到一枚 webshell
,很显然我没成功,我太菜了。
正当我一筹莫展的时候我发现了一个系统控制台找到了一个插件 zoom
:
它默认是 False
关闭的,我把它开启 True
后得到了一枚 URL
:
1 |
http://localhost/JK94vsNKAns6HBkG/AxRt6LwuA7A6N4gk/index.html |
这个时候我是在 8065
端口打开的 URL
发现没有这个页面:
但是用 80
端口的 web
去访问这个页面的时候却得到一段提示:
1 |
http://192.168.1.138/JK94vsNKAns6HBkG/AxRt6LwuA7A6N4gk/index.html |
1 |
Hello Admin, FTP credentials help you edit, transfer and delete files from your site. This is why it's important to keep these credentials handy. FTP Credentials: ftpuser / ftppassword Make sure to keep these to yourself. |
通过这个提示我有得到一枚账号和密码,是 FTP
的:
1 |
ftpuser:ftppassword |
随后我便用得到的账号和密码成功登陆到它的 FTP
服务里:
1 |
ftp 192.168.1.148 |
登陆进去后发现有一个 examples.desktop
文件,还有一个 users
目录、mattermost
目录下有一个 message
文件,我把他们都下载到本地后查看了一下examples.desktop
文件没发现什么:
查看 message
文件发现里面有一段话:
这个时候有点懵了,整半天你给我了一句 Welcome!!!
?但是后来把一切结合起来想了想,刚开始是有一个 users
目录,然后是 mattermost
目录下有一个 message
文件,文件内容是 Welcome!!!
。
柯南:真実はいつも一つ
(真相只有一个),mattermost
是一个用户名,而 message
文件内容 Welcome!!!
就是密码!!!按照我这个推理我尝试登陆到它到 SSH
没想到真成了!!!
1 2 3 |
USER:mattermost PASS:Welcome!!! ssh [email protected] |
玩 CTF
靶机就是要多思考,根据我们得到到信息要去想它为什么会有这个信息?这个信息的线索是干嘛的?我可以用得到的信息做写什么?
毕竟CTF
就是这样不按常理出牌,你得像个黑客,以黑客的思维去思考问题!
登陆到 mattermost
用户后,我习惯性的 sudo -l
发现它没有权限去执行 sudo
,需要密码:
接着我查看了一下有没有一些文件可以以 SUID
权限去执行:
1 |
find / -perm -u=s -type f 2>/dev/null |
结果发现了刚好有一个文件 secret
文件是可以以 SUID
权限执行的,而且刚好在我所登陆的 mattermost
用户的 家目录下的桌面:
1 |
/home/mattermost/Desktop/secret |
随后我来到了 mattermost
用户的家目录,里面有一些目录和文件,除了 Desktop
目录里有文件,其他目录都是空的!
我先是看了看 README.md
文件,发现里面是一段话,大概意思是你有一个密钥,而且在 30
天后会过期
1 2 3 4 5 6 7 8 |
Hello User, Your secret key is 48912. Do not share this key with anyone. !! NOTE:: This key is not valid after 30 days and has been changed by our internal systems. !! NOTE:: Please contact the support desk to get new secret key. |
吓的我迫不及待地去运行 secret
文件,运行后它让你输入密码,我用刚刚得到的密码发现出错了:
很显然密码以及过期了!这个时候怎么办呢?我先是把 secret
文件使用 nc
传到 KALI
:
之后各种百度各种Google关于逆向的文章,临时拜佛脚! WEB狗表示伤不起,一路硬钢下来的!呜呜呜~~~
经过查看源代码发现了一段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
undefined8 main(void) { long in_FS_OFFSET; int local_14; long local_10; local_10 = *(long *)(in_FS_OFFSET + 0x28); local_14 = 0; puts("Hello Admin, Please enter the secret key:"); __isoc99_scanf(&DAT_00100992,&local_14); if (local_14 == 0xf447) { setuid(0); setgid(0); system("/bin/bash"); } else { printf("Your is either invalid or expired\n."); } if (local_10 != *(long *)(in_FS_OFFSET + 0x28)) { /* WARNING: Subroutine does not return */ __stack_chk_fail(); } return 0; } |
拿到源代码之后开始审计,幸好以前学过一点点 C
语言,还是能看懂一点的,具体是要让 local_14
的值等于 0xf447
,这个时候就成功运行 system
函数,切换到 /bin/bash
!0xf447
是十六进制
,我把它转化为十进制
为:62535
最后运行 secret
文件获得 root
权限!
最终也是在 /root/Desktop
下拿到 Flag
!
交流群:
微信公众号:
知识星球: