crackhawk
Goto Top

Passwörter in Skripten die mit Dollar-Ausrufezeichen beginnen

Hallo zusammen!

Sorry für den Titel, aber $ und ! sind da leider nicht erlaubt.

Ich habe ein Problem speziell mit meinem Kennwort unter Debian 8, da es mit $! beginnt.

Wenn ich ein Script ausführen möchte, in meinem Fall war dies die Benutzeranlage von Open-Xchange, wird das $! ignoriert:

/opt/open-xchange/sbin/createuser -c 1 -A oxadmin -P admin_password -u testuser -d "Test User" -g Test -s User -p $!Abc123 -e testuser@example.com --imaplogin testuser --imapserver 127.0.0.1 --smtpserver 127.0.0.1  

Wenn ich hier mein Kennwort eingebe, also -p $!Abc123 wird das $! ignoriert, mein Kennwort wäre in diesem Fall also Abc123.
Auch wenn ich es in Anführungszeichen setze funktioniert es nicht.

Das ganze tritt nicht nur bei Open-Xchange auf, sondern bei allen Skripten, welchen ich auf diese Weise ein Kennwort mitgeben muss.

Kann ich irgendwo einstellen, dass $! nicht als Systemvariable gehandhabt wird, sondern als Text? Muss ich evtl. irgendwelche Zeichen davorsetzen?

Vielen Dank und Grüße,

Daniel

Content-Key: 330060

Url: https://administrator.de/contentid/330060

Printed on: April 25, 2024 at 20:04 o'clock

Member: IrunGoldstein
Solution IrunGoldstein Feb 21, 2017 at 12:29:49 (UTC)
Goto Top
Hi Daniel,

wenn du single quotes, statt double quotes nimmst funktioniert es wie du es haben willst.

Bsp:.

 -p '$!Abc123'  

screenshot_20170221-132528


Grüße
Member: LordGurke
Solution LordGurke Feb 21, 2017 updated at 12:31:41 (UTC)
Goto Top
Deshalb muss man *JEDE* Nutzereingabe escapen lassen face-wink
Im jetzigen Script wäre es ja wirklich sehr bedauerlich, wenn ein Nutzer als Kennwort - sagen wir mal - ";halt -f" wählen würde... Oder schlimmeres...

Von wo kommen denn die Eingaben her?
Wenn sie aus einer Weboberfläche kommen, könntest du mit der jeweiligen Scriptsprache vorher das Escaping ausführen lassen. Bei PHP wäre das zum Beispiel mit escapeshellarg() getan.


NACHTRAG:
Auch die Single Quotes sind kein Ersatz für sauberes Escaping - dann wählt ein Nutzer eben
';halt -f  
als Kennwort und schaltet den Server aus.
Member: Lochkartenstanzer
Solution Lochkartenstanzer Feb 21, 2017 at 12:51:45 (UTC)
Goto Top
Moin,

Alternativ escapen:

 echo \$\!Abc123

lks
Member: crackhawk
crackhawk Feb 21, 2017 at 13:44:47 (UTC)
Goto Top
Hallo!

Der Vorschlag, das Kennwort in single quotes statt double quotes zu packen, hat funktioniert! Vielen Dank dafür face-smile

\$\!Abc123 hätte auch funktioniert, die single quotes finde ich aber komfortabler.

Die Eingaben werden ausschließlich von mir lokal ausgeführt, Benutzer wird es - außer mir - nicht geben. Trotzdem vielen Dank für den Hinweis, ich wusste nicht, dass so theoretisch Befehle ausgeführt werden können. Ginge das auch ohne root Rechte?

Vielen Dank für eure schnelle Hilfe.
Member: Lochkartenstanzer
Lochkartenstanzer Feb 21, 2017 updated at 13:51:34 (UTC)
Goto Top
Zitat von @crackhawk:

Ginge das auch ohne root Rechte?

Latürnich! Allerdings funktioniert dann mancher Befehl erstmal nicht wie gewünscht. Allerdings kann man durch privilege-escalation trotzdem root-Rechte erlangen und Unsinn anstellen.

lks