Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Инжекционните атаки са един от най-честите начини, по които хакерите атакуват системи, тъй като им позволява лесно да изпълняват много команди и кодове. Инжектирането на команди на OS е една такава атака с инжектиране, за която трябва да сте наясно. Това използва уязвимост, която администраторите на системи, бази данни и уеб приложения трябва да приемат много сериозно.

И така, какво е атака с инжектиране на команди на OS?

Определение за инжектиране на команди на OS

Инжектирането на OS команди позволява на злонамерен нападател да изпълни всяка команда, която иска, като използва уязвима операционна система, програма, приложение, база данни или добавка. Това се случва, когато приложенията не успеят правилно да валидират и дезинфекцират параметрите, които използват при извикване на функции на обвивката, като система() или exec() за изпълнение на системни команди.

instagram viewer

За да разберете по-добре откриването и използването на инжектирането на команди на OS, е полезно да разгледаме този проблем в три основни категории.

1. Директно инжектиране на команди

Помислете за това от гледна точка на нападателя. Кибератакерът открива, че дадено приложение изпълнява специфична системна команда; те въвеждат злонамерената команда като част от очакваните аргументи. След това приложението изпълнява оригиналната команда, последвана от злонамерената.

Нападателят използва различни подходи, за да открие такава уязвимост. Най-лесният метод за борба с това е да поддържате операционната система актуална през цялото време; можете да направите това в сътрудничество с компетентен ИТ екип. Трябва да избягвате всички приложения и програми, които могат да причинят уязвимости на системата, тъй като атакуващият може директно да вмъкне код и щетите са непредвидими.

2. Индиректно въвеждане на команди

В случай на индиректно въвеждане на команда, нападателят не въвежда директно код или команда в системата. За целта те използват уязвимо приложение или програма в системата. Уязвимостта създава мост между нападателя и операционната система. Възползвайки се от тази комуникация, нападателят има за цел да стартира злонамерени кодове и команди на целта.

Нападателят изпълнява серия от тестове, за да идентифицира тази уязвимост и открива, че софтуерът използва данни от външен източник, като например файл или променлива на средата, за да извика системна команда. След това атакуващият променя съдържанието на външния източник, така че сега той съдържа злонамерена команда. След това това се изпълнява заедно с инструкциите на оригиналното приложение.

Основната разлика между директното и непрякото инжектиране на команди е, че атакуващият използва приложение, за да комуникира с операционната система. Но няма реална разлика между щетите, които двете форми на инжектиране могат да причинят, така че и двете трябва да бъдат разгледани. Ето защо трябва да се уверите, че програмите във вашата мрежа са надеждни и необходими. Не съхранявайте на устройството си приложения, на които нямате доверие.

3. Инжектиране на сляпа команда

Друг тип инжектиране на команди на OS е сляпо инжектиране на команди. Това означава, че приложението не връща никакъв резултат от командата в HTTP отговора. Нападателят използва различни техники като времево забавяне и маршрутизиране на изхода, за да използва тази уязвимост.

Представете си, че търсите уебсайт и стойността "/?search=id" в URL адреса се променя при всяко търсене. Стойността на id тук може да бъде потребителска страница, адрес на снимка на продукт или всяка страница на сайта. Нападателят може да получи различни резултати, като промени стойността на идентификатора. Трудно е да го направите ръчно, но има инструменти като Burp Suite за това. По-късно нападателят открива странност на страница: може да бъде върната стойност на id, която, въпреки че не показва никакви резултати, отговорът на уебсайта беше 200, което показва, че всичко е наред. В такъв случай нападателят може да използва сляпо инжектиране на команда.

Особено полезна е техника като забавяне на времето. Тъй като страницата, която се отваря, ще бъде празна, няма да получите никакъв отговор, но все пак може да успеете да съберете информация за това какво се съхранява в база данни въз основа на времеви закъснения, които зареждат страницата само ако е определен символ настояще. Това отнема твърде много време, за да бъде ръчен процес, но много инструменти могат да автоматизират атаката.

Примерен сценарий за атака

Нека прегледаме всичко по-горе чрез пример. Представете си, че имате приложение за пазаруване, което позволява на потребителя да види дали продуктите са на склад. Нека използваме URL като този по-долу за достъп до цялата тази информация:

example_unsafe_store.com/stockStatus? productID=245&storeID=

Представете си да подадете идентификаторите на продукта и магазина като аргументи на команда на обвивката, като например "stockstat.pl 245 38", тъй като приложението ще трябва да търси стари записи. Ако разработчикът не предприеме действия срещу инжектирането на команди, атакуващият може да изпрати вход за изпълнение на желаната команда:

& ехо this_a_harmful_command &

Ако този запис влезе в параметъра productID, командата, изпълнена от приложението, ще бъде:

stockstat.pl & ехо this_a_harmful_command & 38

Командата echo е полезен метод за откриване на командни инжекции, както и за гарантиране, че даденият низ се появява в изхода. Знакът "&" е a команден разделител на обвивката, така че това, което се изпълнява, са три отделни команди, една след друга. В резултат на това изходът, върнат на потребителя, ще бъде:

Грешка -productID не е намерен
тази_вредна_команда
38: команда не е намерено

Тук файлът "stockstat.pl" изпълни командата без аргументите, които очакваше, и следователно върна съобщение за грешка. След това командата ехо, инжектирана от нападателя, се задейства и нападателят видя израза, който въведе на екрана. Първоначалният аргумент, "38", се изпълнява като команда, причиняваща грешка.

Как да се предпазите от инжектиране на команди на OS

Въпреки че инжектирането на команда е мощен и вреден вектор за атака, има някои трикове за избягването му. Обосновката зад атаките с инжектиране на команди на ОС е да се изпълнят определени команди на операционната система с помощта на приложение. Трябва да спреш това да се случва. Има някои проблеми, които трябва да се вземат предвид:

  1. Трябва да попречите на всеки с достъп до приложението да може да изпълнява код.
  2. Трябва да попречите на всеки с достъп до приложението да прави заявки към сървъра със синтактични изрази.
  3. Трябва да шифровате фразите, които всеки с достъп прави заявки.

Нека преминем през всеки елемент един по един. Добро решение на първия проблем е да използвайте метода на белия списък за да попречи на някой, достигащ до приложния слой, да изпълнява определени кодове или заявки. Всеки, когото не идентифицирате, няма да може да изпълнява код.

Решението на второто е да не приемате някои текстови изрази, използвани в командите. Потребителят може да въвежда само числови стойности. Приложете това заедно с метода на белия списък и ще имате много по-сигурна система.

Третият елемент е за криптирането на синтактични параметри като въведен знак и интервали. В резултат на това методът на белия списък, синтактичната проверка на входовете и криптирането на входовете трябва да ви предпазят от инжектиране на команди на OS.

Инжекционните атаки се развиват всеки ден

Има много методи за инжектиране с различни техники за атака, като OS команда, SQL, SSI и XPath. Не е лесно да се опитате да предотвратите всеки от тях. Имайте предвид, че всички тези атаки се развиват всеки ден и се възползват от малки уязвимости, които разработчиците са пренебрегнали. Ето защо е жизненоважно винаги да сте в крак с новостите и да следите отблизо текущите развития в света на киберсигурността.