]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
routing: Fix potential authenticated XSS in input processing
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 May 2019 13:51:40 +0000 (14:51 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 10 May 2019 08:04:54 +0000 (09:04 +0100)
An authenticated Stored XSS (Cross-site Scripting) exists in the
(https://192.168.0.241:444/cgi-bin/routing.cgi) Routing Table Entries
via the "Remark" text box  or "remark" parameter. This is due to a
lack of user input validation in "Remark" text box  or "remark"
parameter. It allows an authenticated WebGUI user with privileges
for the affected page to execute Stored Cross-site Scripting in
the Routing Table Entries (/cgi-bin/routing.cgi), which helps
attacker to redirect the victim to a attacker's phishing page.

The Stored XSS get prompted on the victims page whenever victim
tries to access the Routing Table Entries configuraiton page.

An attacker get access to the victim's session by performing
the CSRF and gather the cookie and session id's or possibly can
change the victims configuration using this Stored XSS.

This attack can possibly spoof the victim's informations.

Fixes: #12072
Reported-by: Dharmesh Baskaran <dharmesh201093@gmail.com>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/rootfiles/core/132/filelists/files
html/cgi-bin/routing.cgi

index f949492fa78e88c841ec27d10c863810bb90df70..67d009f9c07b2d6f12bfdfc56eca6df3e1bb3996 100644 (file)
@@ -9,6 +9,7 @@ srv/web/ipfire/cgi-bin/captive.cgi
 srv/web/ipfire/cgi-bin/credits.cgi
 srv/web/ipfire/cgi-bin/firewall.cgi
 srv/web/ipfire/cgi-bin/proxy.cgi
+srv/web/ipfire/cgi-bin/routing.cgi
 srv/web/ipfire/cgi-bin/zoneconf.cgi
 usr/lib/firewall/rules.pl
 usr/sbin/convert-snort
index f2014e2e12f917ecc31c56c7490534a52a420874..be21007fa837ee4857da4fea0cb93b6d14afafc7 100644 (file)
@@ -137,6 +137,9 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
        $errormessage = $Lang::tr{'invalid ip'}. " - ".$Lang::tr{'gateway ip'};
        }
 
+       # Escape input in REMARK field
+       $settings{'REMARK'} = &Header::escape($settings{'REMARK'});
+
        #set networkip if not already correctly defined
        my($ip,$cidr) = split(/\//,$settings{'IP'});
        my $netip=&General::getnetworkip($ip,$cidr);