Ich untersuche, wie ein bestimmter Exploit funktioniert, und ich entschied mich dafür, einen im Programm 'chkrootkit' zu betrachten, das es jedem Benutzer erlaubt, eine schädliche Datei als root auszuführen. Der Quellcode für diese gefährdete Shell ist wieWie startet dieses Bash-Skript ein Programm?
folgtslapper(){
SLAPPER_FILES="${ROOTDIR}tmp/.bugtraq ${ROOTDIR}tmp/.bugtraq.c"
SLAPPER_FILES="$SLAPPER_FILES ${ROOTDIR}tmp/.unlock ${ROOTDIR}tmp/httpd \
${ROOTDIR}tmp/update ${ROOTDIR}tmp/.cinik ${ROOTDIR}tmp/.b"a
SLAPPER_PORT="0.0:2002 |0.0:4156 |0.0:1978 |0.0:1812 |0.0:2015 "
OPT=-an
STATUS=0
file_port=
if ${netstat} "${OPT}"|${egrep} "^tcp"|${egrep} "${SLAPPER_PORT}">
/dev/null 2>&1
then
STATUS=1
[ "$SYSTEM" = "Linux" ] && file_port=`netstat -p ${OPT} | \
$egrep ^tcp|$egrep "${SLAPPER_PORT}" | ${awk} '{ print $7 }' |
tr -d :`
fi
for i in ${SLAPPER_FILES}; do
if [ -f ${i} ]; then
file_port=$file_port $i
STATUS=1
fi
done
if [ ${STATUS} -eq 1 ] ;then
echo "Warning: Possible Slapper Worm installed ($file_port)"
else
if [ "${QUIET}" != "t" ]; then echo "not infected"; fi
return ${NOT_INFECTED}
fi
}
Ich weiß, dass der Grund, warum die Werke verwerten, weil die Zeile ‚file_port = $ file_port $ i‘, um alle Dateien in $ SLAPPER_FILES angegeben wird ausgeführt, wenn der Benutzer chkrootkit ist laufen (in der Regel root), wenn $ file_port leer ist, weil die Anführungszeichen um die variable Zuordnung fehlt.“
Meine Frage ist, warum führt den Befehl
file_port=$file_port $i
Ergebnis in der Ausführung der Datei? Angenommen, $ i verweist auf den Pfad der Datei (/ tmp/update)
Ich kann sehen, dass file_port möglicherweise in einen langen netstat-Befehl in der vorherigen if-Anweisung geändert wurde, ist das etwas damit zu tun?
Ich habe versucht, meinen Kopf um diese den ganzen Tag ohne Erfolg zu bekommen, an dieser Stelle so dass jede Hilfe sehr geschätzt wird :)
Richtig, das macht jetzt mehr Sinn, haben Sie irgendeine Idee, was file_port eigentlich ist? In Ihrem Beispiel ist es offensichtlich, dass Sie den Editor für die Bearbeitung der Crontab einstellen, aber was denken Sie, dass es in diesem Fall ist? Sollte ich einfach annehmen, dass file_port eine Variable ist, nach der der Wurm suchen würde, wenn sie vorhanden wäre? – ASliceOfBread
@ASliceOfBread Wild-assestierte Schätzung: file_port referenziert einen TCP- oder UDP-Port und empfängt oder sendet eine Datei. – Jens
Ja ich erwarte, dass es etwas in dieser Richtung ist, danke für die Hilfe! – ASliceOfBread