• Willkommen im Forum „Tintenzirkel - das Fantasyautor:innenforum“.
 

Bruteforce-Attacke per Cron-Job?

Begonnen von Maja, 18. Oktober 2022, 13:44:22

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

Maja

Weil unser Fehlerprotokoll gerade alle paar Minuten einen kritischen Fehler ausspuckt und ich nicht weiterkomme, tagge ich mal @Luna und @Volker in der Hoffnung, dass jemand uns weiterhelfen kann.

Die Fehlermeldung ist immer die gleiche:
Gast
https://forum.tintenzirkel.de/cron.php
/var/www/vhosts/gottfabrik.de/httpdocs/www/tintenzirkel/forum/Sources/tasks/GroupAct-Notify.php (Zeile 42)
Backtrace-Informationen

Art des Fehlers: Kritisch
Fehlermeldung Auswählen
Database error, given array of integer values is empty. (request_list)
Function: execute

Backtrace-Information:
Fehler
Art des Fehlers
Critical
Fehlermeldung
Database error, given array of integer values is empty. (request_list)
Function: execute
Datei
/var/www/vhosts/gottfabrik.de/httpdocs/www/tintenzirkel/forum/Sources/tasks/GroupAct-Notify.php
Zeile
42
URL der Seite die den Fehler erzeugte
https://forum.tintenzirkel.de/index.phphttps://forum.tintenzirkel.de/cron.php
Backtrace-Informationen

    #0: smf_db_error_backtrace()
    Aufgerufen von /var/www/vhosts/gottfabrik.de/httpdocs/www/tintenzirkel/forum/Sources/Subs-Db-mysql.php in Zeile 222
    #1: smf_db_replacement__callback()
    Aufgerufen von unbekannt in Zeile -1
    #2: preg_replace_callback()
    Aufgerufen von /var/www/vhosts/gottfabrik.de/httpdocs/www/tintenzirkel/forum/Sources/Subs-Db-mysql.php in Zeile 409
    #3: smf_db_query()
    Aufgerufen von /var/www/vhosts/gottfabrik.de/httpdocs/www/tintenzirkel/forum/Sources/tasks/GroupAct-Notify.php in Zeile 42
    #4: execute()
    Aufgerufen von /var/www/vhosts/gottfabrik.de/httpdocs/www/tintenzirkel/forum/cron.php in Zeile 237
    #5: perform_task()
    Aufgerufen von /var/www/vhosts/gottfabrik.de/httpdocs/www/tintenzirkel/forum/cron.php in Zeile 131


Normalerweise, wenn ein Gast eine Fehlermeldung verursacht, ist im Fehlerprotokll eine IP angegeben, die ich dann ggf. aus dem Server aussperre. Hier ist keine IP angegeben, und ich weiß nicht, ob dieser vermeintliche Gast in Wirklichkeit ein Cron-Job ist, den das Forum selbst auszuführen versucht, aber ich kenne mich mit Cron-Jobs nicht aus, und in der Liste der täglich auszuführenden Aufgaben des Forums finde ich keine, die zu dieser Fehlermeldung passt.

In der im Fehler angegebenen Datei GroupAct-Notify.php (Zeile 42) heißt es

