
Geschrieben von
zeitsofa
am 09.12.2009 um 17:55 Uhr.
Beiträge: 6 /
#2166
Kontakt:
Mailen
Hi zusammen,
ich habe heute das Webinterface nach langem gefrickel zum laufen bekommen.
Abgesehen von Programiermüll in /home/eggdrops/script/eggdrop.sh und einem falsch aus der DB geholtem FTP-Passwort das erst gefixt werden musste, lief dann immerhin mal alles. Allerdings hab ich dann erfreulich festgestellt (ironie off), das jeder User der angelegt wird für einen neuen eggdrop, gleich mal ne ssh shell mit dazu bekommt. Find ich absolut mieß eine solche Lücke in ein System zu reißen.
Und die die sich nun Fragen warum Lücke? Stellt euch vor der Kernelbug der alle Systeme betraf, wo man mittels Wunderbar_Emporium sofort root-Rrechte hatte wenn man bloß ne Shell hat auf dem System.
Primär gefixt habe ich das jetzt erstmal mittels eines Eintrags in die sshd_config:
DenyUsers egg*
Ich bin aktuell eh dran für ein paar Freunde das eggdrop.sh zu überarbeiten, denn so wie es momentan ist, sorry will keinen angreifen, ist es einfach murks.
Ich stell euch das dann gern zur Verfügung wenn gewünscht.
Mein Anliegen wäre allerdings schon, das sich um diese "Lücke" vorab mal gekümmert wird.
so long das sofa :)
Nachtrag:
wie es aussieht wird in der DB das FTP-Password in der Tabelle "EGG_FTP_PASS" abgelegt und nicht wie in modules/usr/egg.php deklariert als EGG_SC_FTPP.
Zumindest ist bei mir ein Login mit dem in EGG_SC_FTPP "PW" via ftp nicht möglich nur mittels PW das in EGG_FTP_PASS liegt.
Ka warum das so gemacht wurde, vll kann es mir wer erklären.
Und was folgender Code soll muss mir auch mal wer erklären:
STARTM=`ls -l $DIR | grep $3 | wc -l`
if [[ $STARTM -lt 1 ]]
then
cd $DIR && rm -r *.chan && rm -r *.user
echo "Erstelle Benutzerdateien"
`su egg$2 - -c " cd $DIR && ./eggdrop -m $CFGFILE" > /home/eggdrops/script/egg$2`
else
`su egg$2 - -c " cd $DIR && ./eggdrop" > /home/eggdrops/script/egg$2`
fi
zu STARTM=`ls -l $DIR | grep $3 | wc -l`:
warum prüfe ich ob der Name des Edropps in dem Verzeichnis vorkommt?
wenn ich dann ein falsches Argument in if [[ $STARTM -lt 2 ]] setze?
und warum versucht man Dateien zu löschen deren Existenz nie geprüft wurde?
Zu sehen hier:
cd $DIR && rm -r *.chan && rm -r *.user
Wenn ich das richtig verstehe, soll hier geprüft werden ob der eggdrop mittels -m gestartet werden soll oder nicht. Wozu dann bitte diese Abfrage und das löschen von Files die es eh nicht geben dürfte wenn man mittels -m startet?
Meiner Meinung nach müsste das wenn dann zumindest so aussehen:
STARTM=`ls -l $DIR | grep $3.user | wc -l`
if [[ $STARTM -lt 2 ]]
then
echo "Erstelle Benutzerdateien"
`su egg$2 - -c " cd $DIR && ./eggdrop -m $CFGFILE" > /home/eggdrops/script/egg$2`
else
`su egg$2 - -c " cd $DIR && ./eggdrop" > /home/eggdrops/script/egg$2`
fi
Vielleicht kann mir das auch noch wer erklären.