靶机:
https://www.vulnhub.com/entry/sunset-dawn,341/
下载(镜像):https://download.vulnhub.com/sunset/dawn.zip
难度:
- 中
目标:
- 获得 Root 权限
攻击方法:
- 主机发现
- 端口扫描
- 信息收集
- SAMBA 漏洞
- 任意文件上传
- 日志信息泄露
- 调度任务
- 提权方法 1
- 提权方法 2
- 潜在提权方法
主机发现
sudo arp-scan -l
发现靶机 IP 是 192.168.31.27
端口扫描和服务发现
sudo nmap -p- 192.168.31.27
sudo nmap -p139,445,3306 -A 192.168.31.27
SAMBA 漏洞
139 和 445 端口netbios - ssn
,表示该端口运行的是 NetBIOS 会话服务。NetBIOS(网络基本输入 / 输出系统)是一种用于在局域网中实现计算机之间通信和资源共享的协议,而 netbios - ssn
是 NetBIOS 会话层服务,常用于文件和打印机共享等功能。
发现可以使用 guest 账号
smbclient
是一个用于访问 SMB(Server Message Block)共享的命令行工具,通常用于与 Windows 文件共享或 Samba 服务器进行交互。
smbclient -L \\\\192.168.31.27
因为可以使用 guset 账号,所以我们在它提示需要密码的时候直接回车就可以了
-L
:是smbclient
的一个选项,-L
表示 “list”,即列出服务器上的共享资源。- 使用 \ 来转义,所以是四个 \
发现 ITDEPT 这个共享值得注意
任意文件上传
smbclient \\\\192.168.31.27\\ITDEPT
发现这个文件夹是空的,可以写文件进去,但是没办法进一步利用
访问 80 端口的 Web 页面
Web页面提示:
我们需要实施的事项:
安装摄像头视频源。
更新我们的个人相关信息
安装一个控制面板。
日志信息泄露
sudo dirsearch -u http://192.168.31.27/
进行目录扫描,发现一个 logs 的路径
只有 management 可以访问下载,打开发现是用 pspy 来进行系统进程信息的抓取
发现这个信息 /bin/sh -c /root/pspy64 > /var/www/html/logs/management.log
可以判断目录结构是 /var/www/html/
发现这个 /home/dawn/ITDEPT/
周期性的出现,而这个目录应该就是我们前面通过 samba 服务能访问到的目录,这个目录是可写的
grep "/home/dawn/ITDEPT/" management.log
过滤一下日志文件,查看其中的关于这个目录的内容
调度任务
grep "/home/dawn/ITDEPT/" management.log | grep product-control
发现每隔一段时间,它会对这个脚本赋予 777 权限,然后就去执行这个脚本
那我们是否可以创建一个 product-control
文件,其中写入我们的反弹 shell 的恶意代码,然后上传到目标服务器上,当这个调度任务去执行这个脚本的时候,或许就能突破边界了
果然成功进来了
python -c "import pty;pty.spawn('/bin/bash')"
升级一下 shell
提权方法 1
cat .bash_history
查看命令历史,查看系统管理员对系统的操作指令,发现一串密文 $1$$bOKpT2ijO.XcGlpjgAup9/
先用 john 尝试破解一下这个密文 ,破解成功 onii-chan29
john hash --wordlist=/usr/share/wordlists/rockyou.txt
sudo -l
发现可以执行 mysql 命令
用刚刚破解出来的秘密可以成功登录 mysql
\! bash
因为是 sudo 执行的 mysql,所以就直接获得了 root ,获得了 flag
在 MySQL 命令行客户端里,以反斜杠 \
开头的命令被称作特殊命令或者元命令。\!
就是其中一种元命令,它的作用是让你暂时离开当前的 MySQL 会话,转而在操作系统的 shell 中执行命令。当输入 \! bash
时,它会启动一个新的 bash
shell 进程。
提权方法 2
find / -type f -perm -u=s -ls 2>/dev/null
。当一个可执行文件设置了 SUID 权限后,用户执行该文件时,会以文件所有者的身份来运行,而不是以执行该文件的用户自身身份运行。
发现 zsh 可以
潜在提权方法
查看 ganimedes 账号的 .bash_history,里面有 root 账号的密码