[ Lezárva ] Drupal 7 - feltörték???

Fórumok

Sziasztok!

Futtatok egy Drupal 7-es weboldalt. Ma az alábbi levelet kaptam emailben a Drupal 7-től:

"A Drupal alaprendszer telepített változatához biztonsági frissítés
érhető el. Erősen javasolt az azonnali frissítés a biztonságos
működés érdekében.

További információ az elérhető frissítések oldalán:
http://azenv.net/admin/reports/updates

A jelenlegi beállítások szerint minden új elérhető frissítés esetén
küldi a rendszer ezeket az e-maileket. Értesítés csak biztonsági
frissítésekről az alábbi címen kérhető:
http://azenv.net/admin/reports/updates/settings."

 

Ezzel csak egy probléma van, a levélben szereplő URL, vagyis a benne lévő azenv.net domain; és mondanom sem kell, hogy nem ez kellene, hogy ott legyen.

A Drupal 7 Nginx konfigjában szerepel az alábbi:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    # Block httpoxy attacks. See https://httpoxy.org/.
    fastcgi_param HTTP_PROXY "";
	...
}

 

A weboldalt leállítottam, a logokat most nézegetem.

Láttatok már ilyet? Hogyan érhették el, hogy az emailben az azenv.net domain jelenjen meg? Feltörték a Drupal 7-es weboldalt, és esetleg a szervert is?

 

Korábban ilyen nem fordult elő, igaz két esetben volt, hogy üres URL-ek voltak a levélben, de annak nem tanúsítottam nagyobb figyelmet (sajnos).

"http:///admin/reports/updates

http:///admin/reports/updates/settings"

Hozzászólások

Biztos, hogy ezt a levelet a saját Drupal 7-edtől kaptad? Simán lehet phising próbálkozás.

Egyébiránt a nemfrissített Drupalok ugyanúgy célpontok, bár jóval ritkábban, mint a sláger Wordpressek. Nézd meg az index.php -dat, hogy nincs-e benne furcsa, illetve az irható könyvtárakban (sites/default/files emlékeim szerint mindenképp) nézd meg nincs-e gyanús file.

Igyekszem mindig frissíteni a Drupal7-et. Sajnos anno a honosított Drupal telepítőt kezdtem el használni, abból egyelőre még nem jött ki a legfrissebb Drupal 7.97-es verziót tartalmazó kiadás.

https://www.drupal.org/project/l10n_install

Ha már így előjött megkérdezem. Aki ismeri a Drupal 7 lelki világát, meg tudná mondani, hogy milyen problémát okozok azzal, ha nem a linkelt honosított Drupal verzióval frissítem (nem composert használok a frissítésre)?

 

A sites/default/files mappát és néhány további mappát is átnézegettem, azokban nem találtam idegen / gyanús fájlokat.

Az nginx egyelőre nem fut, így csak belenéztem az index.php fájlba, az úgy tűnik, hogy rendben van és a betöltött /includes/bootstrap.inc is.

Tűzfalon letiltom a weboldal külső elérhetőségét, majd elindítom az nginx-et, aztán megnézem böngészőben is az kezdőoldal forrását.

