Linux - privilegierte Ports ?

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
aubergine
RSAC
Posts: 475
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Linux - privilegierte Ports ?

Post by aubergine » 2007-08-18 14:18

Als ich mit Linux angefangen habe war eines der ersten Dinge die ich gelernt habe dass alle Ports von 0 - 1024 nur durch root gebunden werden können.

Dies hat sich auch immer bewahrheitet bis zum heutigen Tag.

Szenario:

Ein Kunde ruft an und teilt mit dass sein apache auf seinem Server nicht mehr läuft.
Nach kurzer Kontrolle stellte sich heraus dass er lief, jedoch konnte er Port 443 nicht mehr binden und ist dadurch nach einem restart nicht mehr online gegangen.


Nachdem ich nachgeschaut hatte was auf Port 443 läuft machte ich folgende Entdeckung:

Ein Tool welches sich als "httpd" mit Benutzer www-data ausgab lief auf diesem Port.

Nachdem ich das Nest mit italienischen Filmen gefunden hatte, inklusive einem IRC Tool das für Up- und Download zuständig war und einem Process Name Faker, war ja soweit alles klar.

Schuld war im übrigen eine Lücke in einem Galerie Script.

Ansich ist die Arbeit vollkommen erledigt und der Kunde happy.

Aber was mir bis jetzt Kopfzerbrechen bereitet ist:

Wie konnte der Process mit User www-data Port 443 binden nachdem apache2 diesen während eines "apache2ctl restart" kurzfristig geöffnet hatte?

Es war definitiv kein Konstrukt aus Child Prozessen mit einem Prozess als root im Hintergrund sondern nur dieser eine Prozess mit dem IRC Tool.

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Linux - privilegierte Ports ?

Post by Roger Wilco » 2007-08-18 14:24

Zum Einen ist für das Binden von Ports <1024 nur die Capability CAP_NET_BIND_SERVICE nötig (siehe `man capabilities`) und nicht die UID 0. Zum Anderen kann ein Dienst, der als root gestartet wurde, sich an den Port < 1024 binden und danach die UID wechseln. So machen es ja z. B. auch BIND, Exim oder Postfix.

aubergine
RSAC
Posts: 475
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Linux - privilegierte Ports ?

Post by aubergine » 2007-08-18 14:28

Punkt2 ist soweit klar, aber der Process wurde definitiv durch eine PHP-Shell als www-data gestartet.

Gut jetzt könnte es natürlich sein dass dieses Tool gleich noch ein Kernel Exploit mitbringt und sich zuerst selbst root verschafft, aber wenn man diesen Punkt ausschließt ist das Ganze anderweitig möglich?

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Linux - privilegierte Ports ?

Post by Roger Wilco » 2007-08-18 14:34

aubergine wrote:Gut jetzt könnte es natürlich sein dass dieses Tool gleich noch ein Kernel Exploit mitbringt und sich zuerst selbst root verschafft, aber wenn man diesen Punkt ausschließt ist das Ganze anderweitig möglich?

Hm, ein Bug in einem Programm, dass mit SUID-Bit auf der Platte rumliegt vielleicht?

aubergine
RSAC
Posts: 475
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Linux - privilegierte Ports ?

Post by aubergine » 2007-08-18 14:37

Roger Wilco wrote:Hm, ein Bug in einem Programm, dass mit SUID-Bit auf der Platte rumliegt vielleicht?


Ok das wäre eine Möglichkeit die ich nicht kontrolliert habe und jetzt auch nicht mehr kann.

Wie ich deinen Posts entnehme bist du aber auch der Ansicht dass normalerweise ein unter www-data (Debian 3.1) gestarteter Prozess keine Ports unter 1024 starten kann?

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Linux - privilegierte Ports ?

Post by Roger Wilco » 2007-08-18 14:41

aubergine wrote:Wie ich deinen Posts entnehme bist du aber auch der Ansicht dass normalerweise ein unter www-data (Debian 3.1) gestarteter Prozess keine Ports unter 1024 starten kann?

Üblicherweise sicherlich nicht.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11583
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Linux - privilegierte Ports ?

Post by Joe User » 2007-08-18 15:06

aubergine wrote:Wie ich deinen Posts entnehme bist du aber auch der Ansicht dass normalerweise ein unter www-data (Debian 3.1) gestarteter Prozess keine Ports unter 1024 starten kann?

Nicht ohne entsprechende Bugs und/oder Konfigurationsfehler auszunutzen...

aubergine
RSAC
Posts: 475
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Linux - privilegierte Ports ?

Post by aubergine » 2007-08-18 16:46

Vielen Dank für alle Antworten.

Manchmal muss man sich einfach nochmal woanders eine Bestätigung einholen um auf Nummer sicher zu gehen :)