23:     * This executes the task: loads up the info, puts the email in the queue
24:     * and inserts any alerts as needed.
25:     *
26:     * @return bool Always returns true
27:     */
28:     public function execute()
29:     {
30:     global $sourcedir, $smcFunc, $language, $modSettings;
31:     
32:     // Get the details of all the members concerned...
33:     $request = $smcFunc['db_query']('', '
34:     SELECT lgr.id_request, lgr.id_member, lgr.id_group, mem.email_address,
35:     mem.lngfile, mem.member_name,  mg.group_name, mg.hidden
36:     FROM {db_prefix}log_group_requests AS lgr
37:     INNER JOIN {db_prefix}members AS mem ON (mem.id_member = lgr.id_member)
38:     INNER JOIN {db_prefix}membergroups AS mg ON (mg.id_group = lgr.id_group)
39:     WHERE lgr.id_request IN ({array_int:request_list})
40:     ORDER BY mem.lngfile',
41:     array(
==>42:     'request_list' => $this->_details['request_list'],
43:     )
44:     );
45:     $affected_users = array();
46:     $members = array();
47:     $alert_rows = array();
48:     while ($row = $smcFunc['db_fetch_assoc']($request))
49:     {
50:     $members[] = $row['id_member'];
51:     $row['lngfile'] = empty($row['lngfile']) || empty($modSettings['userLanguage']) ? $language : $row['lngfile'];
52:     
53:     // If we are approving, add them!
54:     if ($this->_details['status'] == 'approve')
55:     {
56:     // Hack in blank permissions so that allowedTo() will fail.
57:     require_once($sourcedir . '/Security.php');
58:     $user_info['permissions'] = array();
59:     
60:     // For the modlog
61:     $user_info['id'] = $this->_details['member_id'];
62:     $user_info['ip'] = $this->_details['member_ip'];

Der Sinn von "GroupActNotify ist

* This file contains code used to notify a member when a group moderator has
 * taken action on that member's request to join a group.

Ich verstehe nur, dass es irgendwie mit den Mitgliedsgruppen zusammenhängt, wahrscheinlich mit einem Mitglied, das ich für die Nanowrimo-Gruppe freigeschaltet habe, aber nicht, was da falsch läuft. Der Fehler ist heute morgen zum ersten Mal aufgetreten und passiert seitdem alle fünf bis sieben Minuten. Weiß jemand Rat? Danke!
Niemand hantiert gern ungesichert mit kritischen Massen.
Robert Gernhardt

Luna

Der stört sich daran, dass die Variable "$this->_details['request_list']" leer ist.
Ich denke, um den Fehler vorerst zu umgehen könntest du in Zeile 31 ein
if(empty($this->_details['request_list'])) return;
einfügen.

Genauer nachgucken muss ich außerhalb der Arbeitszeit.

Maja

#2
Danke fürs Anschauen!
Aber bis heute, ohne dass ich etwas geändert habe, hat das immer Funktioniert.

Gerade nachgeschaut - der Fehler ist erstmals aufgetreten, unmittelbar nachdem ich Marlemee
für die Naniten freigeschaltet habe, weswegen ich auch sie tagge. Hast du eine Nachricht bekommen, dass du für die Gruppe freigeschaltet worden bist? Ich vermute, das ist der Punkt, an dem sich etwas weggehängt hat.
Niemand hantiert gern ungesichert mit kritischen Massen.
Robert Gernhardt

Maja

Immerhin bin ich jetzt überzeugt, dass es kein Hacking-Versuch ist, sondern nur ein Forenprozess im Leerlauf. Ich hatte Angst, dass es ab jetzt Probleme geben könnte, sich für die Nanitengruppe zu bewerben, und habe den Prozess mit meinem Testmitglied @scopolamin durchgespielt - aber das war kein Problem, ich konnte mich um die Gruppenmitgliedschaft bewerben, habe sie bekommen und bin auch darüber benachrichtigt worden. Woran es bei Marlemee hängt, weiß ich nicht.

Aber auch wenn am Fehler immer "kritisch" dran steht, denke ich nicht mehr, dass das Forum irgendwie in Gefahr schwebt. Und ich hoffe, die Fehlermeldungen bekommen wir auch weg.
Niemand hantiert gern ungesichert mit kritischen Massen.
Robert Gernhardt

Maja

Ich habe den Server neu gestartet, in der Hoffnung, einen weggehängten Prozess damit abschießen zu können ("Have you tried turning it off and on again?"), aber leider kommt die Fehlermeldung wieder.

Auch der Versuch, grundsätzlich die Benachrichtigung zu Gruppenbeitritten zu deaktivieren, hat nichts geholfen, da der Versuch schon vorher aktiv war.

Der SMF-Prozess "Fehler suchen und beheben" hat das Forum abstürzen lassen (das scheint leider reproduzierbar zu passieren, war jetzt schon das zweite Mal) und hilft uns damit leider auch nicht (und war der Anlass für den Server-Reboot ohne Vorwarnung).

Ich hoffe, wir bekommen die Meldung trotzdem irgendwie weg. auch wenn das kein Hacker ist, es nervt.
Niemand hantiert gern ungesichert mit kritischen Massen.
Robert Gernhardt

Luna

Habe ein bisschen im Quellcode geschaut.

In der Datenbank, in der Tabelle `{db_prefix}background_tasks` (also meist `smf_background_tasks`) ist ein Eintrag, der zu dem Problem führt. Warum weiß ich nicht, aber in der Spalte `task_file` gehört die zum Eintrag `[...]/tasks/GroupAct-Notify.php`

Wenn du das löschst, sollte der Fehler erstmal nicht mehr auftreten.

Maja

Zitat von: Luna am 18. Oktober 2022, 14:40:03Habe ein bisschen im Quellcode geschaut.

In der Datenbank, in der Tabelle `{db_prefix}background_tasks` (also meist `smf_background_tasks`) ist ein Eintrag, der zu dem Problem führt. Warum weiß ich nicht, aber in der Spalte `task_file` gehört die zum Eintrag `[...]/tasks/GroupAct-Notify.php`

Wenn du das löschst, sollte der Fehler erstmal nicht mehr auftreten.
Danke! Ich habe die Einträge der Tabelle gerade gelöscht (es waren nur zwei) und hoffe, damit ist der Fehler behoben.
Niemand hantiert gern ungesichert mit kritischen Massen.
Robert Gernhardt

Maja

Danke, @Luna! Das hat geholfen. Die Fehlermeldung ist jetzt seit über zehn Minuten nicht mehr aufgetreten, und ich denke auch nicht, dass sie nochmal zurückkehrt. Und wenn doch, weiß ich jetzt ja, wo ich den Prozess finde.
Niemand hantiert gern ungesichert mit kritischen Massen.
Robert Gernhardt

Marlemee

Zitat von: Maja am 18. Oktober 2022, 13:57:05Hast du eine Nachricht bekommen, dass du für die Gruppe freigeschaltet worden bist?
Hallo, ich hab sehr rasch eine Nachricht über die Aufnahme bekommen (danke an der Stelle :) ) und bei mir hat bisher alles funktioniert.

Maja

@Marlemee Danke für die Rückmeldung! Dann bin ich froh, dass das doch geklappt hat, und weiß nicht, wieso sich das Forum so dran verschluckt hat. Aber wenigstens ist der Fehler jetzt behoben.
Niemand hantiert gern ungesichert mit kritischen Massen.
Robert Gernhardt