Wenn man Flüssigkeit in einer Laptoptastatur mit nem Heißluftföhn trocknen will…

Die folgenden beiden Bilder erreichten mich vor ein paar Tagen per Email von einem ehemaligen Arbeitskollegen, der das Gerät gerade vor sich hatte… Immer wieder witzig, vor allem, wenn einem so etwas mal im realen Leben passiert und man es nicht nur im Internet ließt. Ein unbekannter Nutzer hat Flüssigkeit aus der Laptoptastatur mit einem Heißluftföhn trocknen wollen…

DSCI3085

DSCI3086

sudo insults – auch der Admin muss Spass haben!

Fluchen tut man als Admin nur oft genug. Ein bisschen Spass dabei kann nicht schaden. Damit sudo einem das Beschimpfen gegenueber eines Nutzers abnimmt, kann man die insults Option nutzen. Die Manpage sagt dazu:

insults           If set, sudo will insult users when they enter an
                  incorrect password.  This flag is off by default.

Um die Funktion zu aktivieren in der /etc/sudoers folgende Zeile hinzufuegen:

Defaults        insults

Anschliessend gibt sudo nette Kommentare zu falsch eingegebenen Passwoertern:

user@host:~$ sudo /bin/false
[sudo] password for user: 
Where did you learn to type?
[sudo] password for user: 
You silly, twisted boy you.
[sudo] password for user: 
What, what, what, what, what, what, what, what, what, what?
sudo: 3 fehlerhafte Anmeldeversuche
user@host:~$

Remote Kommandos auf Server via xinetd ausfuehren / Adminfun

Es gibt Sachen die machen Spass, z.B. diese Spielerei. Es geht darum auf einem Server ein Remotekommando / Shellskript via Webbrowser auszufuehren, ohne das dafuer irgendeine grosse Software-Remotemanagement-Loesung laufen muss. Die Antwort ist der gute alte (x)inetd verbunden mit einem kleinen PHP-Skript. Ich kommentiere das jetzt hier nicht weiter sondern schreibe es einfach mal runter:

Als erstes muessen die Programme installiert werden:

 aptitude install xinetd php5-cli

Danach die folgende Datei unter /etc/xinetd.d/test ablegen

# description: xinetd + php = fun
service test
{
        socket_type     = stream        
        protocol	= tcp
	wait            = no
        user            = root
	server		= /usr/bin/php5
	server_args	= /root/test.php
	disable		= no
}

Anschliessend die /etc/services editieren und die folgende Zeile einfuegen:

test		44444/tcp			# test

und nun noch diese PHP-Datei unter /root/test.php ablegen:

<?php
echo "+++ xinetd + php = fun +++
 
";
 
## read parameter
$handle = fopen('php://stdin','r');
$input = fgets($handle);
fclose($handle);
 
## split get parameter 
$out1=str_replace("GET /", "", $input);
$out2=str_replace(" HTTP/1.1", "", $out1);
$parameter=explode("/", $out2);
 
## check if we shall do sth. and if we know it
if (trim($parameter[0]) == "doStuff") {
 
  if (empty($parameter[1])) {
    echo "no job start requested...
    ";
  }
 
  elseif (! trim(empty($parameter[1])) AND trim($parameter[1]) == "psaux") {
    $out = shell_exec('ps aux');
    echo "$out";
  }
 
}
else {
  echo "no job start requested...
";
}
?>

Ich denke die PHP-Datei erklaert sich von selber und kann beliebig erweitert werden. Ein Aufruf von http://example.net:44444/doStuff/psaux gibt dann die Ausgabe des Befehls „ps aux“ wieder. Nun sind bei dem shell_exec keine Grenzen gesetzt… ;-) Wichtig daran ist, dass wir die GET Parameter via stdin auslesen, da der xinetd das Zeugs ja nicht per GET an das php-Skript weiterleitet. Aber was solls… Der Kreativitaet sind da keine Grenzen gesetzt.

Ich wuerde natuerlich noch den Zugriff ueber irgendeine iptables Regel beschraenken ala:

iptables -A INPUT -p tcp -m tcp --dport 44444 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 44444 -j REJECT

Und ueber Security von wegen das Skript als root laufen zu lassen usw. reden wir hier nicht weiter, es geht ja auch nicht darum das als Superloesung zu verkaufen, sondern einfach als simple kleine Adminspielerei ;-)