Jump to content
Froxlor Forum
  • 0

Cronjob Fehlermeldung


Exploit

Question

Posted

Der Cron Daemon hat mir eine eMail mit folgender Meldung geschickt:

PHP Fatal error:  Uncaught exception 'Exception' with message 'Invalid ticket id' in /var/www/froxlor/lib/classes/ticket/class.ticket.php:137
Stack trace:
#0 /var/www/froxlor/lib/classes/ticket/class.ticket.php(70): ticket->readData()
#1 /var/www/froxlor/lib/classes/ticket/class.ticket.php(84): ticket->__construct(NULL, 1)
#2 /var/www/froxlor/scripts/jobs/cron_ticketarchive.php(39): ticket::getInstanceOf(NULL, 1)
#3 /var/www/froxlor/scripts/froxlor_master_cronjob.php(80): require_once('/var/www/froxlo...')
#4 {main}
  thrown in /var/www/froxlor/lib/classes/ticket/class.ticket.php on line 137

Bei solch einer Meldung läuten bei mir sofort die Alarmglocken. So wie es aussieht ist die Sache bereits bekannt als "CVE-2018-12642" und ist auch schon die lösung für das Problem fertig. (https://www.openwall.com/lists/oss-security/2018/09/19/7) Höchste Zeit das sie im Update veröffentlicht wird, da nun wohl bots aktiv Froxlor-Seiten danach abklappern.

4 answers to this question

Recommended Posts

Posted

Ehm...das Problem was du im.cron hast ist ein ganz anderes als in dem CVE, es gibt ja schon 0.9.40.1 .

Das jetzt ist ein reines Problem beim archivieren von Tickets via cronjob, wurde im git schon vor längerem gefixed 

Posted

OK, habe jetzt auch diesen Thread gefunden: https://github.com/Froxlor/Froxlor/issues/656

Scheint also etwas anderes los zu sein. Was mich allerdings wundert:

Wieso kommt diese Fehlermeldung plötzlich? Das Ticketsystem hat bei mir noch keiner Verwendet. Vor einiger Zeit habe ich dort mal ein kurzes Selbstgespräch geführt, um zu testen ob und wie das funktioniert. Seit dem ist dort nichts mehr passiert.

Von aussen kann der Cronjob nicht aufgerufen werden, oder?

Posted

Ooh, sorry für die Fehlinformation, habe jetzt gesehen das die mail schon öfters kam, immer am ersten des Monats. Dann ists wohl harmlos.

Posted

Also falls du es für dich fixen willst (denn für 0.10.0 wird es das nicht mehr geben):

Das Problem: https://github.com/Froxlor/Froxlor/blob/0.9.x/scripts/jobs/cron_ticketarchive.php#L39

Lösung:

diff --git a/scripts/jobs/cron_ticketarchive.php b/scripts/jobs/cron_ticketarchive.php
index 8febe3ad..f5a32cb8 100644
--- a/scripts/jobs/cron_ticketarchive.php
+++ b/scripts/jobs/cron_ticketarchive.php
@@ -27,6 +27,13 @@ $result_tickets_stmt = Database::query("
 );
 $archiving_count = 0;
 
+// get admin user data to use as userinfo for ticket::getInstanceOf()
+$admin_sel_stmt = Database::prepare("
+       SELECT * FROM `" . TABLE_PANEL_ADMINS . "`
+       WHERE `adminid` = '1'
+");
+$admin_userdata = Database::pexecute_first($admin_sel_stmt);
+
 while ($row_ticket = $result_tickets_stmt->fetch(PDO::FETCH_ASSOC)) {
 
        $lastchange = $row_ticket['lastchange'];
@@ -36,7 +43,7 @@ while ($row_ticket = $result_tickets_stmt->fetch(PDO::FETCH_ASSOC)) {
        if ($days >= Settings::Get('ticket.archiving_days')) {
 
                $cronlog->logAction(CRON_ACTION, LOG_INFO, 'archiving ticket "' . $row_ticket['subject'] . '" (ID #' . $row_ticket['id'] . ')');
-               $mainticket = ticket::getInstanceOf(null, (int)$row_ticket['id']);
+               $mainticket = ticket::getInstanceOf($admin_userdata, (int)$row_ticket['id']);
                $mainticket->Set('lastchange', $now, true, true);
                $mainticket->Set('lastreplier', '1', true, true);
                $mainticket->Set('status', '3', true, true);
@@ -46,6 +53,8 @@ while ($row_ticket = $result_tickets_stmt->fetch(PDO::FETCH_ASSOC)) {
        }
 }
 
+unset($admin_userdata);
+
 $cronlog->logAction(CRON_ACTION, LOG_INFO, 'Archived ' . $archiving_count . ' tickets');
 Database::query("
        UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = UNIX_TIMESTAMP()

 

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...