Command Injection

Głównym założeniem ataku Command Injection jest przekazanie do aplikacji komend, które zostaną wykonane z poziomu systemu operacyjnego.

W przypadku opisywanego już ataku SQL Injecion, atak jest zwykle ograniczony do samego silnika bazy danych, jednak tutaj możliwości są o wiele większe. Podatność na tą formę ataku można często znaleźć w aplikacjach, które dane wprowadzone przez użytkownika przekazują do powłoki systemowej, gdzie będą one wykorzystane jako argumenty wykonywanych tam poleceń.

<?php
echo '<pre>';
echo exec("/usr/sbin/traceroute $_GET[ip]");
echo '</pre>';
?>

Przy braku prawidłowej walidacji danych wejściowych możliwe jest odpowiednie zmodyfikowanie zapytania HTTP, które spowoduje uruchomienie niepożądanej aplikacji po stronie serwera.

http://example.com/trace.php?ip=8.8.8.8;/bin/cat /etc/passwd

W rezultacie takiego zapytania HTTP po stronie powłoki systemowej serwera nastąpi wykonanie zestawu poleceń: /usr/sbin/traceroute 8.8.8.8;/bin/cat /etc/passwd  czyli atakujący będzie w stanie  zobaczyć zawartość pliku z hasłami użytkowników. Oczywiście luka ta może zostać wykorzystana na wiele sposobów, najpopularniejszym z nich zainfekowanie maszyny i używanie jej do przeprowadzania ataków typu DDoS.

Należy zauważyć, że świadomość programistów dotycząca tej podatności jest duża, natomiast ogrom wtyczek i rozszerzeń do popularnych systemów CRM/Blog/E-commerce powoduje, że wciąż spotykamy się z atakami tego typu: https://wordpress.org/support/topic/command-injection-vulnerability-in-v19/ 

Aby przeciwdziałać takim niebezpieczeństwom należy zwrócić szczególną uwagę na walidację wprowadzanych danych przez użytkownika oraz rozważyć zastosowanie rozwiązań aktywnej ochrony w szczególności narzędzi typu Web Application Firewall

Brak komentarzy :

Prześlij komentarz