Leakvent 25: Berlin

Bis zum 39C3 öffne ich täglich ein Türchen zu den langweiligsten Datenlecks der letzten Jahre. Es geht um .git, .env, exponierte dev-Umgebungen und andere technisch langweilige Ursachen. Aber manchmal ist interessant, was sich hinter einem Türchen verbirgt. Alle Türchen sind hier zu finden.

Auf einem Server unter █.berlin.boanet.de war 2024 ein Symfony Profiler offen zugänglich erreichbar. Dort lagen wie üblich Konfigurationsdaten sowie Zugangsdaten für ein Ticketsystem.

Über das Ticketsystem konnten u.a. gefunden werden:

  • EALS-Datensätze mit personenbezogenen Daten (Name, Adresse, E-Mail-Adresse und Handynummer). EALS ist ein Elektronisches Anmelde- und Leitsystem der der Berliner Senatsverwaltung für Bildung, Jugend und Wissenschaft. Es soll Anmeldeprozesse Berliner Schulen vereinfachen und Kommunikation zentralisieren.
  • Anmeldungen zur “WiKo” (Name, Telefonnummer, Geburtsdatum, Geburtsland und Staatsangehörigkeit, Sprachstand). WiKo ist die Berliner Willkommensklassendatenbank
  • Nextcloud-Shares mit Zertifikaten und zugehörigen private keys (https://cloud.vcat.de/index.php/s/█)
  • Weitere Zugangsdaten

Außerdem waren leakende env-Dateien und git-Ordner aufgefallen. Diese sind aber noch nicht alle entfernt worden, daher fehlen hier Details.

Leakvent 24: Telco-Dinge

Bis zum 39C3 öffne ich täglich ein Türchen zu den langweiligsten Datenlecks der letzten Jahre. Es geht um .git, .env, exponierte dev-Umgebungen und andere technisch langweilige Ursachen. Aber manchmal ist interessant, was sich hinter einem Türchen verbirgt. Alle Türchen sind hier zu finden.

Über die letzten Jahre hat sich eine kleine Sammlung technisch langweiliger Datenlecks im Telco-Ökosystem ergeben. Ursache dafür war (oder ist) eine Mischung von .git-Ordnern, .env-Dateien und Symfony Profilern. Belohnt wurde das Stöbern mit Beschäftigtendaten, Sim Inventories, Ausweiskopien und Hotline-Aufzeichnungen.

Deutsche Telekom

Schon Jahre her und relativ wenig Impact hatten drei Lecks bei der Telekom.

Unter https://gard.telekom.de/█/Dashboard.jspa wurde auf einen “GARD Webex Teams Ankündigungs-Chat” verwiesen. Dieser konnte über einen Kurzlink https://eurl.io/#████ betreten werden, auch ohne Telekom-Mitarbeiter zu sein. In dem dazugehörigen Webex-Chat waren Name, Fotos und E-Mail-Adressen von knapp 600 Beschäftigten zu sehen.

Unter https://█.de/.git/config war ein deploy token für gitlab.devops.telekom.de zu finden. Damit konnte aber nur dieses Repository gecloned werden. Der weitere Zugriff über die gitlab-API war eingeschränkt.

[core]
...
[remote "origin"]​
    url = https://gitlab+deploy-token:██████████​
		@gitlab.devops.telekom.de/██.git​
    fetch = +refs/heads/*:refs/remotes/origin/*​

Bei https://nwkr-intern.telekom.jobs waren dazugehörige env- und env.local-Dateien zu finden. Darin enthalten: API keys, SQL-Zugangsdaten sowie Zugangsdaten für die Webseite.

###> SF CONFIG ###​
SFOAPI_USER=██████​
SFOAPI_COMPANY=telekom█​█​
SFOAPI_PWD='██████████'​
NWKR_INTERNAL_LINK_BASE=https://nwkr-intern.telekom.jobs​
​
SF_SITE_OTE_PLUS_SA=██████████
SF_SITE_GERMANOS_SA=${SF_SITE_OTE_PLUS_SA}​
SF_SITE_OTE_AE=${SF_SITE_OTE_PLUS_SA}​
SF_SITE_COSMOTE_EVALUE=██████████​
SF_SITE_COSMOTE_AE=██████████​
...
DATABASE_URL=mysql://telekom:██████████@127.0.0.1:3306/telekom_hr_451​
###< doctrine/doctrine-bundle ###​

Lycamobile

Lycamobile ist ein MVNO, der in fast 20 Ländern aktiv ist und mehr als 15 Millionen Kund*innen versorgt. Unter verschiedenen IP-Adressen waren und sind git-Repositories zugänglich, die offenbar zu Lycamobile gehören.

[core]​
...
[remote "origin"]​
    url = http://newgit.ldinternal.com/lycadev/
                                  newsinglecode-lyca-uk.git​
    fetch = +refs/heads/*:refs/remotes/origin/*​

In diesen Repositories gibt es eine Mischung interessanter Dateien,

aus_prod_db.sql​, backupspain04-04-18.sql​, composer.json​, composer.lock​, composer.phar​, contributing.md​, db_spain_new.sql​, denmark_db.sql​, index.php​, license.txt​, lyca_gdpr.sql​, new_australia_db.sql​, new_denmark_db3.sql​, new_denmark_db4.sql​, readme.rst​, smartfocusemail.sql​, spain_prod_db.sql​, system​, uk_prod_db1.sql​, uk_prod_db2.sql​, uk_prod_db.sql​​,

und git branches:

ADD_SFMC_IN_UK_STAGE​, lmde-postpaid-platform​, master​, plat-prod-de​, 2Oprod​, 2oApisGERPROD​, 2oSpain​, 2oUKPROD​, 2oapiProd​, 2oprodmove​, ADD_ESIM_IN_GERMANY_PROD​, FreeSimGermStage​, UK_LATEST_STAGE​, UK_NEW_ENTITY_FOR_MOBILE​, UK_PLATFORM_LATEST_STAGE​, UKstage_ipaddress​, Uk_loyalty_changes​, ValidationPROD​, add-fields-rates​, add_organization_name​, de-preprod-mobile​, de_platform​, delete_api​, lycaprod_germany​.

Eine der Dateien enthielt einen gültigen API key für Complycube, einem Dienst für KYC und identity verification. Damit konnte u.a. auf Bilder von Ausweisen zugegriffen werden.

Ein argentinischer Ausweis, der aus der Complycube-API gefallen ist

Auf diverse Nachrichten über verschiedene Kanäle hat Lycamobile bisher nicht angemessen reagiert. Wer sucht, findet leicht weitere git-Repositories.

Variatel

Variatel ist ein MVNO, deutlich kleiner als Lycamobile und nur in Deutschland tätig, im Netz der Deutschen Telekom. Unter http://█.█.█.█/.env leakte im März/April 2023 eine env-Datei. Diese Datei enthielt Zugangsdaten für einen Datenbank-Server:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=variateldb
DB_USERNAME=████████
DB_PASSWORD=████████

Dieser Datenbank-Server war unter stagebkend.variatel.de im Internet zu erreichen. Die gleichen Zugangsdaten wurden im Produktivsystem unter ec2-█.eu-central-1.compute.amazonaws.com genutzt. Auch dieser Datenbank-Server war einfach so zu erreichen.

Was tut dieser Server am Internet?
Neben Namen, Adressen und natürlich Telefonnummern, gab die Datenbank auch IMSI, PINs und PUKs her

Über diesen Zugang konnte mittels pg_read_file eine aktuellere env-Datei ausgelesen werden. Diese enthielt einen gültigen API key für mobbeel, einem Dienst für KYC und identity verification.

MOBB_SCAN_AGENT_URL=https://mobbscan-cloud.mobbeel.com/mobbscan-agent
ALTEN_API_USERNAME=variatel-api
ALTEN_API_PASSWORD=████████

Damit konnte u.a. auf Bilder von Ausweisen aus ca. 13.000 Verifizierungsvorgängen zugegriffen werden.

Ältere Verifizierungsvorgänge waren nachvollziehbar
Erst schlägt die Verifikation fehl
Sobald Vor- und Nachname zum Dokument passen, klappt es doch

Außerdem konnte auf Call Data Records zugegriffen werden.

SFTP_HOST=██.██.██.██
SFTP_USERNAME=████████
SFTP_PASSWORD=████████
SFTP_PRIVATE_KEY=████████
Wer, wann, wie lange, mit wem. All das geht aus den Call Data Records hervor

Weiterhin gab es eine Datenbank readme_to_recover mit einem Hinweis darauf, dass Daten von dem Server kopiert wurden.

Vor uns war jemand anderes auf diesem Server gewesen

Auf mehrere Meldungen hat Variatel nicht geantwortet. Unter http://stagebkend.variatel.de/.git/ wird der Quellcode der Anwendung weiterhin zur Verfügung gestellt.

[remote "origin"]​
    url = https://github.com/cognitude-dev/variatel-be.git​
    fetch = +refs/heads/*:refs/remotes/origin/*​

TKD Solutions

TKD bietet Device as a Service an. Auch hier war 2024 ein git-Repository abrufbar.

[core]​
...
[remote "origin"]​
    url = https://██████████████@dev.azure.com/TKDSolutions/​
	                                      ████Auftragsliste​
    fetch = +refs/heads/*:refs/remotes/origin/*​

Ein Skript war anfällig für eine SQL-Injection. Passwörter wurden mit dem veralteten Hashverfahren md5 und ohne Salt gespeichert. Sie bestanden oft aus dem ersten Buchstaben des Vornamens und dem Nachnamen.

Diese Zugangsdaten erlaubten den Zugriff auf ein Portal zur Auftragserfassung, ein zweiter Faktor wurde beim Login nicht verlangt. In dem Portal konnten u.a. Stammdaten von Nutzer*innen und Kund*innen, Rufnummern und SIM-Seriennummern eingesehen werden.

git-Repository, SQL-Injection, md5 und Mangel an 2FA erleichtern den Zugriff auf das System zur Auftragserfassung

Handystar / Mobilezone

Mobilezone betreibt den Teleshopping-Sender Handystar. Auch hier war 2024 ein git-Repository abrufbar.

[init]​
...
[core]​
...
[remote "origin"]​
    url = https://gitlab-ci-token:████████████​
		@gitlab.com/████/abwicklungssystem.git​
    fetch = +refs/heads/*:refs/remotes/origin/*​

Ein Skript war anfällig für eine SQL-Injection. Passwörter wurden mit dem veralteten Hashverfahren md5 und ohne Salt gespeichert. Das Passwort eines Nutzers konnte in wenigen Sekunden wiederhergestellt werden.

Diese Zugangsdaten erlaubten den Zugriff auf ein Portal zur Bestellabwicklung, ein zweiter Faktor wurde beim Login nicht verlangt. In dem Portal konnten u.a. Stammdaten von Kund*innen eingesehen und Aufzeichnungen der Bestell-Hotline abgehört werden.

git-Repository, SQL-Injection, md5 und Mangel an 2FA erleichtern den Zugriff auf das System zur Bestellabwicklung
Daten von Kund*innen wurden erwartet
Aufzeichnungen von Anrufen bei der Hotline wurden nicht erwartet
Für mehrere Tage waren Aufgrund technischer Probleme nur Online-Bestellungen möglich

Das Unternehmen beauftragte eine größere Kanzlei zu prüfen, ob Betroffene benachrichtigt werden müssen: “Eine Benachrichtigung der betroffenen Personen gem. Art. 34 DSGVO ist nach unserer Auffassung nicht erforderlich.”

esim.me / TelcoVillage

TelcoVillage vertreibt unter anderen “Hardware-eSIMs” ‒ SIM-Karten, die ältere Geräte eSIM-fähig machen. Auch hier war 2025 ein git-Repository abrufbar.

[core]​
...
[remote "origin"]​
    url = https://██@bitbucket.telcovillage.com/██.git​
    fetch = +refs/heads/*:refs/remotes/origin/*​

In dem Repository waren viele php-Dateien zu finden,

… index03052018.php​, index0.php​, index1.php​, index20171031.php​, index20180122.php​, index2.php​, index_ajax.php​, indexBkp.php​, indexGD.php​, index_good_22052018.php​, indexGood.php​, index_no_ajax.php​, index.php​, …

Manche der Dateien enthielten gültige root-SSH-Zugänge.

<?php​
...
if (!($resource=@ssh2_connect("█.█.█.█",22))) {​
  echo "[FAILED]<br />";​
  exit(1);​
}​
...
if (!@ssh2_auth_password($resource,"root","█████████████")) {​
  echo "[FAILED]<br />";​
  exit(1);​
}​
...

Das ging unerwartet schnell.

WEtell / amiva

Unter https://teststage.wetell.de/_profiler/ war 2024 ein Symfony Profiler offen zugänglich erreichbar. Über diesen konnten u.a. Formulareingaben mit Zugangsdaten im Klartext sowie Konfigurationsdaten eingesehen werden.

Per Suche nach method: POST und URL: anmelden filtern wir nach interessanten Logs
Interessante Logs beinhalten Zugangsdaten im Klartext

Diese Zugangsdaten erlaubten den nicht-administrativen Zugriff auf die Portale http://teststage.wetell.de/ bzw. http://teststage.amiva.de/.

“Meine Verträge” zeigten anderswo auch eSIM-QR-Codes

ReiseSIM / TravelFon

TravelFon vertreibt unter ReiseSIM SIM-Karten und eSIMs. Auch hier war 2025 ein git-Repository abrufbar.

[core]​
...
[remote "origin"]​
  url = ssh://gogs@gitlab.travelfon.eu██/██reisesim.de.git​
  fetch = +refs/heads/*:refs/remotes/origin/*​

In dem Repository waren viele php-Dateien zu finden. Eine der Dateien enthielt gültige Zugangsdaten für eine Airalo-API. Airalo ist ein großer eSIM-Händler. Damit konnten u.a. vergangene eSIM-Bestellungen einschließlich QR-Code abgerufen werden.

<?php​
…​
$clientid = '537███████████████';​
$clientsecret = '███████████’;​
$api = 'https://partners-api.airalo.com/’; ​
$accesstoken = '█████████████████’;​
…​

Leakvent 21: Philipp Plein

Bis zum 39C3 öffne ich täglich ein Türchen zu den langweiligsten Datenlecks der letzten Jahre. Es geht um .git, .env, exponierte dev-Umgebungen und andere technisch langweilige Ursachen. Aber manchmal ist interessant, was sich hinter einem Türchen verbirgt. Alle Türchen sind hier zu finden.

Bereits 2021 war beim Crypto King Philipp Plein ein Symfony Profiler für alle zugänglich im Netz. Ich rief dort an, schrieb E-Mails, kontaktierte den Chief Digital Officer via Linkedin, meldete mich beim GovCERT in der Schweiz und bei der Berliner Datenschutzbehörde ‒ lange passierte nichts. Erst 2022 oder später verschwand der Profiler aus dem Internet.

Über den Profiler konnten frühere Formulareingaben eingesehen werden, zum Beispiel Zugangsdaten für ein Shipping Portal.

Das Shipping Portal nach dem Login

Das sah relativ langweilig aus. Aber der Profiler spuckte auch gültige Zugangsdaten für ftp.pleingroup.com aus.

Der Symfony Profiler zeigt u.a.gültige FTP-Zugangsdaten

Unter /ftp-demandwareXML/CRM/transaction_address/archive/ befanden sich allein in der Datei transactions_address_20210921.csv fast 800.000 Datensätze mit Namen, Adresse, E-Mail-Adresse, Geschlecht und Telefonnummer. Andere Dateien enthielten auch Geburtsdaten. Es wurden regelmäßig neue Daten geliefert und es gab auch Bilder von Reklamationen zu sehen.

Das war erst einmal nicht ungewöhnlich. Exponierte Symfony Profiler führen häufig zu Daten von Webshop-Kund*innen. In diesem Fall war jedoch besonders, dass auch frische Daten aus Filialen der Modefirma zugänglich waren, z.B. der Filiale im Kurfürstendamm. Aus diesem Grund wurde das Leck auch an die Berliner Datenschutzbehörde gemeldet.

Auch Daten von Kund*innen aus Plein-Filialen waren zugänglich

Auf keinen der zahlreichen Kontaktversuche hat Plein sich zurückgemeldet.

Leakvent 7: Vino24, Rindchens Weinkontor und Staatsweingut Freiburg

Bis zum 39C3 öffne ich täglich ein Türchen zu den langweiligsten Datenlecks der letzten Jahre. Es geht um .git, .env, exponierte dev-Umgebungen und andere technisch langweilige Ursachen. Aber manchmal ist interessant, was sich hinter einem Türchen verbirgt. Alle Türchen sind hier zu finden.

Gleich drei Mal waren 2023 Daten von Wein-Käufer*innen ziemlich offen zugänglich. Die Ursache war in jedem Fall ein Symfony Profiler. Über diesen können u.a. Zugangsdaten im Klartext sowie Konfigurationsdaten eingesehen werden.

Beim Staatsweingut Freiburg konnte man sich damit beim SQL-Server einloggen und auf Daten von etwa 9.400 Kund*innen zugreifen.

Bei Rindchens Weinkontor lagen die Zugangsdaten eines Administrators. Damit konnten in der Testumgebung Daten von etwa 50.000 und in der Produktivumgebung Daten von mehr als 60.000 Kund*innen eingesehen werden.

Bei Vino24 sieht es ähnlich aus, dort waren Daten von knapp 250.000 Kund*innen zugänglich.

Leakvent 2: Die Partei

Bis zum 39C3 öffne ich täglich ein Türchen zu den langweiligsten Datenlecks der letzten Jahre. Es geht um .git, .env, exponierte dev-Umgebungen und andere technisch langweilige Ursachen. Aber manchmal ist interessant, was sich hinter einem Türchen verbirgt. Alle Türchen sind hier zu finden.

Weiter geht es mit der Partei Die Partei. Die Entwicklungsumgebung eines Webshops für Parteibedarf mit aktiviertem Symfony Profiler war 2022 offen zugänglich.

The profiler is a powerful development tool that gives detailed information about the execution of any request.

Never enable the profiler in production environments as it will lead to major security vulnerabilities in your project.

Über diesen Profiler konnten u.a. Konfigurationsdaten (“mysql://dev:████████@localhost:3306/dev”) sowie personenbezogene Daten von Bestellenden (Name, Adresse, E-Mail-Adresse) abgerufen werden. Die Daten reichten ein Jahr zurück und umfassten augenscheinlich nicht nur Testdaten.