ubuntuusers.de

Per cli Bash Webseitenaufruf imitieren

Status: Gelöst | Ubuntu-Version: Server 17.10 (Artful Aardvark)
Antworten |

Nur-Ein-Blogger

Anmeldungsdatum:
4. April 2011

Beiträge: 146

Hallo,

ich will Rainloop installieren, das klappt. Leider setzt Rainloop schändlicherweise Admin:12345 als standard Passwort. Finde ich unerhört, dass man das nicht abstellt.

Nun, wie dem auch sei. Das Passwort wird aus der application.ini gezogen. Da steht dass dann klartext drinnen...

Die Datei wird aber erst dann generiert, wenn man die Seite aufruft. Also https://meineseite.de/webmail/?admin

Ich habe schon ales mögliche experimentiert. Leider ohne Erfolg

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
COMPLETEDOMAIN="https://${MYDOMAN}/webmail/?admin"
# Maybe request GET is enough
if curl -s --head  --request GET ${COMPLETEDOMAIN} | grep "HTTP/2 200" > /dev/null 2>&1; then
	 #echo "${MYDOMAN} is UP"
	 # make the config for rainloop
	 curl -s ${COMPLETEDOMAIN} > /dev/null 2>&1
else
	check_service "nginx"
fi
wget ${MYDOMAIN}/webmail/?admin
#curl --user admin:12345 ${COMPLETEDOMAIN} -v 
#if [ ! -f /etc/nginx/html/${MYDOMAN}/webmail/data/_data_/_default_/configs/application.ini ]; then 
#curl ${COMPLETEDOMAIN}
#fi
 
if [ ! -f /etc/nginx/html/${MYDOMAN}/webmail/data/_data_/_default_/configs/application.ini ]; then 
echo "Rainloop default login...." >> /root/rainloop.txt
fi
 
 
# Now copy config application.ini :)
cp ${SCRIPT_PATH}/configs/rainloop/application.ini /etc/nginx/html/${MYDOMAN}/webmail/data/_data_/_default_/configs/application.ini
RAINLOOP_ADMIN_PASSWORD=$(password)
RAINLOOP_ADMIN_USER=$(username)
sed -i "s/RAINLOOP_ADMIN_PASSWORD/${RAINLOOP_ADMIN_PASSWORD}/g" /etc/nginx/html/${MYDOMAIN}/webmail/data/_data_/_default_/configs/application.ini
sed -i "s/RAINLOOP_ADMIN_USER/${RAINLOOP_ADMIN_USER}/g" /etc/nginx/html/${MYDOMAIN}/webmail/data/_data_/_default_/configs/application.ini

Leider reicht es nicht nur die application.ini zu kopieren, daher ist der Aufruf zwingend nötig.

Per wget habe ich dann nur eine index file. curl gibt mit das ja in der cli aus. Bringt mir in sofern leider alles nichts :/

hatte auch schon mit curl -d Admin:12345 DOMAIN versucht aus lauter verzweiflung, wohl wissend, dass kein Login möglic ist, weil die application.ini noch gar nicht da ist und somit kein Login.

Hat jemand von euch eine Idee?

LG

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Nur-Ein-Blogger schrieb:

Leider setzt Rainloop schändlicherweise Admin:12345 als standard Passwort. Finde ich unerhört, dass man das nicht abstellt.

Das kannst du selber machen - der PHP-Quelltext ist ja einsehbar und die Lizenz lässt Veränderungen zu. Es sind nur ein paar Stellen (nach admin_login und admin_passwort greppen), die man anpassen muss, um die vorgegebenen Zugangsdaten zu ändern.

Nun, wie dem auch sei. Das Passwort wird aus der application.ini gezogen. Da steht dass dann klartext drinnen...

Jein, die Standard-Zugangsdaten sind hardcodiert, wenn man ein eigenes Passwort setzt, wird das soweit ich das auf die schnelle gesehen habe als MD5-Hash mit Salt in die Konfigurationsdatei geschrieben. Das ist wohl auch der Grund, weshalb es nichts bringt ein Klartext-Passwort in der ini-Datei zu hinterlegen bzw. diese allein aus einer bestehenden Installation zu kopieren - dazu müsste man zumindest die von Rainloop erzeugte SALT.php mit kopieren, da sonst der Hash-Vergleich nicht klappen kann.

Nur-Ein-Blogger

(Themenstarter)

Anmeldungsdatum:
4. April 2011

Beiträge: 146

...klingt nach einer einfacheren Lösung 😀 find /path/to/files -type f -exec sed -i 's/oldstring/new string/g' {} \;

- sollte doch klappen oder ?

Danke wieder mal für deine super Hilfe!

PS: Leider ist mobil eine Codierung schwer möglich

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Nur-Ein-Blogger schrieb:

...klingt nach einer einfacheren Lösung 😀 find /path/to/files -type f -exec sed -i 's/oldstring/new string/g' {} \;

- sollte doch klappen oder ?

Ohne Plausibilitätsprüfung ist das IMHO ziemlich gefährlich - da müsste man sich genau Ansehen, ob z.B. die Zeichenfolge '12345' noch an anderer Stelle verwendet wird...

Nur-Ein-Blogger

(Themenstarter)

Anmeldungsdatum:
4. April 2011

Beiträge: 146

Das stimmt wohl. Wenn ich der Ausgabe trauen kann, dann reicht eine File:

  C:\Users\Link\Downloads\rainloop-community-latest\rainloop\v\1.11.3\app\libraries\RainLoop\Actions.php (2 hits)
	Line 1787: 				$aResult['WeakPassword'] = (bool) $oConfig->ValidatePassword('12345');
	Line 4022: 			($oConfig->Save() ? array('Weak' => $oConfig->ValidatePassword('12345')) : false) : false);
  C:\Users\Link\Downloads\rainloop-community-latest\rainloop\v\1.11.3\app\libraries\RainLoop\Config\Application.php (2 hits)
	Line 116: 			(($sPassword === $sConfigPassword && '12345' === $sConfigPassword) || \md5(APP_SALT.$sPassword.APP_SALT) === $sConfigPassword);
	Line 205: 				'admin_password'			=> array('12345'),

Also die Application.php editieren.

1
2

find /etc/nginx/html/${MYDOMAIN}/ -name 'Application.php' -exec sed -i "s/array('12345')/array('${RAINLOOP_ADMIN_PASSWORD}')/" {} \;

Muss es nachher mal testen, unterwegs schwierig aber interessiert mich brennend ob das richtig wäre ^^

Klappt ☺

Antworten |