Sajnos nem adtak ki újabb honosított Drupal 7 telepítőt :-(

Ezért teszt jelleggel egy virtuális gépen lefrissítettem az oldalt a normál Drupal 7 telepítővel, de a frissítés az alábbi figyelmeztetéssel fut le:

User warning: The following module is missing from the file system:
l10n_install. For information about how to fix this, see the documentation
page. _drupal_trigger_error_with_delayed_logging() függvényben (/var/www/drupal7/includes/bootstrap.inc 1181 sor).

Megnéztem az ajánlott dokumentációt, ami nagy vonalakban azt javasolja egyik lehetséges megoldásként, hogy állítsam vissza a hiányzó modult, tiltsam le, majd távolítsam el. Ezzel csak az a baj, hogy az l10n_install nem jelenik meg a modulok oldalon, így letiltani sem tudom.

Telepítettem a module_missing_message_fixer modult. Ez "listázza" is az l10n_install modult, mint törölhető, a Hibák eltávolítása gombot megnyomva a l10n_install modul el is tűnik, de ha futtatom az update.php-t, akkor a figyelmeztetés újra jelentkezik, és a Missing Module Message Fixer újra "listázza" az l10n_install modult. :-(

Ez az l10n_install nem modul, ha jól látom, hanem profil. Töltsd le a projekt oldaláról tar.gz formában, csomagold ki a /profiles/l10n_install alá (pontosabban: ugyanoda, ahol a működő változatban van), és akkor nem fog rá panaszkodni, hogy hiányzik.

Hogy utána milyen további hibák lesznek, azt nem tudom, nem ismerem ezt a profilt. :)

Igen, valójában ez nem egy modul, hanem egy (nyelvi lokalizációt megvalósító) telepítési profil.

Én is gondoltam már arra, amit írsz, csak én is attól tartok, hogy előjöhetnek más problémák, de mivel lényegében homokozóban játszadozok most vele, így holnap kipróbálom.

Úgy látom, hogy csak:

  1. a drupal-org.make és a drupal-org-core.make fájlokban van utalás a Drupal verziószámára, és
  2. az l10n_install.info fájlban van egy version és egy datestamp érték, amelyek változnak a különböző verziók esetén.

Az első esetben a Drupal verziószámát beírom az aktuális 7.98 értékre, az l10n_install.info fájlban pedig változatlanul hagyom a version és a datestamp értékeket.

(Szerintem kb. 5 percnyi munka lenne kiadni a telepítési profil karbantartójának egy olyan verziót, amely a legfrissebb Drupal 7 verziót tartalmazza.)

Mindenképp nézd meg a kapott email fejlécét - Raw fejléc mezőket, hogy mi a feladó (From: ) és a Reply-to: ezek tudnak árulkodók lenni, sőt a Received: mezőben pedig ha valóban a saját szervered küldte, akkor annak az adatait kell látnod. Ha valami idegen, akkor lehet gyanakodni Phising-re. Ha minden stimmel, akkor lehet gyanakodni feltörésre, de az eddigi adatok alapján nagyon valószínű a sima phishing...

Április 21-én jött ki a legutóbbi Drupal 7 update. Ha ez nálad nincs telepítve, akkor valóban van security update hozzá.

Nem az a kérdés, hogy mikor jött ki a legutolsó Drupal 7 update.

Hanem az, hogyan, miként érték el azt, hogy a levélben szereplő URL-ben, amit beidéztem a Drupal 7-es weboldal valós domainje helyett a http://azenv.net/ szerepel?

Korábbi ilyen levelekben minden esetben vagy a webszerver publikus IP címe vagy a webszerver domainje szerepelt.

Meg kellene nézni a logokat, szerintem annyi történt, hogy valaki érdeklődött, hogy proxy-t játszanak-e és pont az a request triggerelte a mailt. Mivel a szerintem base_url nincs beállítva a configban , így a 

    $base_root = $http_protocol . '://' . $_SERVER['HTTP_HOST'];
    $base_url = $base_root;

$_SERVER['HTTP_HOST'] azenv.net lett ennek az eredményeként a levélbe is ez került.

Megnézném a logokban, hogy GET http://azenv.net/ request nincs-e azidőtájt. :)

Nginx logban az azenv.net-tel kapcsolatban az alábbi sort találtam:

199.19.74.88 - - [13/May/2023:12:22:27 +0200] "GET http://azenv.net/ HTTP/1.1" 200 8083 "-" "Go-http-client/1.1"

Amit nem értek, hogy miért 200 a HTTP response??? És hogy befolyásolhatta ez a levél tartalmát, amit a Drupal küld nekem.

A webszerver mail logja alapján a kérdéses levél is "ebben az időpontban" (1mp-vel korábban) került elküldésre: 2023.05.13 12:22:26-kor.

 

Vannak Proxy próbálkozások is, de azok esetében 400 a HTTP response:

64.62.197.218 - - [13/May/2023:07:07:31 +0200] "CONNECT www.shadowserver.org:443 HTTP/1.1" 400 166 "-" "-"
103.116.52.251 - - [13/May/2023:16:14:53 +0200] "CONNECT google.com:443 HTTP/1.1" 400 166 "-" "-"
176.111.222.88 - - [13/May/2023:17:12:20 +0200] "CONNECT www.baidu.com:443 HTTP/1.1" 400 166 "-" "-"
109.207.200.43 - - [13/May/2023:17:43:09 +0200] "CONNECT blank.org:443 HTTP/1.1" 400 166 "-" "-"
176.111.222.88 - - [13/May/2023:20:13:05 +0200] "CONNECT www.baidu.com:443 HTTP/1.1" 400 166 "-" "-"
176.111.222.88 - - [13/May/2023:21:07:26 +0200] "CONNECT www.baidu.com:443 HTTP/1.1" 400 166 "-" "-"
199.195.248.153 - - [13/May/2023:21:08:09 +0200] "CONNECT google.com:443 HTTP/1.1" 400 166 "-" "-"
176.111.222.88 - - [13/May/2023:21:39:59 +0200] "CONNECT www.baidu.com:443 HTTP/1.1" 400 166 "-" "-"

Azért van mert nem matchelt semmivel kiszolgálta az alapértelmezett vhostal ami gondolom az emlitett drupal site és pont az a request triggerelte az update emailt. 

A base_url nincs beállítva a configban ezért a requestből szedte ki és így került a levélbe.

A fentihez azt tenném hozzá, hogy a default vhoston, IP-n, egy kövér 403-at érdemes visszaadni, mert a fentinél cirkalmasabb dolgok is lehetnek. Például ha felpakoltál csomagból phpmyadmint, azt célszerű áttekinteni, hogy hogyan érhető el, illetve elétenni egy sima http authot.

Nginx alatt fut a Drupal 7, és az Nginx által telepítés után automatikusan beállított "/etc/nginx/sites-enabled/default" törölve lett (ha erre gondolsz); és a Drupal 7-nek egyedi konfig lett létrehozva, majd az engedélyezve.

Igen van a szerveren PMA, de:

  • egyedi porton érhető el,
  • kívülről nem érhető el (külső tűzfal nem forwardol a PMA portjára),
  • a PMA elérését a webszerver saját tűzfalszabályaival is korlátozom,
  • a PMA-t http auth is "védi".

Nem erre, hanem arra, hogy ha egy random hosztot amire az IP-re mutat beírnak, vagyis direktben IP-t néznek meg, akkor mi jelenik meg. Bármi is van a konfigodban, az első vhostod lesz a default vhost. Attól, hogy nem defaultnak hívják, működésében még úgy fog viselkedni.

na ja, a default az jó az :) Nálam mondjuk apache-ok szoktak menni, ott van egy 000-default.conf abba benne van egy "catchall" rész és ott szépen le van szabályozva mi történjen ha pl IP-t írnak be.. vagy bármi egyéb más olyan aldomaint ami esetleg oda mutat de pl nem létezik a confba stb.. Roppant hasznos cucc. Ahova apache-ot rakok ott kb ez a legelső rész amit "rendberakok" utána jöhetnek az egyéb vhostok.

A Drupal 7 settings.php fájljában tényleg nem volt megadva a $base_url, most beállítottam.

Drupal 9 esetén már nincs is $base_url beállítási lehetőség a settings.php fájlban?! Vagy ezt a $settings['trusted_host_patterns'] = [...] beállítási lehetőséggel váltották ki.

Alapvetően igen, de itt részletesen elmagyarázzák, hogy mit hogyan érdemes csinálni. Legalul vannak példák is, amelyek közül az 1. és a 3. eléggé hasonlít a te esetedhez, csak nálad más modul (update) váltja ki a levélküldést: Trusted Host settings | Installing Drupal | Drupal Wiki guide on Drupal.org