Jump to content
Froxlor Forum
  • 0

Cronjob Fehlermeldung


Exploit

Question

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.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

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 

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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()

 

Link to comment
Share on other sites

Archived

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



×
×
  • Create New...