本文最初发布于“合天网安实验室”,靶机地址:,417/,相关实验:(复制链接进行实验)(Node 1.0是一个中等难度的Boot2root/CTF挑战,靶场环境最初由HackTheBox创建,实验目标是获取两个flag)。技术点目标发现nmap -sP参数用于进行局域网主机的ping扫描,目标地址为192.168.56.5。
使用nmap -sS -A -v 192.168.56.5查看详细的扫描结果。-sS表示进行半开放扫描,-A表示进行操作系统指纹和版本检测,-v表示输出详细情况。可以看到开放了22、80、10000三个端口,并且80端口存在robots.txt和路径/ona。
版本为18.1.1的opennetadmin存在RCE漏洞,在GitHub上可以找到相应的exp进行利用,或者使用searchsploit。但需要注意的是,要对bash脚本进行格式转换,否则会报错,可以使用dos2unix命令转换47691.sh,此外,这里的shell不能转换成TTY。
接下来的问题是如何进行提权。经过测试发现,无法执行的命令没有回显,并且无法执行cd命令,但可以使用ls和cat命令。这里肯定存在权限控制,可以使用find / -type f -user www-data命令查看该用户可以读取的文件,除了/proc,还有/var/www/html/reports/.htaccess和/var/log/ona.log。
通过读取var/www/html/reports/.htaccess文件,可以找到AuthUserFile的路径为/var/www/.htpasswd。读取该文件,可以得到用户名douglas和HASH密码$apr1$9fgG/hiM$BtsL9qpNHUlylaLxk81qY1,提示是只包含aefhrt的十个字符。
douglas:$apr1$9fgG/hiM$BtsL9qpNHUlylaLxk81qY1
# To make things slightly less painful (a standard dictionary will likely fail),
# use the following character set for this 10 character password: aefhrt
可以使用hash-identifier查看使用的是哪种HASH算法,结果为MD5(APR)。然后使用crunch生成相应的字典,命令格式为crunch [charset string] [options],这里生成只包含aefhrt的10个字符的字典,可以使用命令crunch 10 10 aefhrt -o pass.txt,更多信息可以参考Linux下的字典生成工具Crunch和crunch命令详解。
最后,使用hashcat进行HASH破解,命令格式为hashcat [options]… hash|hashfile|hccapxfile [dictionary|mask|directory]…,这里使用的命令为hashcat -m 1600 -a 0 -o res hash.txt pass.txt。其中,-m表示HASH类型,-a表示攻击方式,-o表示输出结果,更多参数可以参考Hashcat密码破解攻略。在Kali中运行时一直报错,所以转移到WSL2中运行,命令为hashcat -m 1600 -a 0 -o res hash.txt pass.txt –force。
最终密码为fatherrrrr,也可以使用john进行破解,命令为john –wordlist=pass.txt hash.txt,但速度可能会有问题。使用ssh连接ssh douglas@192.168.56.5。
cp .ssh/id_rsa.pub /tmp/authorized_keys
chmod 777 /tmp/authorized_keys
sudo -u jen /bin/cp /tmp/authorized_keys /home/jen/.ssh/
这里是一个TTY,但仍然存在权限控制,使用sudo -l查看可以使用哪些命令,结果为(jen) NOPASSWD: /bin/cp,这里有点奇怪,douglas可以使用jen的身份运行cp命令。先访问一下home目录,发现douglas和jen这两个用户,但只能使用jen的cp命令,且没有jen的密码。值得注意的是,如果jen用户的/home/jen/.ssh/authorizedkeys文件包含douglas的公钥,那么就可以使用douglas的idrsa文件登录jen的SSH,实现免密登录jen的SSH。这里将文件复制到/tmp目录下是因为jen没有权限访问douglas目录下的文件。
然后使用ssh连接ssh -i id_rsa jen@127.0.0.1,成功登录jen,看到提示mail,先执行echo $(find / -type f -user jen) > 1.txt查看,发现有一个/var/mail/jen的文件可以读取。
或者直接输入mail命令也可以查看。读取一下,内容如下:关键词:change Moss’s password、his password is now Fire!Fire!。接着使用ssh连接moss用户ssh moss@127.0.0.1。
在当前目录发现了一个隐藏目录.games,访问后发现一个具有root权限的二进制文件upyourgame。运行之后,发现自己神奇地变成了root用户。最后,flag位于/root目录中,为8f3b38dd95eccf600593da4522251746。彩蛋时刻,实际上,在获取douglas的密码后,可以使用虚拟机登录并进行操作,这里使用的是moss的账号密码,效果相同。