Я изучаю, как работает конкретный эксплойт, и я решил посмотреть на него в программе chkrootkit, которая позволяет любому пользователю запускать вредоносный файл с правами root. Исходный код для этой уязвимой shellscript выглядит следующим образомКак этот скрипт bash запускает программу?
slapper(){
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
}
Я знаю, что причина, по которой эксплуатирует работает потому, что линия «file_port = $ file_port $ I» выполнит все файлы, указанные в $ SLAPPER_FILES как chkrootkit пользователя работает (обычно корень), если $ file_port пуст, из-за отсутствия в кавычки присваивания значения переменной «.
Мой вопрос почему делает команда
file_port=$file_port $i
результат выполнения файла? Предполагая, что $ i ссылается на путь файла (/ tmp/update)
Я вижу, что file_port может быть изменен на некоторую длинную команду netstat в предыдущем операторе if, это как-то связано с этим?
Я пытаюсь получить мою голову вокруг этого весь день без толку, поэтому на данном этапе любая помощь будет принята с благодарностью :)
Право, что имеет смысл теперь, вы хоть представляете, что такое file_port на самом деле? в вашем примере очевидно, что вы настраиваете редактор для использования при редактировании crontab, но как вы думаете, в этом случае? Должен ли я просто предположить, что file_port - это какая-то переменная, которую червь будет искать, если он присутствует? – ASliceOfBread
@ASliceOfBread Удивительное предположение: file_port ссылается на порт TCP или UDP, принимает или отправляет файл. – Jens
да, я надеюсь, что это что-то такое, спасибо за помощь! – ASliceOfBread