端口扫描

基本上是先从21,80端口入手了,先去80看看

Web

gobuster dir -u http://10.10.169.214/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

一边日常挂着扫目录,然后我们看看网页

到后面发现扫不出啥东西。。。

从nmap扫出来的两个页面看看

icons应该是存放一些图标图片什么的,没太多有用的信息

backups里面

下载得到一个gpg文件和一个私钥

gpg -d CustomerDetails.xlsx.gpg

发现要密码,上网搜了一下,要先导入私钥

gpg --import priv.key
gpg --decrypt-file CustomerDetails.xlsx.gpg

解出一个Excel文件,kali里面好像打不开,我是在windows主机里打开的

发现是三个客户名称?

发现ftp不能匿名登录,那就试着用得到的三个用户来登录

发现用paradox能成功ftp登录,在ftp登录后最好输入“binary”,来写换成二进制模式来下载文件,否则文件可能损坏

把觉得可能有用的东西都get下来,backup.zip和下载到的是一个东西,发现其他东西也没啥用

既然这样,想到了前几个靶机做过在ftp(还是smb?)上传shell,因为和web服务器是同一个目录,我们通过get下来的文件也可以知道确实就是web服务器的目录

那我们就上传一个PHP的reverse shell

开启监听

上传shell

在浏览器中访问

成功接收!

whoami发现身份是apache

抽象了,找不到任何东西,看一下/etc/passwd,发现有paradox和james两个用户可以执行命令,

看了下WP,发现web的标志竟然藏在/usr/share/httpd/web.flag,这咋找得到。。。

thm{0ae72f7870c3687129f7a824194be09d}

发现直接ssh连接paradox会被拒绝访问。。。

试了半天,才发现,我不是可以在apache登录的shell里面直接su paradox吗。。。我是伞兵

登录后发现user.txt在james的目录里,还是访问不了

试着在ftp中PUT上传linpeas.sh,检测一下漏洞,反正提权也用得到,我用的是这个

https://github.com/BRU1S3R/linpeas.sh

发现james用户有一个nfs共享,那就试着在本地创建一个挂载点挂在到/home/james

sudo mkdir /tmp/nfsmount
sudo mount -o rw,vers=3 10.10.169.214:/home/james /tmp/nfsmount

结果发现挂载不上去,好像NFS默认不能从外部访问?

WP的做法是建立一个ssh隧道,来将本地的NFS端口映射至远程主机

在此之前还要现将ssh公钥上传到/home/paradox/.ssh文件夹来进行ssh连接

ssh-keygen -t rsa

先在kali中生成密钥对,包含一对公钥和私钥(如果之前没有生成过的话)

我这里全部按回车,没有选择用密码来保护私钥,存放的地方默认为/home/用户名/.ssh

手动添加公钥(id_rsa.pub)至/home/paradox/.ssh/authorized_keys

在paradox的shell中,追加在后面就行

echo "你自己的id_rsa.pub"|cat >>authorized_keys
sshpass -p "ShibesAreGreat123" ssh paradox@10.10.169.214 -L 2049:127.0.0.1:2049

sudo mount -v -t nfs4 127.0.0.1:/ /tmp/nfsmount

然后进行挂载,但是不知道为什么挂载到/home/james显示目录不存在,但是挂载到根目录显示可以。。。

在kali中,cd /tmp/nfsmount

user.txt

thm{3693fc86661faa21f16ac9508a43e1ae}

提权

让我们回到之前linpeas给出的报告,显示nfs启用的no_root_squash

下面给出解释

默认情况下,NFS共享会将root用户更改为nfsnobody用户,即非特权用户帐户。通过这种方式,所有root创建的文件都归nfsnobody所有,这将阻止上载设置了setuid位的程序。但是,如果使用no_root_squash is used选项,远程root用户可以更改共享文件系统上的任何文件,并将安装木马的应用程序留给其他用户无意中执行。

也就是说我们可以上传文件至挂载目录,然后在攻击机中以root身份给文件SUID位,就可以在远程主机上以root身份来运行文件了

先ssh连接至james来运行我们的shell,和之前一样,将我们的ssh公钥复制到/home/james/authorized_keys来进行登录

在ssh连接中,拷贝一个bash二进制文件至挂载处

cp /usr/bin/bash /home/james/

在kali的挂载点中

sudo chmod +xs bash 

然后在ssh中

成功提权

root.flag

thm{a4f6adb70371a4bceb32988417456c44}

碎碎念

打了好久的一个靶机,是Overpass系列中最难的一个吧,对于NFS也好好地复习了一下,对于ssh也有了更深入的理解,总之收获非常大!