Vulnhub DC-1 Walkthrough


Vulnhub DC-1 Walkthrough

前言

昨晚上睡觉之前连夜下载的一堆靶场,全是 DC 系列的,不出意外地话,接下来的好多好多天,我更新的都是这个系列的靶场了,一共是九个,我应该是一周会上新三个。太多了实在是没时间去做,哈哈,好,就这么说定了,一周三个。吟诗一首吧:

蝶恋花
晏殊

紫菊初生朱槿坠。
月好风清,
渐有中秋意。
更漏乍长天似水。
银屏展尽遥山翠。
绣幕卷波香引穗。
急管繁弦,
共庆人间瑞。
满酌玉杯萦舞袂。
南春祝寿千千岁。

这个靶场的通关方式和以往的都不太一样,这个使用到了 msfconsole,一个非常牛逼的攻击包。

信息收集

IP 信息

当然还是使用我们的 netdiscover 啦,不然的话用 arp-scan 也行。

netdiscover arp-scan -l

好,IP 地址已经获取到了,结果就是 10.0.2.7

端口扫描

nmap -A 10.0.2.7 -p-
Starting Nmap 7.92 ( https://nmap.org ) at 2022-05-19 23:12 EDT
Nmap scan report for bogon (10.0.2.7)
Host is up (0.00073s latency).
Not shown: 65531 closed tcp ports (reset)
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)
| ssh-hostkey: 
|   1024 c4:d6:59:e6:77:4c:22:7a:96:16:60:67:8b:42:48:8f (DSA)
|   2048 11:82:fe:53:4e:dc:5b:32:7f:44:64:82:75:7d:d0:a0 (RSA)
|_  256 3d:aa:98:5c:87:af:ea:84:b8:23:68:8d:b9:05:5f:d8 (ECDSA)
80/tcp    open  http    Apache httpd 2.2.22 ((Debian))
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/ 
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt 
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt 
|_/LICENSE.txt /MAINTAINERS.txt
|_http-title: Welcome to Drupal Site | Drupal Site
|_http-generator: Drupal 7 (http://drupal.org)
|_http-server-header: Apache/2.2.22 (Debian)
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          35791/tcp   status
|   100024  1          41558/udp6  status
|   100024  1          45244/udp   status
|_  100024  1          50722/tcp6  status
35791/tcp open  status  1 (RPC #100024)
MAC Address: 08:00:27:89:DA:D7 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.2 - 3.16
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.73 ms bogon (10.0.2.7)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.93 seconds

可以看出,目标主机一共开放了四个端口,分别是 22/80/111/35791 分别是 ssh/http/rpcbind/不知道 四个服务。

枚举 HTTP

  1. 首先看一下网页有什么内容,以及源代码有什么信息。

然而并没有什么有价值的信息,所以下一步就是进行目录扫描,查看是否有什么有价值的信息。

  1. 使用工具进行目录扫描
dirb nikto gobuster

都没有获得什么有用的信息,我再去看看另外的俩端口,至于为什么在 web 界面我没有使用其他的技术,比如说注入什么的,因为我猜测这个靶场的解法很可能不是这样的,所以就没用,而是一步一步走下来。图我就不放了,经过测试另外的两个端口不是 web 服务,所以说这个路子不是很好走。至此 HTTP 的枚举失败。

MSFCONSOLE

这个时候就换一种思路,就是说他的这个网站的 CMS 有没有什么可以利用的点呢。就像之前爆出来的什么 帝国/织梦 的漏洞,所以这里也测试一下,首先探测一下是什么 CMS

whatweb 10.0.2.7
http://10.0.2.7 [200 OK] Apache[2.2.22], Content-Language[en], Country[RESERVED][ZZ], Drupal, HTTPServer[Debian Linux][Apache/2.2.22 (Debian)], IP[10.0.2.7], JQuery, MetaGenerator[Drupal 7 (http://drupal.org)], PHP[5.4.45-0+deb7u14], PasswordField[pass], Script[text/javascript], Title[Welcome to Drupal Site | Drupal Site], UncommonHeaders[x-generator], X-Powered-By[PHP/5.4.45-0+deb7u14]

好!这个已经是识别出来了,所以现在去 msfconsole 搜索一下。

  1. 打开 msfconsole

  1. 然后搜索 Drupal

  1. 测试哪一个模块可以使用。发现第二个可以。

  1. 设置好相关参数。并运行。

发现已经成功的反弹 shell 登陆了目标主机。并且获得了第一个 flag-1。

提权

还是老样子运行那个脚本,至于是哪一个在之前的博客里面可以找到,名字的话就叫 linpeas.sh 网上应该也能下载到。

可以看到这里是有可以利用的 SUID 的提权方式的,详情见下图。

另一种方式

其实像是上面那样的提权方式未免实在是有些太粗暴了,是吧,咱们是来练习技术的,当然不能直截了当的这么粗暴的是吧。咱们还是要按照作者的思路走一下,刚刚咱们没有看 flag-1 里面的内容,现在就去看一下哈。

Every good CMS needs a config file - and so do you.

这句话其实就是提示我们可以去搜一下他的默认的配置文件,可能有新的惊喜。

通过这个文件里面的内容,我得到了第二个flag。其中有一些提示,说暴力和字典攻击不是唯一的解法,那就是一定有其他的方法。最后一句话,你会用这证书做什么?证书,那要留意一下了。

先随便浏览一下数据库有什么重要的信息。然后在数据库中发现了一个叫做 users 的表,记录了用户名和密码。

但是这里的密码是一串密文 ,既然作者说了暴力不是唯一的解法,所以我就放弃了使用 john 跑一下的想法,这里就有一个思路,就是能不能我们自己构造一个密文替换上去,但是规则是什么?我是不知道的,那我就在系统中搜一下,我相信一定是存在的。搜一下系统里面有没有什么名字带有 hash 的文件。

看了一下,脚本的用法就一个参数,就是后面想加密的密码。加密一下 123456 试一下。

咱们去数据库替换一下子。声明一下,那个 hash 值最后一位是个 . 我忘了加上,以至于登不上,找了好久才发现问题。

成功找到了 flag3。

说是有特殊权限的将会帮助我们找到密码,但是你需要执行这命令才会确定如何获得 shadow 的文件内容。先去看一下 passwd 文件是否有什么有效信息。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:104::/var/spool/exim4:/bin/false
statd:x:102:65534::/var/lib/nfs:/bin/false
messagebus:x:103:107::/var/run/dbus:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:105:109:MySQL Server,,,:/nonexistent:/bin/false
flag4:x:1001:1001:Flag4,,,:/home/flag4:/bin/bash

发现了一个 flag4,去他的家目录看一下,发现了第四个 flag 文件。

www-data@DC-1:/home/flag4$ ls -al
ls -al
total 28
drwxr-xr-x 2 flag4 flag4 4096 Feb 19  2019 .
drwxr-xr-x 3 root  root  4096 Feb 19  2019 ..
-rw------- 1 flag4 flag4   28 Feb 19  2019 .bash_history
-rw-r--r-- 1 flag4 flag4  220 Feb 19  2019 .bash_logout
-rw-r--r-- 1 flag4 flag4 3392 Feb 19  2019 .bashrc
-rw-r--r-- 1 flag4 flag4  675 Feb 19  2019 .profile
-rw-r--r-- 1 flag4 flag4  125 Feb 19  2019 flag4.txt
www-data@DC-1:/home/flag4$ cat flag4.txt
cat flag4.txt
Can you use this same method to find or access the flag in root?

Probably. But perhaps it's not that easy. Or maybe it is?
www-data@DC-1:/home/flag4$ 

最后一步就是找特殊权限了,上面已经找到了,就是那个 find,怎么利用,上面也已经写了,可以去上面看看。好了,教程到此结束!happy hacking.


文章作者: Justice
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Justice !
  目录