Часть 5
OS Command Injection
Атаки направлены на выполнение команд операционной системы на Web-сервере путем манипуляции входными данными. Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность выполнить команды ОС. Они будут выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Web-сервер и т.д).
<?php
print("Please specify the name of the file to delete");
print("<p>");
$file=$_GET['filename'];
system("rm $file");
?>
http://127.0.0.1/delete.php?filename=bob.txt;cat%20/etc/passwd
Please specify the name of the file to delete
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
...
Коллекция из нескольких типов списков, используемых в процессе оценки безопасности, собранные в одном месте. Типы списков включают в себя имена пользователей, пароли, URL, чувствительные шаблоны данных, Fuzzing полезные нагрузки, веб-оболочки, и многое другое.
https://github.com/danielmiessler/SecLists
Java
Runtime.exec()
C/C++
system
exec
ShellExecute
Python
exec
eval
os.system
os.popen
subprocess.popen
subprocess.call
PHP
system
shell_exec
exec
proc_open
eval
Санитизация. Данные должны быть четко фильтрованы. Использовать данные по принципу "белого листа", которые содержат только допустимые значения.
Эти символы стоит исключить: | ; & $ > < ' \ ! >> #
Эти символы стоит фильтровать или экранировать:
windows, ( ) < > & * ‘ | = ? ; [ ] ^ ~ ! . ” % @ / \ : + , `
Linux, { } ( ) < > & * ‘ | = ? ; [ ] $ – # ~ ! . ” % / \ : + , `
WAF может быть реализован как облачный сервис, агент на веб-сервере или специализированное железное или виртуальное устройство. Развитие рынка WAF пока складывается так, что облачный сервис востребован в среднем и малом бизнесе, а для крупного бизнеса обычно приобретается отдельное устройство. WAF как модуль веб-сервера так и остался, по сути, в зачаточном состоянии и больше подходит для энтузиастов, чем для бизнес-задач.
To be continued ...